因为墙的缘故,我们没有用github,使用的是Coding。
另外说一句,不论是Coding还是GitHub、Gitee、Gitlab都是代码托管,规则基本相同。不影响pod库的创建。
本文章仅做参考用
开始
1. 准备源码
制作依赖库需要源代码,我们可以将源代码提前准备好。
我们写一个简单的代码,测试使用。如下图所示:
2. 创建本地仓库
- 在本地提前创建好一个文件夹。存放仓库。强烈建议文件夹和仓库名称一样。但是为了教学区别,我们创建了一个不一样的文件夹
JJKit
。 - 打开终端 cd 到刚刚创建的文件夹目录下。
pod lib create 'JJKitDemo'
JJKitDemo
就是我们创建的依赖库或者是第三方库的名字,到时候添加到podfile里面的名字。
执行完命令以后,后出现下面几个设置:
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> No
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> JJ
这个时候,正常情况下会成功,但是个别情况下会出现下面报错情况:
解决办法就是去JJKit文件夹中,删掉JJKitDemo,重新来一次。
如果还不成功,就去该版本,这是因为项目支持的版本号太低,是9.3.我们把它改为10.0,后重新pod install就可以了。
项目打开后应该是这个样子的:
先把项目最小化。打开文件目录,是这样的:
3. 本地仓库制作
- cd 到上图的
Example
目录下:
pod install
安装完成的终端显示如下图:
打开项目
building
一下,不报错即可。如有报错,根据提示修改一下。很准。把最开始准备的源码,复制进来。如图所示:
- 配置本地仓库支持所需要的'podspec'文件
如下图所示:
打开后是这样的:
简单介绍一下里面的东西:
s.name // 这是默认的,不用改
s.version // 版本号,输入你准备的版本号,可以不用改
s.summary // 简介,最好写一个,不改后面会有警告
s.description // 详细说明,可写可不写。
s.homepage // 依赖库的介绍页的地址,随便放,没要求
s.license // 不用改
s.author // 作者信息
s.source // 远端依赖库的地址,下一步我们就会创建远端地址。不能写错
s.ios.deployment_target = '10.0' // 依赖库支持的最低iOS系统版本现在基本都是10.0了
s.source_files // 引用库的文件目录,不用改
s.resource_bundles // 依赖库如果需要icon的话,要打开
s.frameworks // 用到的系统框架
s.dependency //用到的第三方的依赖库,用到多个的话就写多个,OC一般问题不大,Swift问题会多一点,swift库支持的版本不稳定导致的。
4 .创建远端仓库
- 文章开头就说了,因为墙的缘故,我们没有用github,使用的是Coding。
Coding功能和git差不多,但是不用设置太多东西,成功率比较高。
由于我之前创建过一次,所以名字显示重复了。
-
创建成功后,将地址复制下来。这里只支持https格式
将地址配置到刚刚的podspec文件中。然后update一下:
pod update --no-repo-update
如果有报错,根据提示进行修改。
- 执行完命令之后,源码就添加进来了。
- 我们可以在项目中测试一下:
- 测试通过后,这个时候就要验证一下
.podspec
文件的配置有没有问题,现在终端的路径需要回到本地仓库JJKit
的路径下了。执行命令:
pod lib lint
如果报错那么就根据提示修改。
修改完成以后,再一次执行
pod update --no-repo-update
pod lib lint
验证通过后就可以把代码提交到远端了。
- 提交代码
继续在本地仓库目录 JJKit
下执行命令,把依赖库上传到Git需要给依赖库打上tag标签,相当于标记版本号。
第一步: 添加远端仓库的地址
git remote add origin 远端仓库地址
第二步,把所有修改过的文件添加到缓存区
git add .
第三步,提交变动记录
git commit -m "提交变动内容"
第四步,遵循先拉后推的原则,先拉一下远端仓库的代码
git pull origin master
这一步有可能会冲突,因为远端和本地都有README.md
文件。为了防止冲突,可以删除一个,即使冲突了,也可以按照平时解决冲突的方法解决一下。
还有可能是两个master之间不相关,不能合并。我们可以强制执行:
git pull origin master --allow-unrelated-histories
第五步,推送代码到远端仓库
git push origin master
这一步也有可能失败,我们也可以强制执行:
git push --force 远端仓库地址
第六步,给依赖库打上tag
标签,注意,这个标签的版本号一定要和.podspec
文件中的version
一致
git tag 0.1.0
第七步,将tag
标签推送到远端仓库
git push origin 0.1.0
这时候我们到远端仓库看一下,已经有记录了。
5.创建私有索引库
5.1 创建远端索引库
到这里,本地仓库和远端仓库都创建完成并且验证完成了,想要支持CocoaPods安装,还必须要一个管理仓库,也叫索引库。
索引库和仓库一样也是需要两个,一个本地的一个远端的。
但是由于我是用的是coding代码库,是国内的,所以不需要这一步。
关于索引库的步骤,从网上拷贝一个过程:
原作者:当布利都教授
- 创建远端索引库的方式和创建远端仓库的方式一样
JJSpec
2、远端索引库的地址,我这里用的https格式
5.2.创建本地索引库
1、创建本地索引库,需要终端回到根目录,或者退出终端重新打开,还需要远端索引库的地址,因为需要把远端索引库和本地索引库关联起来,这就是需要先创建远端索引库,再创建本地索引库的原因,为了避免一些不可描述的问题发生,还是强烈建议本地索引库的名字和远端索引库的名字一致,然后执行如下命令:
pod repo add 本地索引库名字 远端索引库的地址
2、为了验证是否创建成功,可以直接在终端输入命令查看创建结果,终端命令如下:
pod repo
3、到这里,准备工作都做完了,需要把.podspec文件推送到远端索引库进行绑定操作,终端需要回到本地仓库所在的目录下,再执行命令,终端命令如下:
pod repo push 索引库名字 JJKitDemo.podspec
4、回到远端索引库刷新看下是否提交成功
6. 公开索引库
以上5都是私有库索引的方法
如何要创建公开库:
- 发布到cocoapods 上进行托管
先用pod spec lint 验证podspec 文件
pod spec lint JJKit.podspec
如果报了个警告,直接使用pod spec lint --allow-warnings来忽略所有警告即可。
--verbose --use-libraries
--verbose 显示详细信息
--use-libraries 如果依赖了静态库使用这个可以校验通过
--allow-warnings 忽略警告
- 发布
输入 pod trunk push --allow-warnings命令来发布到cocoapods上,这可能需要几分钟时间。
如果报错:尝试pod trunk push --verbose --use-libraries
pod trunk push --verbose --allow-warnings --use-libraries
7. 验证
1、创建一个测试demo,用CocoaPods引入我们的依赖库,如下图:
注意:这里需要指向,因为这个库其实并没有公开发布。
install之后成功!
如果是发布到cocoapods上以后就可以直接写:pod 'JJKitDemo',不用写后面git地址。
8. 更新依赖库版本
- 打开本地源码,进行修改。
- 修改完成以后,修改podspec文件的版本号,比如:0.2.0
cd到本地仓库的Example
目录下,然后再执行命令pod update --no-repo-update
,终端会显示更新成功
看到版本号从0.1.0更新到了0.2.0了,到这里,还是有必要对本地仓库进行一次验证,终端回到本地仓库的路径下执行命令pod lib lint
有显示passed validation
,并且版本号也是0.2.0
,表示验证通过,源码的修改也生效了。
- 接下来一系列的操作,保存、提交、拉取、推送、打标签、推送标签,整个流程没报错。
刷新一下远端仓库看提交上去没有,有就是成功了
标签也成功了:
如果是coding,到这里就结束了。可以去更新demo验证了。update一下就行了。
这是提交到需要的步骤,github 把.podspec文件推送到远端索引库进行绑定,还是在本地仓库所在的目录下,终端执行命令pod repo push 索引库名字 JJKitDemo.podspec,终端显示如下:
看下远端索引库是否提交成功
公开索引库和之前步骤一样
9. 总结
网上抄来的:
原作者:当布利都教授
制作一个支持CocoaPods依赖库共需要四个仓库:
远端仓库
本地仓库
远端索引库
本地索引库
其中本地仓库用来测试及调整源码,远端仓库用来保存本地仓库的所有文件,远端索引库用来支持CocoaPods安装,本地索引库用来和远端索引库进行绑定,并把本地仓库的.podspec文件推送到远端索引库。
源码的每次变动都必须要打tag标签,并且推送tag的时候必须和.podspec文件中的version一致。
只要远端仓库和远端索引库存在,可以随时随地维护自己的依赖库。
步骤总结
1、创建本地代码库:pod lib create 仓库名
2、创建远端代码库,拿到远端代码库git地址,回到本地代码库目录下打开.podspec文件替换掉source地址和homepage地址,修改summary内容
3、cd到Example目录下,更新本地代码库:pod update --no-repo-update(此步骤可跳过)
4、cd到本地代码库目录下,验证:pod lib lint --allow-warnings
5、将本地代码库推送到远端代码库并打标签(tag标签版本号和.podspec中版本号一致)
git remote add origin 远端代码库git地址
git add .
git commit -m 'commit'
git pull origin master(新仓库推送代码,此步骤可跳过)
git push --force 远端代码库git地址(强制推送合并代码)
git tag 0.0.1
git push origin 0.0.1
6、创建远端索引库
7、重新打开终端或cd ~,创建本地索引库:pod repo add 本地索引库名 远端索引库git地址
8、验证本地索引库:pod repo(或直接查看本地索引库是否创建成功:~/.cocoapods/repos)
9、cd到本地代码库目录,将本地代码库的.podspec文件和索引库邦的:pod repo push 索引库名 本地代码库.podspec --allow-warnings
10、在Demo项目中,pod引入组件库
指定分支:pod '代码库名', :git => '代码库git地址', :branch => 'master'
指定commit:pod '代码库名', :git => '代码库git地址', :commit => '******'
可将代码库本地引入,修改代码库中源码:clone代码库到Demo项目同级目录,podfile文件改为:pod '代码库名', :path => '../代码库名'
11、创建远端代码库和索引库时,保证仓库中有文件存在,避免push不成功
12、查看你的注册信息 pod trunk me
13、注册cocoapods账号: pod trunk register 'git邮箱' 'git用户名'