CocoaPods 【如何将自己写的库添加 CocoaPods 支持】

来源:互联网 发布:java的string不可变 编辑:程序博客网 时间:2024/05/17 03:20

2015 年之前将自己的库添加 CocoaPods 支持的过程十分复杂,而现在方便了许多。以下列出将自己的类库添加 CocoaPods 支持的具体步骤和在此过程中遇到的一些坑。


一、首先你得有自己感觉写的还不错的一个类库。

造车先得有轮子,说的就是这个道理。

你需要将你的类库上传到 GitHub,这个过程不再赘述。


二、注册 trunk。

什么是 trunk?

trunk 可以这样来理解,它是一个允许与 CocoaPods 仓库对接的一个端口,注册成功后就可以向 CocoaPods 进行代码的提交。trunk 的注册信息包括你的 GitHub 用户名、GitHub 账号、你用来提交代码的电脑 IP 地址以及你的所有类库展示。所以说你换了电脑之后就得重新用你的 GitHub 账号注册一次 trunk,这样才允许你的当前电脑去提交类库或者是更新你之前的提交过的类库。


注册 trunk 前一定要检查自己的 CocoaPods 版本,一般是要升级到最新的 CocoaPods 版本:(下面的代码既可以用来安装 CocoaPods 也可以用来升级 CocoaPods)

$ sudo gem install cocoapods


注册 trunk:(复制下面的命令行,替换掉两处地方,前面替换成你 GitHub 的注册邮箱,另外一个替换成你 GitHub 的用户名。而 --verbose 参数是为了便于输出注册过程中的调试信息。)

$ pod trunk register xxxxx@163.com 'CoderZYWang' --verbose

完成上面的命令行之后,你的邮箱会收到一封带有验证链接的邮件,全英文。没有的话就去垃圾箱找找,可能被你屏蔽掉了。然后放心的点击链接完成 trunk 的注册流程。


验证注册 trunk 是否成功:

$ pod trunk me

如果成功注册,你将看到如下打印:

你用过几台 Mac 进行版本的提交,那么下面就会显示多少 Mac 的 IP 地址。


三、配置 .podspec 描述文件

什么是podspec描述文件呢?

简单地讲就是让 CocoaPods 搜索引擎知道你的代码的作者、版本号、源代码地址、依赖库等信息的文件。任何支持 CocoaPods 的开源代码都必须有 .podspec 文件。CocoaPods 在 GitHub 中用一个 repo 来管理所有支持 CocoaPods 的开源代码:CocoaPods/Specs


配置第一步,首先 cd 到你 clone 的本地仓库根目录下。

创建 .podspec 描述文件:

创建方式有两种,第一种复制别人现成的,然后修改一些相关参数。第二种就是自己创建自己写。(自己写费老鼻子劲了,估计看到我这篇文章的读者也不会写,所以我建议大家还是找一份写好的然后修改修改。我把我的 .podspec 文件贴出来供大家参考)

Pod::Spec.new do |s|  s.name         = "WZYCalendar"  s.version      = "1.0.4"  s.summary      = "WZYCalendar is a lightweight calendar controls for iOS."  s.description  = <<-DESCWZYCalendar is a lightweight calendar control that can be quickly integrated into the project for use. Less memory consumption, strong customization.                   DESC  s.homepage     = "https://github.com/CoderZYWang/WZYCalendar"  s.license      = "MIT"  s.author             = { "CoderZYWang" => "294250051@qq.com" }  s.social_media_url   = "http://blog.csdn.net/felicity294250051"  s.platform     = :ios  s.source       = { :git => "https://github.com/CoderZYWang/WZYCalendar.git", :tag => "1.0.4" }  s.source_files  = "WZYCalendar/*.{h,m}"  s.frameworks = 'UIKit', 'Foundation'  s.requires_arc = trueend

再提交一份注释供大家参考:

