iOS组件化: Cocoapods创建私有库

941 阅读5分钟

一、查看下cocoapods本地目录

1:首先查看下cocoapods本地目录: 使用finder,前往文件夹,`~/.cocoapods/repos/`

image.png 目前我的目录里面有两个本地库:

  • HBGSpecs2是我之前本地创建的,下面的文章中我会再重新来一遍;
  • trunk是cocoapods自带的;

2:也可以用终端命令查看

  • pod repo list 查看 有多少repo
  • pod repo remove xxx 删除指定的repo

3:在目录/Users/用户名/Library/Caches/CocoaPods/Pods/External/清除cocoapods缓存

  • pod cache clean xxx 清除xxx库

二、创建远程私有索引库Specs

1:登录github, 创建私有索引库

image.png

image.png

然后直接点击Create repository创建

image.png

2. 将远程索引库关联到本地cocopods的repos文件夹下

  • cd ~/.cocoapods/repos
  • pod repo add HBGSpecs https://github.com/github用户名/HBGSpecs.git

2:操作完之后,此时前往文件夹,~/.cocoapods/repos/,发现已经多了个文件夹

image.png

3. 创建组件化基础库管理文件夹

3:cd到指定的目录,这个ComponentPrivatePods是自己创建的一个文件目录, 里面放置各个组件化基础库,本人选择文稿中目录下创建

  • cd /Users/用户名/Documents/ComponentPrivatePods
  • pod lib create AAKit

image.png

创建完之后会Xcode会自动打开

image.png

image.png

image.png 4:创建对应组件类文件,并拖入组件库

image.png

image.png

5:cd 到Example目录,Podfile文件, 可以看到本地引用路径pod 'AAKit', :path => '../' image.png

打开Example工程,pod下面没有文件 image.png

image.png

在终端pod install之后pod文件夹下面有文件了

image.png 然后引入头文件,调用成功

image.png

三、 github创建对应的远程组件库AAKit

1:创建组件库 image.png

image.png 2:配置本地AAKit组件库的podspec文件

image.png

image.png

3:将本地组件库ZYKit提交到远程github的AAKit中

image.png 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
  • image.png
  • 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

image.png

报错了,看下本地文件,冲突了

image.png 因为我们在github上面创建了README文件,删除本地文件或者解决下文件里面的冲突

  • git add .
  • git commit -m "解决冲突"
  • git rebase --continue image.png
  • 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 索引文件

image.png

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

第二次可能有如下错误

image.png

解决方法:再执行

  • pod repo push HBGSpecs AAKit.podspec --verbose --allow-warnings --use-libraries

更新组件库版本的时候可能还会报如下错误

QQ20220728-120035@2x.png

解决办法1:

cd ~/.cocoapods/repos/HBGSpecs,git clean -f

解决办法2: 移除~/.cocoapods/repos/目录下的Myspec,执行添加命令,再重新执行提交

pod repo add HBGSpecs https://github.com/xxx/HBGSpecs.git

我目前验证过的是第一种解决方法

成功了 image.png

此时前往文件夹,~/.cocoapods/repos/,发现HBGSpecs文件夹里面已经有东西了

image.png

image.png

五、到此我们的上传私有组件库已经完成了,下面我们在桌面新建一个项目来验证下

1:cd到文件夹下面

image.png

2:- pod init 创建Podfile,然后用vscode编辑文件

image.png

3:保存文件之后

  • pod install

4:用xcode打开工程 image.png

5:导入头文件使用

image.png

六、更新组件库

1:增加组件库类文件到Classes目录,然后cd到/Users/xxx/Documents/ComponentPrivatePods/AAKit/Example

image.png image.png

2:pod install 打开工程

image.png

image.png

3:测试调用成功 image.png

4:cd ../ 回到上级目录,找到AAKit.podspec,打开编辑

image.png

5:提交到远程仓库

  • git add .
  • git commit -m "AAKit增加组件第二次提交"
  • git push origin main
  • git tag '0.1.1' (注:这里的版本号必须和 AAKit.podspec 里写的版本号一致)
  • git push --tags

6:重复第四大步骤

  • 验证AAKit.podspec索引文件

image.png

  • 执行完 pod repo add HBGSpecs https://github.com/xxx/HBGSpecs.git成功后此时前往文件夹,~/.cocoapods/repos/,发现HBGSpecs文件夹里面已经有东西了

image.png

7:打开之前那个测试工程

  • 删除Podfile.lock文件
  • cd /Users/xxx/Desktop/TestPrivateKit
  • pod install

再重新打开工程

image.png

导入头文件,调用成功

image.png

参考文章