如何创建私有podspec
创建一个私有的podspec包括如下那么几个步骤:
1.创建并设置一个私有的Spec Repo。
2.创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址。
3.创建Pod所对应的podspec文件。
4.本地测试配置好的podspec文件是否可用。
5.向私有的Spec Repo中提交podspec。
6.在个人项目中的Podfile中增加刚刚制作的好的Pod并使用。
7.更新维护pod spec。
创建并设置一个私有的Spec Repo
创建一个仓库https://github.com/TRZXDev/TRZX_Repositories
![](https://img.haomeiwen.com/i119178/33fbc3449d0f023c.png)
本地添加私有源
pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
---------------------------------------------------------
pod repo add TRZX_Repositories https://github.com/TRZXDev/TRZX_Repositories
此时如果成功的话cd到~/.cocoapods/repos目录下就可以看到TRZX_Repositories这个目录了。
![](https://img.haomeiwen.com/i119178/6761f6395b6a363c.png)
至此第一步创建私有Spec Repo完成。
创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址
创建一个Xcode项目 TRZX_Test
在TRZX_Test项目下创建名为TRZX_Test的文件夹,后面我们需要做成私有pod的文件均放在该文件夹下
在TRZX_Test文件下面添加TRZX_Test文件
![](https://img.haomeiwen.com/i119178/f2e572526d16c566.png)
在gitHub新建一个project名为TRZX_Test项目
![](https://img.haomeiwen.com/i119178/7505b0856b9609d0.png)
关联本地项目推送至gitHub
echo "# TRZX_Test" >> README.md
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/TRZXDev/TRZX_Test.git
git push -u origin master
假如我们的源是origin,分支是master,那么我们 需要这样写需要知道,我们的源可以是本地的路径
git pull origin master --allow-unrelated-histories
因cocoaPods强制添加开源许可文件,在TRZX_Test工程目录下创建FILE_LICENSE
echo MIT>FILE_LICENSE
创建podspec文件
pod spec create TRZX_Test
执行命令vim .TRZX_Test.podspec编辑podspec文件
0.s.summary
s.summary = "Testing TRZX_Test."
1.s.description 添加描述
s.description = <<-DESC
Testing Private Podspec.
DESC
2.s.platform 最低支持iOS版本
# s.platform = :ios
s.platform = :ios, "9.0"
3.s.homepage
s.homepage = "https://github.com/TRZXDev/TRZX_Test"
4.s.license
#s.license = "MIT (example)"
s.license = { :type => "MIT", :file => "FILE_LICENSE" }
5.s.source
s.source = { :git => "https://github.com/TRZXDev/TRZX_Test.git", :tag => "#{s.version}" }
6.s.source_files
s.source_files = "CRProtocolManager", "CRProtocolManager/**/*.{h,m}"
退出编辑执行命令
编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令
pod lib lint
当你看到
![](https://img.haomeiwen.com/i119178/909e391c68f70ce3.png)
时,说明验证通过了,不过这只是这个podspec文件是合格的,不一定说明这个Pod是可以用的,我们需要在本地做一下验证
把刚才的修改Add到本地
git add .
git commit -m '编辑.podspec'
添加tag 一定要和podspec中的version一致
git tag 0.0.1
把刚才添加的tag提交上去
git push origin master --tags
![](https://img.haomeiwen.com/i119178/42b66e33c74f8ae3.png)
把TRZX_Test项目添加到准备工作中的私有源仓库TRZX_Repositories
pod repo push TRZX_Repositories TRZX_Test.podspec --verbose --allow-warnings
执行成功后
pod search TRZX_Test应该就能搜索到了
如果发现搜索不到刚才的组件
rm ~/Library/Caches/CocoaPods/search_index.json
然后在进行搜索就可以搜索到了
注意
此时由于你当前工程B依赖的工程是私有库,于是会报错:
- ERROR | [iOS] unknown: Encountered an unknown error
pod sepc lint 文件名.podspec --sources='http://[privateLibName]/cocoaspecs.git,https://github.com/CocoaPods/Specs.git'
报错 ···
error: include of non-modular header inside framework module ··· [-Werror,-Wnon-modular-include-in-framework-module]
解决办法:在pod lib lint 或者 pod spec lint 以及 pod repo push ....时候加上 --use-libraries
pod lib lint --use-libraries
#或者
pod spec lint --use-libraries
#当然,在提交的时候也要加上
pod repo push <repoName> <podspec> --use-libraries
#或者
pod repo push TRZX_Repositories TRZX_Test.podspec --verbose --allow-warnings --use-libraries