一、前言
在iOS开发中,为了满足企业内部的一些组件化需求,往往需要创建一些公用的代码,这些公用代码往往是不希望被公开的,此时一般可以选择submodule或者CocoaPods库的形式。
如果选用submodule,直接上传到自己的私有远程代码仓库就能达到目的。对于CocoaPods库的使用,则需要创建自己的私有库。
二、创建私有库遇到的问题
私有库的创建这里不再赘述,在互联网上已经有许多博客你可以进行参考,当然你也可以查看官方文档。
1.私有库的dependency找不到
假如你已经创建好私有库A,并想在私有库B中使用私有库A,在库B的.podspec文件中你需要制定依赖:
s.dependency 'pod projectName(A)', '~> version'
校验sepc可用性时,执行以下命令:
pod sepc lint 文件名.podspec
此时由于你当前工程B依赖的工程是私有库,于是会报错:
- ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `XSLKeyChainCache (~> 0.1.0)` depended upon by `XSLOpenUDID`) during validation.
原因:
校验podspec文件时会到远程podspec库查找相关依赖,默认只会到官方specs库校验,此时需要指定远程specs库去校验。
解决:
-
指定pod spec文件校验地址
pod sepc lint 文件名.podspec --sources='http://[privateLibName]/cocoaspecs.git,https://github.com/CocoaPods/Specs.git'
-
引用当前私有库的podFile中指定source为私有库地址
source http://[privateLibName]/cocoaspecs.git' source 'https://github.com/CocoaPods/Specs.git'
2.将本地podspec推送到远程私有spec库时因为警告失败
当你想把本地.podspec文件推送到远程specs仓库时,你需要执行:
Pod repo push 本地spec库名 本地.podsepc文件
如果.podspec文件存在警告时不能成功push。
解决:
Pod repo push 本地spec库名 本地.podsepc文件 --allow-warnings
不过为了严谨,最好把产生的警告解决掉再推送到远程仓库,以免对你的同事造成困扰。
更多相关指令你都可以用–help查看:
pod repo push --help