一、查看下cocoapods本地目录
1:首先查看下cocoapods本地目录: 使用finder,前往文件夹,`~/.cocoapods/repos/`目前我的目录里面有两个本地库:
- HBGSpecs2是我之前本地创建的,下面的文章中我会再重新来一遍;
- trunk是cocoapods自带的;
2:也可以用终端命令查看
pod repo list
查看 有多少repopod repo remove
xxx 删除指定的repo
3:在目录/Users/用户名/Library/Caches/CocoaPods/Pods/External/
清除cocoapods缓存
pod cache clean xxx
清除xxx库
二、创建远程私有索引库Specs
1:登录github, 创建私有索引库
然后直接点击Create repository创建
2. 将远程索引库关联到本地cocopods的repos文件夹下
cd ~/.cocoapods/repos
pod repo add HBGSpecs https://github.com/github用户名/HBGSpecs.git
2:操作完之后,此时前往文件夹,~/.cocoapods/repos/
,发现已经多了个文件夹
3. 创建组件化基础库管理文件夹
3:cd到指定的目录,这个ComponentPrivatePods
是自己创建的一个文件目录, 里面放置各个组件化基础库,本人选择文稿中目录下创建
cd /Users/用户名/Documents/ComponentPrivatePods
pod lib create AAKit
创建完之后会Xcode会自动打开
4:创建对应组件类文件,并拖入组件库
5:cd 到Example目录,Podfile文件, 可以看到本地引用路径pod 'AAKit', :path => '../'
打开Example工程,pod下面没有文件
在终端pod install
之后pod文件夹下面有文件了
然后引入头文件,调用成功
三、 github创建对应的远程组件库AAKit
1:创建组件库
2:配置本地AAKit组件库的podspec文件
3:将本地组件库ZYKit提交到远程github的AAKit中
4:这个地方说明下,第一次push到github,输入密码会报以下错误
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see github.blog/2020-12-15-… for more information.
解决该错误可先参考文章配置token,终端验证的时候密码输入token值就可以了, github 配置使用 personal access token 认证
5:
- git add .
- git commit -m "AAKit第一次提交" 提交之前由于,github的默认主分支由master更名为main,但是我们本地创建的工程git主干默认还是master,此处我们本地先把名字更改下
git branch -a
git checkout -b main
创建本地分支main,并切换到main分支git branch -d master
删除本地分支master,此时本地只有一个分支main了git remote add origin https://github.com/github用户名/AAKit.git
关联远程库
因为远程库里面有README文件
git pull --rebase origin main
报错了,看下本地文件,冲突了
因为我们在github上面创建了README文件,删除本地文件或者解决下文件里面的冲突
git add .
git commit -m "解决冲突"
git rebase --continue
git push origin main
推送到远程git tag '0.1.0'
(注:这里的版本号必须和 AAKit.podspec 里写的版本号一致)git push --tags
四、验证AAKit.podspec索引文件
1:在当前目录通过 pod spec lint --verbose --allow-warnings --use-libraries
命令验证 podspec 索引文件
2:提交索引文件到远程索引库
验证通过之后, pod repo push 本地索引库 索引文件名 --verbose --allow-warnings --use-libraries 提交索引文件到远程索引库,此处可以用手机热点,用公司网络传了好几次都失败了,如果HBGSpecs远程库是空的话,没有README文件,HBGSpecs pull的时候出问题,所以一开始最好还是加上README文件
pod repo push HBGSpecs AAKit.podspec --verbose --allow-warnings --use-libraries
第一次手机连接热点执行该命令可能会报下面错误
报错:HTTP/2 stream 1 was not closed cleanly before end of the underlying stream**
解决方法:git config --global http.version HTTP/1.1 再执行
pod repo push HBGSpecs AAKit.podspec --verbose --allow-warnings --use-libraries
第二次可能有如下错误
解决方法:再执行
pod repo push HBGSpecs AAKit.podspec --verbose --allow-warnings --use-libraries
更新组件库版本的时候可能还会报如下错误
解决办法1:
cd ~/.cocoapods/repos/HBGSpecs,git clean -f
解决办法2: 移除~/.cocoapods/repos/目录下的Myspec,执行添加命令,再重新执行提交
pod repo add HBGSpecs https://github.com/xxx/HBGSpecs.git
我目前验证过的是第一种解决方法
成功了
此时前往文件夹,~/.cocoapods/repos/
,发现HBGSpecs文件夹里面已经有东西了
五、到此我们的上传私有组件库已经完成了,下面我们在桌面新建一个项目来验证下
1:cd到文件夹下面
2:- pod init
创建Podfile,然后用vscode编辑文件
3:保存文件之后
pod install
4:用xcode打开工程
5:导入头文件使用
六、更新组件库
1:增加组件库类文件到Classes目录,然后cd到/Users/xxx/Documents/ComponentPrivatePods/AAKit/Example
2:pod install
打开工程
3:测试调用成功
4:cd ../
回到上级目录,找到AAKit.podspec,打开编辑
5:提交到远程仓库
git add .
git commit -m "AAKit增加组件第二次提交"
git push origin main
git tag '0.1.1'
(注:这里的版本号必须和 AAKit.podspec 里写的版本号一致)git push --tags
6:重复第四大步骤
- 验证AAKit.podspec索引文件
- 执行完
pod repo add HBGSpecs https://github.com/xxx/HBGSpecs.git
成功后此时前往文件夹,~/.cocoapods/repos/
,发现HBGSpecs文件夹里面已经有东西了
7:打开之前那个测试工程
- 删除Podfile.lock文件
cd /Users/xxx/Desktop/TestPrivateKit
pod install
再重新打开工程
导入头文件,调用成功