开始之前先明确
两个文件名:1.BaseLibiOS(私有库项目名称)
2.BaseLibSpec(私有库索引名称)
两个gitLab的地址,1.(https://git.xxxx.com/BaseLibiOS.git)私有库git仓库地址
2.(https://git.xxxx.com/BaseLibSpec.git)私有库索引库git地址
1.首先创建私有库索引库
1> 在gitlab上创建一个新的库,这个库用来保存私有库的podspec文件,所以我们一般起名字最好是 xxxSpec用以区分这个库的作用。例如:BaseLibSpec
2> 创建的BaseLibSpec索引库必须有master分支,可以添加一个readme文件
3> 创建本地所有库,然后把刚才创建的远程所有库关联。
操作命令:pod repo add <本地索引库名称> <远程索引库gitlab地址>
例如:pod repo add BaseLibSpec https://git.xxxx.com/BaseLibSpec.git
2.创建本地私有库
1> 创建本地私有库,创建目录随意放,例如桌面下的iOSLib文件夹下,cd到iOSLib目录下,然后再创建
cd <你要创建的文件夹目录下>
pod lib create 私有库项目名称
例如:pod lib create BaseLibiOS
2> 执行完上面的命令之后,会显示这些文件让你进行配置
1. 什么平台?
1. What platform do you want to use? [iOS / macOS]
> iOS
2. 什么语言?
2. What language do you want to use? [Swift / Objc]
> Swift
3. 是否集成Demo为自己的模块库?
3. Would you like to include a demo application with your library?? [Yes / No]
> Yes
4. 是否集成测试框架?
4. Which testing frameworks will you use? [Specta / Kiwi / None]
> None
5. 是否基于View的做测试?
5. Would you like to do view based testing? [Yes / No]
> Yes
6. 工程类前缀?
6. What is your class prefix?
> VZ
4> 将Classes文件夹下面的ReplaceMe.m文件删除掉,替换成你要上传私有库的代码
5> 然后更新一下这个工程的pod库
1 cd到Example文件下
2.执行 pod install
6> 修改podspec文件
例如:BaseLibiOS项目下的BaseLibiOS.podspec 文件
ps:这里要注意两点!!
<1> s.homepage需要设置刚创建的私有代码仓库的地址, 不是私有索引库的地址!!!
<2> s.source 需要设置的是私有代码仓库的源地址(选择使用HTTPS地址)!!!
3.将私有库push到远程仓库
1> 编译通过后,提交组件到私有库git仓库地址 并打tag
git status -- 查看当前git存了什么文件
git add . -- 将所有文件缓存到待提交文件区域
git commit -m "上传组件" -- 提交文件,写上备注
git remote add origin <私有库git仓库地址(https://git.xxxx.com/BaseLibiOS.git)>
git push -u origin master -- 将代码推送到远程私有库git仓库的master分支
git tag <版本号(例如git tag 0.1.0)> --这里的版本号必须和podspec里面写的版本号一致)
git push -- tags
4.本地校验
cd <本地私有库目录下(例如:cd BaseLibiOS)>
pod lib lint --allow-warnings
若组件依赖第三方库,需要将第三方库索引地址写上
pod lib lint --sources="cocoapods库地址,私有库远程地址" --allow-warnings
若组件依赖的第三方库又依赖了其他的库,需要命令如下
pod lib lint --sources="cocoapods库地址,私有库远程地址" --use-libraries --allow-warnings
5.远程校验
1> 进行远程校验,其实和本地校验一样,只需要把lib字段改成spec
pod spec lint --sources="cocoapods库地址,私有库远程地址" --use-libraries --allow-warnings
例如:pod spec lint --sources="https://git.XXXX/BaseLibSpec.git,git@gitXXXX/BaseLibiOS.git" --use-libraries --allow-warnings
6.提交索引文件到远程索引库
1> 所有验证通过之后,要将spec文件推送到最开始创建的私有库索引库当中
cd 到私有库项目目录(例如:cd BaseLibiOS)
pod repo push <本地索引库名称> <索引文件名> --verbose --allow-warnings
例如:pod repo push BaseLibSpec BaseLibiOS.podspec --verbose --allow-warnings
<本地索引库名称>在/Users/XXX/.cocoapods/repos下的私有库索引项目名称
<索引文件名>就是以podspec结尾的,注意不要弄错
2> 推送去之后,在本地索引库中如下图
3> 验证私有库
pod repo update -- 先更新一下pod库,不然找不到你刚上传的私有库
pod search 私有库
7. 其他项目使用私有库
source 'https://git.XXXX/BaseLibSpec.git'
pod 'BaseLibiOS'
问题解决:
项目中导入私有库之后,报错如下:
Cannot find 'XXX' in scope
解决:
Swift的私有库文件,类、属性和方法前面用open修饰,init方法前面用public修饰,然后重新上传私有库,打新tag标签,BaseLibiOS.podspec文件的tag也要修改,请参考目录2-6和3、4、5、6,并把tag推送到远端
参考:iOS组件化搭建私有库(cocoapods,gitlab ) - 知乎
参考:iOS私有库创建和版本更新 - 简书