创建一个私有的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
屏幕快照 2017-01-16 13.55.34.png
本地添加私有源
pod repoadd[Private Repo Name] [GitHub HTTPScloneURL]---------------------------------------------------------pod repoaddTRZX_Repositories https://github.com/TRZXDev/TRZX_Repositories
此时如果成功的话cd到~/.cocoapods/repos目录下就可以看到TRZX_Repositories这个目录了。
屏幕快照 2017-01-16 14.04.26.png
至此第一步创建私有Spec Repo完成。
创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址
创建一个Xcode项目 TRZX_Test
在TRZX_Test项目下创建名为TRZX_Test的文件夹,后面我们需要做成私有pod的文件均放在该文件夹下
在TRZX_Test文件下面添加TRZX_Test文件
屏幕快照 2017-01-17 13.47.04.png
在gitHub新建一个project名为TRZX_Test项目
屏幕快照 2017-01-17 13.48.12.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
echoMIT>FILE_LICENSE
创建podspec文件
podspeccreate TRZX_Test
执行命令vim .TRZX_Test.podspec编辑podspec文件
0.s.summary
s.summary="Testing TRZX_Test."
1.s.description 添加描述
s.description = <<-DESCTestingPrivatePodspec.DESC
2.s.platform 最低支持iOS版本
# s.platform = :ioss.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是可以存在的,验证需要执行一下命令
podliblint
当你看到
屏幕快照 2017-01-17 14.34.50.png
时,说明验证通过了,不过这只是这个podspec文件是合格的,不一定说明这个Pod是可以用的,我们需要在本地做一下验证
把刚才的修改Add到本地
gitadd.git commit -m'编辑.podspec'
添加tag 一定要和podspec中的version一致
gittag0.0.1
把刚才添加的tag提交上去
git push originmaster--tags
屏幕快照 2017-01-17 14.28.28.png
把TRZX_Test项目添加到准备工作中的私有源仓库TRZX_Repositories
pod repopushTRZX_Repositories TRZX_Test.podspec --verbose--allow-warnings
执行成功后
pod search TRZX_Test应该就能搜索到了
如果发现搜索不到刚才的组件
rm ~/Library/Caches/CocoaPods/search_index.json
然后在进行搜索就可以搜索到了
注意
此时由于你当前工程B依赖的工程是私有库,于是会报错:
- ERROR | [iOS]unknown: Encountered anunknownerror
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
podliblint--use-libraries#或者pod spec lint --use-libraries#当然,在提交的时候也要加上pod repo push --use-libraries#或者pod repo push TRZX_Repositories TRZX_Test.podspec --verbose --allow-warnings --use-libraries