公司的新项目多的不可思议,急需组件化支持我们模块组装生成新的App,记录一下私有库的制作方法,如有错误还请大家帮助指出
1,先创建一个远程的spec索引仓库
我的索引仓库名为mylib4RepoSpec,github上的创建过程略,然后clone到本地,添加你编辑好的spec文件,后续会讲到这个文件
这这个仓库主要是存放我们日后要维护的所有组件的索引文件.spec
2,创建一个组件代码仓库
-
2.1 远程代码仓库
- 2.2 克隆到本地
git clone https://github.com/tianyang828/mylib4.git
在仓库路径下,生成.podspec文件,使用命令:
pod spec create mylib4.spec
-
2.3 编辑podspec文件,填写私有库相关信息,顾名思义,不细说
-
2.4 然后添加你的组件代码,放在Classes文件夹下,demo下存放的是你的示例工程,可选择是否添加
2.5 把本地组件代码推到远端,并打个标签
git add .
git git commit -m '第一次提交'
git pull
git push
//注意tag和podspec文件里的s.version一样
git tag "0.0.1"
git push —tags
- 2.6 验证上一步编辑的 .podspec文件是否有错,出错的话根据提示自行修改,在podspec文件所在目录下执行命令:
注:
(1) - -verbose:表示显示全部的日志信息,建议加上这个,方便判断错误信息;
(2) - -sources:如果我们在podspec里面依赖到一些私有的库之后,直接进行校验是会报错的提示找不到,这里可以加上Spec仓库的地址告诉CocoaPods找不到的时候去哪里找;
(3) - -allow-warnings:表示允许警告;
(4) - -use-libraries:表示使用静态库或者是framework,这里主要是解决当我们依赖一些framework库后校验提示找不到库的时候用到。
pod lib lint --allow-warnings
- 2.7创建私有的索引库Spec Repo:
pod repo add “自定义名” “spec索引仓库地址” (文章开始创建的索引库地址)
这一步做的其实是创建的工作,也就是在 ~/.cocoapods/repo 目录下添加了一个以你的私有 repo 为名的文件夹,但是并没有添加 spec 文件。
pod repo push xxxx.podspec
这个命令执行之后,本地和远端的~/.cocoapods/repo都会发生变化,.pec已经添加进去
pod repo add mylib4 https://github.com/tianyang828/mylib4RepoSpec.git
pod repo push mylib4 mylib4.podspec --allow-warnings
打开本地cocopods仓库,查看本地repo库(会包含mylib4库):
open ~/.cocoapods/repos/
查询本地是否有对应的项目库
pod search mylib4
查看本地pod索引库
pod repo
3 在项目中使用,编辑podfile
4 更新维护,重新提交代码,修改spec文件描述并提交
1.重新提交代码:
git add .
git commit -m ‘更新了***’
git push origin master2.打tag,同时改spec描述文件:
git tag 0.0.2
git push –tags3.更新spec文件到索引库
pod repo add mylib4 https://github.com/tianyang828/mylib4RepoSpec.git
pod repo push mylib4 mylib4.podspec --allow-warnings
- 其他问题及扩展:
1.也有使用如下命令的方式创建项目的
pod lib create mylib5
2.pod repo push 失败可能原因,github的主分支由master变成了main,pod在推送到远端索引时可能出错,所以可以在创建远端仓库的时候,把主分支名字改为master
创建带示例工程的spec 文件夹 pod lib create HTCourseDownloadLib
刷新本地索引 pod repo update /Users/XXXX/.cocoapods/repos/huatuop-open-ios1-htpodspecs
git remote add origin git@gitlab.XXXX.com:open-ios1/HTCourseDownloadLib.git
git push origin master