*.podspec.json
文件形式存在。*.podspec
文件形式存在,自建的spec repo放在路径~/.cocoapods/repos下,与master同级,其链接的远程仓库可以是公开的,也可以是私有的。私有库链接私有仓库的例子:公司项目放在公司内网搭建的git服务器中,有些功能在多个项目中都会用到,这就需要抽成库。为了便于维护和升级,使用cocoaPods来管理。由于置于内网git服务器中,这些库只有在公司内网才能安装。
私有库链接公开仓库的例子:阿里巴巴有一个叫阿里百川的开放平台,提供了淘宝联盟SDK,将SDK制作成了私有库,整合在自建的阿里云Repo仓库中,这样既能提供给其他开发者使用,又能避免混乱地发布在cocoaPods的官方Repo仓库中。
设置完成后终端会输出
成功后会创建出一个pod_test工程,目录结构如下:
Example是创建Pods工程时生成的一个工程,用于验证添加的库文件是否能正常使用。Example目录下Podfile文件中自动设置了pod_test依赖,如下:
target 'pod_test_Example' do
pod 'pod_test', :path => '../' #自动添加了
cd Example文件夹下,终端执行pod install或pod update,安装pod_test依赖,目录结构如下:
打开pod_test.xcworkspace,其Pod目录的虚拟目录Development Pods/pod_test下就有库文件了。
在控制器中编写测试代码验证库的接口,若经过验证,库的接口能正常使用,则可进入下一步。
git init
git remote add origin https://github.com/xxx/pod_test
git pull origin main
git add .
git commit -m "第一次提交项目"
git push origin master:main
关于字段的含义:
s.name :pod search 搜索的关键词,注意这里一定要和.podspec的名称一样
s.version :版本号,每一个版本对应一个tag
s.summary : 简介
s.homepage : 项目主页地址
s.license : 许可证
s.author : 作者
s.social_media_url : 社交网址
s.source : 项目的地址
s.source_files : 需要包含的源文件
s.resources: 资源文件
s.requires_arc : 是否支持ARC
s.dependency :依赖库
s.ios.deployment_target = '8.0' : 支持的pod最低版本
s.source_files = ‘pod_test/Classes/**/*’,这里**
表示匹配所有子目录,*
表示匹配所有文件。
git add .
git commit -m '设置podspec文件'
git push origin master:main #提交到远端仓库
git tag 0.0.1 #这里的版本号必须和podspec中的s.version值相同
git push --tags
tag必须要打上,CocoaPods进行仓库版本管理时,就是通过.podspec文件中s.version的值到git远程仓库上找与之相同的tag标签的版本。
补充:
打tag时加注释的写法:git tag 0.0.1 -m '写注释'
查看所有tag内容:git tag -l -n
且必须验证,否则后面执行pod repo push或pod trunk push一定失败
。//--allow-warnings:加上该选项,验证时如果有警告会忽略警告,否则无法验证通过
//--use-libraries:如果依赖了静态库就需要加上该选项
pod spec lint --allow-warnings --use-libraries
或
pod lib lint pod_test.podspec --allow-warnings --use-libraries
pod spec相对于pod lib会更为精确,pod lib相当于只验证一个本地仓库,pod spec会同时验证本地仓库和远程仓库。
终端打印"pod_test passed validation"即为验证成功。
至此,算是搭建了本地的自定义库,接下来发布阶段的操作决定了最后是私有库还是公有库。
pod repo add mySpecs https://github.com/xxx/mySpecs.git
那么在路径~/.cocoapods/repos下就会有mySpecs本地仓库。
pod repo push mySpecs pod_test.podspec --allow-warnings --use-libraries
push成功会打印"Adding the spec to the `mySpecs’ repo"。
之后mySpecs本地仓库里面多了pod_test库的索引(也就是pod_test.podspec),同时会push同步到https://github.com/xxx/mySpecs.git。
至此,私有库pod_test完成。
pod trunk push pod_test.podspec --allow-warnings --use-libraries
若显示"pod_test successfully published"就表示成功发布到官方Spec Repo仓库了。
若报错没有注册CocoaPods账号,则注册一个,命令(github_email填邮箱地址,'user_name’填作者名称):
pod trunk register github_email 'user_name' --verbose
然后到邮箱中收取邮件来点击验证注册,之后再执行一次pod trunk push pod_test.podspec --allow-warnings即可。(提醒:换台电脑,修改源码,提交到仓库时一样需要注册)
至此,公有库pod_test完成。
提交之后cocoaPods官网更新会延迟,耐心等待5-10分钟,然后将其更新到本地master spec repo:
pod repo update
rm ~/Library/Caches/CocoaPods/search_index.json
pod search pod_test #重新下载search_index.json