配置前提:mac电脑/有安装cocopods/有GitLab账号并且最好有在GitLab上面配置ssh
咱们很多时候私有库都是和组件化一起配合使用(一个库可能就是一整个组件),组件化的内容可以看看这里。
我们主要讲讲私有仓库的建立,以及内部私有依赖代码库的使用。
首先要明白两个概念:
1.code repository是代码库。
2.spec repository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓库。这个仓库只用来存放podspec文件,不存放代码。
第一步:现在GitLab上面创建一个私有依赖代码库
1.创建一个私有的project
2.通过这里的教程创建一个名为PayListProject的本地私有依赖代码库
将PayListProject这个文件夹复制出去(随便放个地方)以防出现误导,然后原来地方的PayListProject可以删除了。
好了,言归正传,打开复制出来的PayListProject,里面有个PayListProject.podspec文件将其打开。
3. 验证podspec的有效性,打开终端 cd 到PayListProject的目录中
接着运行pod lib lint
如果有警告,会导致无法通过,需要添加--allow-warnings
如果使用了c函数相关的,需要添加--use-libraries
比如:pod lib lint --allow-warnings
验证通过后,把代码提交到仓库即可
git add -A && git commit -m "add pod files"
git remote add origin https://gitlab.com/xxxxxx/PayListProject.git //连接远程github项目
git tag '0.1.0' //这里的版本号注意要和podspec文件中的版本号统一
git push --tags //将本地tag更新到github项目上去
git push origin master //将本地项目更新到github项目上去
第二步:现在GitLab上面创建一个私有仓库,用来存放私有依赖代码库的配置
步骤和第一步中的第一小步一样,其名字命名为MySpecs,当然也可以是别的名字,这个随便!
这个仓库是用来存放我们自己所有私有库的podspec文件,就如同官方的https://github.com/CocoaPods/Specs是用来存放所有官方的podspec文件一样。
在终端执行命令:
pod repo add MySpecs https://gitlab.com/xxxxx/MySpecs.git
注意:上面的命令的解释如下:
pod repo add REPO_NAME SOURCE_URL
其中的 REPO_NAME 是我们要添加的私有repo的名称(这里我们待会填的是:Specs),后面是仓库的 gitlab 地址。这里做的其实是创建的工作,也就是在~/.cocoapods/repo目录下添加了一个以你的私有repo为名的文件夹,但是并没有添加spec文件。
注:如果没有显示.cocoapods文件夹,可能是你的隐藏文件没打开
打开隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
关闭隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool false
现在为止,我们已经在本地得到我们自己的私有仓库 MySpecs ,这是一个空的仓库。
第三步:关联代码库和配置仓库
pod repo push MySpecs PayListProject.podspec --use-libraries --allow-warnings
完成后MySpecs的文件夹中就会出现 PayListProject文件夹以及其中的一些配置文件:
第四步:组件化中使用
还记得第二张图中的ComponentBasedDemo这个工程么?这个工程可以理解为用来调度或者组装各个组件的。打开这个工程的podfile文件。
其中看开头两行,https://github.com/CocoaPods/Specs这个我们都知道,存放的是cocoapods中的一些podspec。
而https://github.com/xxxxx/MySpecs是我们自己刚才创建的私有仓库,其中有存放着一些私有依赖代码库(ps:我这边只举了一个例子,其实可以放很多个)库和库之间也可以相互依赖,只需要在podspec文件中添加相应的配置。
最后cd到ComponentBasedDemo的podfile的目录下,pod install就可以了!
ps:如果组件中需要添加资源或者使用xib,可以看这里
参考资料:基于GitLab创建私有库 ,iOS组件化 ,创建私有仓库中踩过的坑