如何发布CocoaPods公开库以及新建私有Pod Specs索引库

CocoaPods公开库

将自己的开源代码提交到GitHub后,我们还可以将其发布成CocoaPods公开库,从而可以通过pod来管理引用。下面是发布CocoaPods公开库的步骤说明

第一步

打开终端,进入项目工程根目录,创建podspec文件

1
pod spec create CJLabel

第二步

编辑podspec文件

1
vim CJLabel.podspec

执行命令后会自动生成一份模版文件,我们只需修改其中的一些主要内容即可
image填写的时候注意几点:

  1. s.license = “MIT” ,默认选这个,但我选择后提示错误[iOS] license: Unable to find a license file,改为后面的描述可以解决报错;也可以在与.podspec文件同级别的目录下保存 LICENSE 文件同样可以解决报错。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    s.license      = { :type => 'Apache License, Version 2.0', :text => <<-LICENSE
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    LICENSE
    }
  2. s.source 可直接填GitHub上对应的托管地址,注意最后要以.git结尾,并说明对应的tag号

  3. s.source_files是一定要填写正确的,不然无法提交 .podspec文件

第三步

设置tag号,提交修改

  • 先提交当前修改 :$ git commit -m “Release 0.0.1”
  • 可选,查看当前tag :$ git tag
  • 可选,删除本地指定tag :$ git tag -d 0.0.1
  • 可选,删除远程指定tag :$ git push origin :refs/tags/0.0.1
  • 添加tag  :$ git tag 0.0.1
  • 可选,推送指定tag到远程 :$ git push origin 0.0.1
  • 可选,推送所有tag到远程 :$ git push –tags
  • 推送到远程到代码仓库 :$ git push origin master

完成以后验证配置:

1
2
3
pod spec lint CJLabel.podspec
# 或者使用下面指令,表示忽略项目警告
pod spec lint CJLabel.podspec --allow-warnings

如果出现提示:image
那么就是已经配置成功,可以提交到cocoapods了,否则要将所有提示的error和warn修改掉。

附修改步骤:

1、先删除远程tag

1
git push origin :refs/tags/0.0.1

2、修改去除警告与错误后,重复上面的第三步步骤

第四步

提交cocoapods

1
2
3
pod trunk push CJLabel.podspec
# 或者使用下面指令,表示忽略项目警告
pod trunk push CJLabel.podspec --allow-warnings

如果在这一步出现提示[!] You need to register a session first.
可以执行以下指令来解决:

1
pod trunk register 邮箱地址 "用户名" --description="macbook pro"

之后会有一封带有验证链接的邮件发送到你输入的邮箱,点击验证后就可以回来终端继续提交操作了。

第五步

提交成功后可以执行pod search命令来搜索提交的库,如果搜索不成功则执行pod setup,更新pod索引库,再次搜索。搜索成功后安装。

新建私有Pod Specs索引库

前面介绍的 .podspec 是用于描述每一个pod库版本信息的描述文件,CooaPods正是通过这些索引描述来管理下载对应的三方库的。而Pod Specs索引库则是保存这些所有索引文件的仓库地址,查看本地文件夹目录 /Users/用户名/.cocoapods/repos,可以发现有个叫cocoapods的文件夹,里面记录的就是CocoaPods的索引信息,对应的远程仓库地址是https://github.com/CocoaPods/Specs。

由于GitHub外网限制,经常访问不通,我们可以通过建立私有的Pod Specs索引库来解决该问题。新建步骤:

第一步

在git服务器上新建Specs索引库的远程代码仓库 MySpecs,可以使用Coding码云或其他git服务器,新建的远程仓库根据业务需要设置成私有或公开。

第二步

本地添加私有索引库

1
pod repo add MySpecs http://xxxx/MySpecs.git

添加完成可以查看本地是否已经添加成功,或者删除重加

1
2
3
4
# 查看本地索引库
pod repo
# 删除指定索引库
pod repo remove MySpecs

第三步

发布索引文件到私有索引库。比如这里讲前面新建的 CJLabel.podspec 索引发布到MySpecs索引库

1
pod repo push MySpecs CJLabel.podspec --allow-warnings

第四步

私有索引库的使用。私有索引库新建成功后,在 Podfile 文件中指定索引库的地址即可

1
2
3
4
5
6
7
8
9
10
# 指定索引库地址
source 'http://xxx/MySpecs.git'

#use_frameworks!
platform :ios, '9.0'

target 'TestDemo' do
pod CJLabel

end