Cocoapods是非常好用的一个iOS
依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理。
前言
创建一个开源pod
库,需要注册CocoaPods
终端执行:$ pod trunk register 邮箱地址 '用户名' --verbose
这里我们一般使用github
邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功;
查看自己的注册信息,以后当你有了自己的开源Pod库,也可以用此方式随时查看自己发布过的Pods
;
终端执行 $ pod trunk me
使用Cocoapods创建私有的podspec库包含以下几个步骤:
- 创建并设置一个私有的
Spec Repo
- 创建
Pod
的所需要的项目工程文件,并且有可访问的项目版本控制地址。 - 创建
pod
所对应的podspec
文件 - 本地测试配置好的
podspec
文件是否可用 - 向私有的
Spec Repo
中提交podspec
- 在个人项目中的
Podfile
中增加刚刚制作好的pod
并使用 - 更新维护
podspec
1. 创建私有 Spec Repo
Spec Repo
是所有的Pods
的一个索引,就是一个容器,所有公开的Pods
都在这个里面,他实际是一个Git
仓库 remote端 在GitHub
上,但是当你使用了Cocoapods
后他会被clone
到本地的~/.cocoapods/repos
目录下,可以进入到这个目录看到master
文件夹就是这个官方的Spec Repo
了.
创建一个类似于 master
的私有 Spec Repo
Terminal 执行 $ pod repo add bitauto-specs git@gitlab.**.com:WP/APP/**.git
执行成功后在 ~/.cocoapods/repos
目录下可以看到 bitauto-specs
这个目录.
2. 创建Pod项目工程文件
如果是有现有的组件项目,并且在 Git
的版本管理下,那么这一步就算完成了,可以直接进行下一步了.
使用 pod
创建 Pod
项目, 相关的文档介绍是Using Pod Lib Create
-
先
cd
到要创建项目的目录,然后Terminal 执行 $ pod lib create BitautoTool
之后他会问你几个问题:
1.你想使用哪种语言
2.是否需要一个例子工程;
3.选择一个测试框架;
4.是否基于View测试;
5.类的前缀;
这几个问题的具体介绍可以去看官方文档.
问完这几个问题他会自动执行pod install
命令创建项目并生成依赖。
接下来就是向 Pod
文件夹中添加库文件和资源,并配置 podspec
文件,我把共有组件放入 Pod/Classes
中,然后进入Example
文件夹执行 pod update
命令,再打开项目工程可以看到刚刚添加的组件已经在 Pods
子工程下 Development Pods/BitautoTool
下了.
PS:这里需要注意的是每当你向
Pod
中添加了新的文件或者以后更新了podspec
的版本都需要重新执行一遍pod update
命令
测试无误后需要将该项目添加并推送到远端仓库.
因为 podspec
文件中获取 Git
版本控制的项目需要 tag
号,所以我们需要打上一个 tag
.
然后开始编辑 podspec
文件,没有涉及到的字段可以去官方文档查阅.
编辑完 podspec
文件后验证这个文件是否可用,详情见 CocoaPods创建公有pod库
3. 创建podspec文件
如果从 第2步跳过来 的(否则跳过此步),已经有了现成的项目,那么就需要给这个项目创建一个 podspec
文件,创建它需要执行 Cocoapods
的另外一个命令,官方文档
Terminal 执行 $ pod spec create BitautoTool git@**.com:WP/APP/**.git
执行完之后,就创建了一个 podspec
文件,他其中会包含很多内容,可以按照我之前介绍的进行编辑,没用的删掉。编辑完成之后使用验证命令验证一下,详情见 CocoaPods创建公有pod库
验证无误就可以进入下一步了.
4. 本地测试podspec文件
我们可以创建一个新的项目,在这个项目的 Podfile
文件中直接指定刚才创建编辑好的 podspec
文件,看是否可用。 在 Podfile
中我们可以这样编辑,有两种方式:
platform :ios, '8.0'
pod 'BitautoTool', :path => '/Users/**/Documents/BitautoTool' # 指定路径
pod 'BitautoTool', :podspec => '/Users/**/Documents/BitautoTool/BitautoTool.podspec' # 指定podspec文件
然后执行 pod install
命令安装依赖,打开项目工程,可以看到库文件都被加载到 Pods
子项目中了,不过它们并没有在Pods目录下,而是跟测试项目一样存在于 Development Pods/BitautoTool
中,这是因为我们是在本地测试,而没有把 podspec
文件添加到Spec Repo
中的缘故.
5. 向Spec Repo提交podspec
向私有 Spec Repo
提交 podspec
只需要一个命令
Terminal 执行 $ pod repo push bitauto-specs BitautoTool.podspec #前面是本地 `Repo` 名字,后面是 `podspec` 名字
完成之后这个组件库就添加到我们的私有 Spec Repo
中了,可以进入到 ~/.cocoapods/repos/bitauto-specs
目录下查看。
再去看我们的 Spec Repo
远端仓库,也有了一次提交,这个podspec
也已经被 Push
上去了。
至此,我们的这个组件库就已经制作添加完成了,使用 pod search
命令就可以查到我们自己的库了。
更新库的时候如果提示找不到本地库,执行以下命令:
Terminal 执行 $ git reset --hard
然后再执行
Terminal 执行 $ pod repo push 本地仓库名 **.podspec
删除一个私有 Spec Repo
,
Terminal 执行 $ pod repo remove bitauto-specs
这样这个 Spec Repo
就在本地删除了,我们还可以通过以下命令加回来
Terminal 执行 $ pod repo add bitauto-specs git@**.com:WP/APP/**.git
如果我们要删除私有 Spec Repo
下的某一个 podspec
怎么操作呢,此时无需借助 Cocoapods
,只需要 cd
到~/.cocoapods/repos/bitauto-specs
目录下,删掉库目录
Terminal 执行 $ rm -Rf BitautoTool
然后在将 Git
的变动 push
到远端仓库即可
Terminal 执行 $ git add --all .
git ci -m "remove unuseful pods"
git push origin master
参考资料
使用Cocoapods创建私有podspec