name: 导入 pod 后的目录名version: 当前版本号summary: 简单描述description: 详细描述homepage: 你的项目链接地址author: 作者 GitHub 用户名 ==> GitHub 邮箱deployment_target: 配置的 targetsocial_media_url: 个人社交网站prefix_header_file: 预编译头文件路径,将该文件的内容插入到 Pod 的 pch 文件内source: 来源的具体路径,是 http 链接还是本地路径requires_arc: 是否需要 arcsource_files: 指定该目录下包含哪些文件dependency: 指定依赖,如果依赖的库不存在或者依赖库的版本不符合要求将会报错platform: 运行平台libraries: 指定导入的库,比如 sqlite3frameworks: 指定导入的 frameworkweak_frameworks: 弱链接,比如说一个项目同时兼容iOS6和iOS7,但某一个 framework 只在 iOS7 上有,这时候如果用强链接,那么在 iOS7 上运行就会 crash,使用 weak_frameworks 可以避免这种情况。


原版的 .podspec 文件中有非常多的选项进行填写,但是我们并不是每一处都要添加,如果想了解原版,可以通过下面这种形式进行创建:

$ pod spec create WZYCalendar

当然你可以先用上面的命令行进行创建,然后再将我提供的格式全选粘贴过去再修改。


配置第二步,验证 .podspec 文件:

$ pod lib lint

这一步骤可能会出现错误或者是警告,认真排查错误,一般来说都是由于不正确的编译生成中文标点引起的。大家可以去下载 Sublime Text 进行编写,当然用 Xcode 打开也是可以的。如果说错误信息提示不足,可以添加 --verbose 以获取更多信息。如下:

$ pod lib lint --verbose

如果是出现的是警告,可以添加 --allow-warnings 进行屏蔽。如下:(Xcode 是允许警告存在的)

$ pod lib lint --allow-warnings


验证通过后,屏幕上会显示:

-> WZYCalendar (1.0.0)WZYCalendar passed validation.

表示验证通过。不通过就继续修改。


配置第三步,打 tag 上传到 podspec

.podspec 文件需要指定 tag:

$ git tag '1.0.0'$ git push --tags


提交自己的 .podspec 文件:

$ pod trunk push WZYCalendar.podspec

这个过程是比较耗时的。成功之后就可以看到非常友好的提示:



四、查看自己的类库

可以使用 pod search 去查看自己的类库。



五、如何更新提交自己的类库

其实原理是一样的,再次修改 .podspec 文件,记得将 version 和 tag 都增加小小的 1,然后再按照上面的步骤进行 验证 .podspec、打 tag 上传即可。


六、如何删除已经提交到 CocoaPods 上面的类库

pod trunk delete WZYCalendar 1.0.2

执行上面代码就可以删除对应版本号的类库了。


七、几个常见的错误

① 在我们执行 git push --tags 时会报以下错误:

benpaobaodeiMac-2:WZYCalendar bpb$ git push --tagsCounting objects: 3, done.Delta compression using up to 4 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 390 bytes | 0 bytes/s, done.Total 3 (delta 1), reused 0 (delta 0)remote: Resolving deltas: 100% (1/1), done.To git@github.com:CoderZYWang/WZYCalendar.git * [new tag]         1.0.3 -> 1.0.3 ! [rejected]        1.0.1 -> 1.0.1 (already exists) ! [rejected]        1.0.2 -> 1.0.2 (already exists)error: failed to push some refs to 'git@github.com:CoderZYWang/WZYCalendar.git'hint: Updates were rejected because the tag already exists in the remote.

意为原来的 remote 上已经有了相同的 tag,不能重复提交。我们可以将上面带有叹号的部分进行删除。

git tag -d 1.0.1git tag -d 1.0.2

删除了带有叹号的 tag,即可成功提交。


② 在 push 本地仓库到远端的时候(执行 git push origin master 时)可能会发生这样的错误

error: failed to push some refs to 'git@github.com:

出现这个错误的原因是你有在远程库中的文件没有下载下来,一般来说是 README.md 文件没有拉取来下。所以你需要先运行 git pull origin master 进行远端和本地的一次拉取合并,然后再运行 git push origin master 进行新一次的提交。
1 0
原创粉丝点击