概述
一般来说,我们如果要在工程里面添加其他工程的代码,都是copy一份过来。手动copy比较麻烦,且容易出错,如果是.a库,还需配置路径等。遇到多个工程都需要的时候,更加浪费劳动力。下面介绍如何用 cocoapods 来管理代码,使用方法跟第三方pod的类似。
实践
- 1、这里我们新建一个工程 YTToolPortal ,如下图。当然你也可以使用你已经存在的工程。
- 2、新建类,比如我建立了
UIDevice+YTInfo
和 头文件YTToolHeader
。添加 给类添加方法。这样我们暴露给外界的接口。
- 3、在工程根目录下,新建
podspec
文件, 名为:YTToolPortal.podspec
。
可以通过命令 pod spec create YTTool
,这样生成的spec文件各个条目都有,比较繁多,可以用文本编辑,选出自己所需要的填写。最终精简如下。
1 |
|
s.version 是pod版本号。
s.source 是工程地址。可以是本地路径,svn,zip包,或者是 git上的代码。只是写法不一样。具体如下:
1 | // 本地文件 |
s.source_files 是暴露的源码。
s.requires_arc 表示arc工程。
s.dependency 表示所依赖的库。 如 s.dependency "JSONKit", "~> 1.4"
。 并指定了版本号
s.preserve_paths 表示需要保留的文件路径。
s.vendored_libraries 表示对外提供的.a。在打成.a库时有用。
s.prefix_header_contents 给外界提供的头文件
然后输入命令 pod lib lint
进行验证,验证通过后进行下一步。(如果报错,可以查看)
使用
在你的目标工程的 podfile 添加本地pod路径,如图,再执行 pod install 即可使用
报错信息
如果 pod lib lint xxxxx 报错
1 | -> YTToolPortal (0.0.1) |
如图
由于我们现在还没有正式生成 release 版本, github 上并没有任何 tag,所以我们刚才填写 .podspec 文件填写 git 地址的时候没有填写指定 tag (上面文件的注释中有提到),解决方法我们可以先执行忽略警告的命令:
1 | pod lib lint --allow-warnings |
如果成功会出现如下输出:
1 | -> YTToolPortal (0.0.1) |
如图
当调试完成了之后,我们就已经可以在其他工程 引用 本地pod了, 比如
pod 'YTToolPortal', :path => '../YTToolPortal'
。
提交
创建私有的索引库 Spec Repo:
1 | pod repo add YTToolPortal https://github.com/476139183/YTToolPortal |
提交
1 | pod repo add YTToolPortal https://github.com/476139183/YTToolPortal |
如果出错,如下
我们可以使用忽略警告
1 | pod repo push YTToolPortal YTToolPortal.podspec --allow-warnings |