关于.gitignore
当执行完pod install 之后,除了Podfile外,CocoaPods还会生成一个名为Podfile.lock的文件,不应该吧这个文件加入到.gitignore(git中可以忽略的文件)中。因为Podfile.lock会锁定当前各依赖库的版本,之后即使多次执行 pod install 也不会更改版本,只有执行pod update 才会改变Podfile.lock。在多人协作的时候,这样可以防止第三方库升级造成大家各自的第三方库版本不一致。
为自己的项目创建podspec文件
我们可以为自己的开源项目创建podspec文件(该文件为Pods依赖库的描述文件,每个Pods依赖库必须有且仅有那么一个描述文件。文件名称要和我们想创建的依赖名称保持一致,如my依赖库对应的文件名为my.podspec),首先通过如下命令初始化一个podspec文件:
pod spec create your_pod_spec_name
该命令执行之后,Cocoapods会生成一个名为your_pod_spec_name的文件,然后我们修改其中的相关内容即可。
具体可以参考:《如何编写一个CocoaPods的spec文件》和《CocoaPods入门》
使用私有的pods
我们可以直接指定某一个依赖的podspec,这样就可以使用企业内部的私有库,该方案有利于企业内部的公共项目支持CocoaPods。如:
pod 'MyCommon', :pod spec => 'https://yourCompany/MyCommon.podspec'
不更新podspec
CocoaPods在执行 pod install 和 pod update 时,会默认先更新一次pod spec索引。使用–no-repo-update参数可以禁止其做索引更新操作,如:
pod install --no-repo-update
pod update --no-repo-update
原理
CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作就从主项目移到了Pods项目中。技术细节:
- Pods项目最终会编译成为一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。
- 对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
- CocoaPods通过一个名为Pods.xcconfig的文件在编译时设置所有的依赖和参数。