1. 开发私有库
创建一个 Aplication Project;
创建一个文件命名“Podfile”;
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/wzi90921/wzi-specs.git'
platform :ios, '8.0'
target "PodDemo" do
#忽略类库中的警告
inhibit_all_warnings!
pod 'wzi-baseLib', :path => '../wzi-baseLib'
end
终端命令进入“Podfile”的目录下,执行 pod update
红框标识的就是我们私有库项目:wzi-baseLib,现在我们可以在这个工程上进行开发了。
我们在私有库项目中添加了代码后,就是出现Support File 文件组,这个是自动生成的;
说明:
修改“Prefix.h”文件,需要执行 pod update 才会生效;
修改“wzi-baseLib-prefix.pch”会立即生效,但是要把新添加的内容复制到“Prefix.h”,否则执行 pod update 后,新添加的内容会没有了
添加新代码文件,新资源文件,都需要执行 pod update
2.验证,提交到私有库仓库
进入“wzi-baseLib”目录
验证私有库
出现 “wzi-baseLib.podspec passed validation.”表示验证通过了
pod spec lint wzi-baseLib.podspec --sources='https://github.com/CocoaPods/Specs' --use-libraries --allow-warnings --verbose
推送私有库到私有仓库
推送成功后,在https://github.com/wzi90921/wzi-specs可以查到我们推送的类库
pod repo push wzi-specs wzi-baseLib.podspec --sources='https://github.com/CocoaPods/Specs' --use-libraries --verbose --allow-warnings
进入“wzi-moduleA”目录,验证wzi-moduleA
因为wzi-moduleA引用了‘wzi-baseLib’,所以--sources要包含我们的仓库地址,如果还有其他仓库地址,一次加上;
//验证
pod spec lint wzi-moduleA.podspec --sources='https://github.com/wzi90921/wzi-specs.git,https://github.com/CocoaPods/Specs' --use-libraries --allow-warnings --verbose
//推送
pod repo push wzi-specs wzi-moduleA.podspec --sources='https://github.com/wzi90921/wzi-specs.git,https://github.com/CocoaPods/Specs' --use-libraries --allow-warnings --verbose
我们的仓库都出现了我们的私有库了。
说明:如果在验证私出现错误,--verbose是输出日志,搜索“- Error”或者”BUILD FAILED“,可以快速找到失败的地方。
3.项目中使用
在项目中添加私有仓库,还有引入私有库,执行pod update就可以使用了
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/wzi90921/wzi-specs.git'
platform :ios, '8.0'
target "PodDemo" do
inhibit_all_warnings!
pod 'wzi-baseLib'
pod 'wzi-moduleA'
end
现在我们的私有库就在Pods下了,Development Pods 就没有了。
所有的代码都放在了GitHub上面,https://github.com/wzi90921
有需要的童鞋可以下载运行下。
4.最后
之前一直对创建自己的私有库有很多疑问,比如
1.是否分开两个工程开发,私有库每一次修改、调试都要再主程序执行pod update更新呢?
2.私有库中的资源文件怎么加载,能不能像放在主程序的资源一样的用法?
当自己动手实践的时候,很多步骤都会遇到不同的问题,不断的解决遇到的问题,你对这个东西也就有了新的一些认识了。
创建私有库,可以给自己的项目代码拆分成一个合理的架构,不会出现最基础的层出现业务逻辑相关的代码,为了解决具体的业务场景,会更多使用合适的设计模式。再通过私有库扩展出去,我们就可以实现模块组件化。以前整个工程编译的时间太长了,现在拆分了之后,编译时只是编译主程序的代码,大大的缩短了编译时间。