目录
- 1. 创建第一个用于存储 .podspec 后缀文件的私有 Git 仓库
- 2. 创建第二个用于存储的共享代码的私有 Git 仓库
- 3. 本地创建后续要被共享的Lib工程
- 4. 上传.podspec到第一个远程私有仓库
- 5. 如何使用私有库
制作私有Pod流程:
1. 创建第一个用于存储 .podspec 后缀文件的私有 Git 仓库。
.podspec
: 本地代码仓库索引描述文件,CocoaPods通过该文件对存放源代码的 Git 仓库进行索引和下载。
勾选Private,命名为:TKPodSpec
2. 创建第二个用于存储的共享代码的私有 Git 仓库
勾选Private,命名为:TKMyLib
复制 Git 仓库地址,等会配置 .podspec 文件会用到
3. 本地创建后续要被共享的Lib工程
- 打开终端 cd 到你要创建的目录下
cd /Users/xxx/Desktop/
- 创建待上传的 Lib 模板
pod lib create TKMyLib
打开 TKMyLib.podspec
文件:
配置 .podspec 后缀文件
s.name : 项目名
s.version : 版本号(需跟后面打 Tag 的值相等)
s.homepage : 项目主页(请注意,这里的地址跟git仓库地址有一定差别,请同学们看清截图示例并区分)
s.license : 开源协议(这里我们选择 MIT )
s.source : Git 仓库地址(第二步所复制的仓库地址)
s.ios.deployment_target : 项目最低支持版本
s.source_files : 具体去那个目录下下载特定共享代码(注意:这里的地址与 .podspec 文件同级目录开始,,示例:PrivateLib/Classes/** /*表示如下目录下的所有文件
s.frameworks : 项目所依赖的系统库(如果需要)
s.dependency : 项目所依赖的第三方库(如果需要)
- 配置完成后,我们需要验证下 .podspec 文件的格式正确性
cd /Users/xxx/Desktop/TKMyLib
pod lib lint
验证没通过,根据提示,解决办法:
pod lib lint --allow-warnings
- 将本地
TKMyLib
工程与远程私有 Git 仓库关联
git remote add origin 远程仓库地址
- 从远程仓库进行拉取并且合并
git pull origin master --allow-unrelated-histories
- 把本地仓库与远程仓库同步
git status // 查看本地是否有修改,有则同步
git add .
git commit -m "首次同步"
git push origin master
-
此时我们在github远程仓库看到的是这样的:
-
然后进行本地和远程验证文件有效性。
pod spec lint
这里提示我们需要给远程仓库打上与本地仓库 .podspec 相同的 Tag 值。
git tag 0.1.0 // 注意此处版本号要与TKMyLib.podspec中的一致
git push --tags
- 重新校验,此处命令我直接忽略了警告信息⚠️
pod spec lint --allow-warnings
4. 上传.podspec到第一个远程私有仓库
- 后续操作设计到很多隐藏文件,我们需要把隐藏的文件显示出来,终端执行以下命令:
defaults write com.apple.finder AppleShowAllFiles -bool true
- 然后创建一个私有仓库目录
pod repo add TKPodSpec TKPodSpec在GitHub中的地址
- 然后把
TKMyLib.podspec
提交到私有的远程仓库TKPodSpec
中
因为我这里报错,所以我在命令后面加了--allow-warnings
。如果你那里不报错可以不添加
pod repo push TKPodSpec TKMyLib.podspec --allow-warnings
提交成功,如图显示,
-
查看本地repo目录
-
搜索 TKMyLib
pod search TKMyLib
搜索成功:
搜索不到:删除检索文件 search_index.json
,然后重新搜索
使用下面命令行删除或者自己手动删除。
rm ~/Library/Caches/CocoaPods/search_index.json
5. 如何使用私有库
创建一个项目,Podfile如下:
- 安装我们的pod
pod install
查看项目目录,我们自己的私有 TKMyLib
:
参考:
创建私有Pods,从小白到老铁
cocoapod搭建私有库超级详细教程
An unexpected version directory…#3041