制作Pod的远程仓库
步骤主要有一下:
- 1、创建.podspec
- 2、编辑.podspec
- 3、将项目打成tag
- 4、验证
- 5、注册Trunk
- 6、发布
创建podspec
创建.podspec
的前提是需要确定需要创建在哪里,这个肯定是直接创建在本地的git仓库咯。所以需要先整个本地仓库,这边是demo就从github
克隆了个远程仓库至本地。
创建.podspec
文件
cd 需要放置的文件夹路径
pod spec create name.podspec
这边的name
是框架的名称。
编辑.podspec
创建完成后可以用终端直接编辑podspec
,当然也可以用文本编辑器来编辑,具体的看自己喜欢。
主要需要编辑的内容如下,其余有需要的也可以编辑,podspec
每一个编辑都有给了个例子以及介绍,这边就简单的复述并说明一下需要注意的问题。
Pod::Spec.new do |s|
s.name = "PodLibRespository"
s.version = "0.0.4"
s.summary = "my test Pod Respository"
s.description = <<-DESC
这是详细的Pod仓库描述。这边内容需要长一些不然会有警告,也可以在验证的时候设置设置忽略警告。
DESC
s.homepage = "https://github.com/DaverZhou/PodLibRepository"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "daverzhou" => "daverzhou@163.com" }
s.platform = :ios, "9.0"
s.source = { :git => "https://github.com/DaverZhou/PodLibRepository.git", :tag => "#{s.version}" }
s.source_files = "PodLibClass", "PodLibClass/**/*.{h,m}"
s.requires_arc = true
简单的只需要这些设置,别的有需要也可以设置,单单以上设置就可以发布成功,因为这边是demo就没有一一去设置了。讲解一下上面的需要填写的内容以及可能会碰到的坑。
-
s.name
:库的名称,pod search
搜索的关键词,这里一定要和.podspec
的名称一样,否则报错。 -
s.version
:版本号,需要与你需要打的tag
的版本号对应,不然会出现找不到之类的问题 -
s.summary
:库的概述或者说简介。 -
s.description
:库的详述,这个说明最好是比summary
不然后续验证的时候会有警告,当然可以直接设置忽略警告。 -
s.homepage
:项目主页地址。 -
s.license
:许可证,选择MIT
类型的证书,这个证书有两种方式获取:可以通过终端创建一个文件然后编辑将证书的内容复制进去(后续会给模板);另一种方式是在创建github
仓库的时候选择MIT
许可证,这个的好处是不需要再另外编辑可以直接用。 -
s.author
:项目的作者 -
s.social_media_url
:社交网址,如果你写Twitter的话,你的podspec发布成功后会@你 -
s.platform
:支持的系统以及系统版本 -
s.source
:项目的地址 -
s.source_files
:需要包含的源文件 -
s.requires_arc
:是否支持ARC -
s.dependency
:依赖库,不能依赖未发布的库,支持多个依赖库
这边就大概介绍这些,另外需要的可以直接看.podspec
里面的说明。下面附上许可证的模板,需要的可以直接复制:
MIT License
Copyright (c) 2019 DaverZhou
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
注意:复制后直接修改下Copyright (c) 2019 DaverZhou
就可以直接用了。
将项目打成tag
完成以上的操作后就可以将项目打成tag并推送到远程仓库了。具体如下命令:
# 提交修改
git add -A && git commit -m "commit somme"
# 设置tag
git tag '0.0.1'
git push --tags
git push
完成上面的操作后就将版本打上了tag,并push到远程的当前分支上。如果对于git
命令操作有疑问的话可以看我另外的一篇关于git命令的整理。
注意这边的tag版本号需要与.podspec
上的版本号一致,否则会报错。
验证
完成了上面的操作可以开始验证下是否有问题,如果有问题按提示的修改:
pod spec lint
或者用以下的命令也行,--verbose
可输入详细的debug的过程:
pod spec lint xxx.podspec --verbose
这边验证的时候如果存在警告会无法通过验证但是可以使用修饰符--allow-warnings
设置忽略警告,通过验证后有一行绿色字体提示xxx.podspec passed validation
。
问题
下面是我在验证的时候碰到的一个问题:
- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a `ios` simulator (valid values: com.apple.coresimulator.simruntime.ios-12-2, com.apple.coresimulator.simruntime.watchos-5-2). Ensure that Xcode -> Window -> Devices has at least one `ios` simulator listed or otherwise add one.
/Library/Ruby/Gems/2.3.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb:106:in `usable_simulators'
对于这个问题,只需要更新下pod就可以了,操作如下:
确认源
需要先确认下源是否为https://gems.ruby-china.com/
gem sources -l
# 如果不是切换下源,移除原本的源
# gem sources --remove https://源url
# 替换新的源
# gem sources -a https://gems.ruby-china.com/
更新
开始更新cocoapods
sudo gem install cocoapods
pod setup
由于我这边的环境问题,直接用上面的命令会提示无权限只好改成一下的命令:
sudo gem install -n /usr/local/bin cocoapods
pod setup
注册Trunk
这边最好确认下pod的版本不可能会失败,在上一步验证的时候应该有处理过了pod的版本,这边就稍微提一下。
注册信息
查询下自己是否已经有注册信息,如果有的话 直接跳过继续下一步没有的话继续往下看
pod trunk me
我的注册信息如下:
Ignoring oj-3.6.5 because its extensions are not built. Try: gem pristine oj --version 3.6.5
Ignoring unf_ext-0.0.7.5 because its extensions are not built. Try: gem pristine unf_ext --version 0.0.7.5
- Name: daverzhou
- Email: y997379691@163.com
- Since: June 10th, 20:06
- Pods:
- PodLibRespository
- Sessions:
- June 10th, 20:06 - October 18th, 02:50. IP: 27.154.225.178
注册
pod trunk register y997379691@163.com "PodLibRespository" --verbose
上面的邮箱以及库名称记得换成自己的,注册成功后cocoapods
会给你上面的邮箱发送一封邮件需要你去验证下,复制下邮件内的URL打开一下就OK了。
发布
完成注册后,开始发布,如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符。
pod trunk push xxx.podspec
完成以上算是发布成功了,具体需要查看终端的输出。完成发布后,可以尝试搜索自己发布的库了,看能否搜索到如果能搜索到就OK了。有可能出现搜索不到,但是自己又是发布成功那可能是因为cocoapods
存在索引缓存,下面附上解决办法。
搜索失败
发布完成后,验证是否可以搜索到,可能出现以下情况
[!] Unable to find a pod with name, author, summary, or description matching `PodLibRepository`
删除search_index.json
索引文件
rm ~/Library/Caches/CocoaPods/search_index.json
重新搜索
pod search 第三方库名
参考资料
制作自己cocoapods库
3分钟让你的框架支持
[iOS]最详细的CocoaPods私有pod创建教程
cocoapods官方文档
网友评论