说明
创建CocoaPods仓库的目的:
- 点亮技能树
整理总结知识点,点亮技能树。 - 创建私有库:模块化,有效管理代码
随着项目迭代增多,代码量增大,维护、开发人员更新换代,代码会越来越难以管理。模块化能高效管理代码。 - 共同修改公共库,提高技术
如果你的公共库够酷、够靓,一起修改BUG的人自然就多。可以很好地提高自己。 - 树立自己的品牌形象
这个就不用说了吧,你懂得。
创建CocoaPods仓库的步骤:
- 创建一个仓库(Spec repo)
- Git到本地,并创建一个新的项目
- 添加podspec文件
- 上传本地库到Github上
- 验证podspec文件
- 创建私有Spec Repo
- 本地测试pod spec文件
- 添加podspec文件到私有Spec Repo
- 测试私有 pod
- 发布稳定的公有release版本
一、在git服务器上新建仓库(Spec repo)
github 上添加私有仓库是收费的。可以建立自己的git服务器(使用Gitlab, Coding, Bitbucket等等)。这里以GitHub为例创建。
说明:
- 命名仓库的名字。
- 一句话描述仓库。
- 公共仓库,大家可以查看。如果选择Private,要收费,每月$7。
- 所使用的语言。
- 通用协议。
二、Git到本地,并创建一个新项目
-
在终端中输入
$ git clone git@github.com:wuyaGit/WYVideoRecordView.git
在你的Finder中可以看到WYVideoRecordView了
-
在WYVideoRecordView文件夹中创建一个新项目,目录结构如下
说明:
(1)WYVideoRecordView,制作的公共库的文件;
(2)WYVideoRecordViewDemo,用来测试我们的公共库。(备注:最好使用这种方式来命名,否则添加podspec文件时可能会出现问题。)
三、创建podspec文件
创建podspec文件有两种方法:
-
使用终端
$ pod spec create WYVideoRecordView
从成熟的开源项目中复制
Objective-C的podspec模板
Pod::Spec.new do |s|
s.name = "WYVideoRecordView"
s.version = "0.0.1"
s.summary = "WYVideoRecordView" #简短介绍
s.description = <<-DESC
录制视频的自定义UI。使用Objective-C语言,支持iOS8及以上版本。
DESC
s.homepage = "https://github.com/wuyaGit/WYVideoRecordView"
# s.screenshots = "www.example.com/screenshots_1.gif"
s.license = { :type => 'MIT' } #开源协议
s.author = { "wuyaGit" => "yoounglolo@gmail.com" }
s.source = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git" }
## 这里不支持ssh的地址,只支持HTTP和HTTPS,最好使用HTTPS
## 正常情况下我们会使用稳定的tag版本来访问,如果是在开发测试的时候,不需要发布release版本,直接指向git地址使用
## 待测试通过完成后我们再发布指定release版本,使用如下方式
#s.source = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git", :tag => s.version }
s.platform = :ios, "8.0"
s.requires_arc = true #是否使用ARC
s.source_files = "WYVideoRecordView/*.{h,m}"
s.frameworks = 'UIKit', 'Foundation' #多个用逗号隔开
s.module_name = 'WYVideoRecordView' #模块名称
# s.dependency "JSONKit", "~> 1.4" #该项目所依赖的其他库,如果有多个可以写多个 s.dependency
end
Swift的podspec模板
Pod::Spec.new do |s|
s.name = "SwiftTheme"
s.version = "0.0.1"
s.summary = "录制视频的自定义UI。使用Objective-C语言,支持iOS8及以上版本。"
s.homepage = "https://github.com/wuyaGit/WYVideoRecordView"
s.license = 'MIT'
s.author = { "wuyaGit" => "yoounglolo@gmail.com" }
s.source = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git", :tag => s.version }
s.platform = :ios, '8.0'
s.requires_arc = true
s.source_files = 'Source'
end
目录结构如下:
我们可以验证一下podspec是否正确。命令行输入:
$ pod lib lint
一个警告:source: Git sources should specify a tag.
工程中没有生成正式的 release 版本, github 上并没有任何 tag,填写 .podspec 文件填写 git 地址的时候没有填写指定 tag 。这个警告可以使用--allow-warnings忽略。
$pod lib lint --allow-warnings
一个错误:[iOS] file patterns: The source_files
pattern did not match any file.
这是因为我们的工程还没有上传到GitHub,所以找不到路径。
四、上传本地库到Github上
在终端输入:
$git add .
$git commit -m "添加了 .podspec文件"
$git push
GitHub目录结构:
五、验证podspec文件
再验证一下podspec是否正确。命令行输入:
$ pod lib lint --allow-warnings
结果如下:
说明我们的GitHub上的仓库没有问题,podspec文件正确。
六、创建私有Spec Repo
1. 查看公共 CocoaPods
首先查看下本地的.cocoapods文件夹
输入命令:
//打开隐藏的命令:
$defaults write com.apple.finder AppleShowAllFiles -bool true
//关闭隐藏的命令:
$defaults write com.apple.finder AppleShowAllFiles -bool false
重启Finder,然后在Finder中查询~/.cocoapods 或 /Users/[username]/.cocoapods。可以看到Cocoapods所有公有的Spec Repo:
我们看到master目录的结构是这个样子的
#~/.cocoapods/repos 大致目录是这样的
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
2. 创建私有 Spec Repo
在终端执行命令:
$pod repo add WYVideoRecordView https://github.com/wuyaGit/WYVideoRecordView.git
master目录结构发生了变化:至此,我们已经在本地得到我们自己的私有仓库WYVideoRecordView。
七、本地测试pod spec文件
在本地新建项目WYVideoRecordViewTest,在profile文件中编辑:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
#屏蔽第三方库警告
inhibit_all_warnings!
target 'WYVideoRecordViewTest' do
pod ‘WYVideoRecordView', :path => ‘~/WYVideoRecordView' # 指定路径
#pod 'WYVideoRecordView', :podspec => '~/WYVideoRecordView/WYVideoRecordView.podspec' # 指定podspec
end
执行命令:
pod install --verbose --no-repo-update
文件目录如下:重新编辑profile文件:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
#屏蔽第三方库警告
inhibit_all_warnings!
target 'WYVideoRecordViewTest' do
#pod ‘WYVideoRecordView', :path => ‘~/WYVideoRecordView' # 指定路径
pod 'WYVideoRecordView', :podspec => '~/WYVideoRecordView/WYVideoRecordView.podspec' # 指定podspec
end
效果如图:总结:两种方式都可以添加私有库到工程中。
八、添加podspec文件到私有Spec Repo
执行命令:
$pod repo push WYVideoRecordView WYVideoRecordView.podspec
出现错误:出现not clean错误。
#The repo `WYVideoRecordView` at `../.cocoapods/repos/WYVideoRecordView` is not clean
#cd到repo的相关项目中
#git status 检查一下是否有未提交的东西,如果有就commit后push一下,如果没有就git clean -f 后push一下。
$cd ~/.cocoapods/repos/WYVideoRecordView
$git clean -f
重新执行命令:
$pod repo push WYVideoRecordView WYVideoRecordView.podspec --allow-warnings --verbose
// --allow-warnings : 允许 警告,有一些警告是代码自身带的。
// --use-libraries : 私有库、静态库引用的时候加上
// —verbose : lint显示详情
结果:pod search下:
$pod search WYVideoRecordView
九、测试私有 pod
编辑profile文件:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/wuyaGit/WYVideoRecordView.git'
platform :ios, '8.0'
#屏蔽第三方库警告
inhibit_all_warnings!
target 'WYVideoRecordViewTest' do
#pod ‘WYVideoRecordView', :path => ‘~/WYVideoRecordView' # 指定路径
#pod 'WYVideoRecordView', :podspec => '~/WYVideoRecordView/WYVideoRecordView.podspec' # 指定podspec
pod 'WYVideoRecordView'
end
项目结构如下:到这里,创建私有库大功告成!
十、发布稳定的公有release版本
私有库创建完成后,如果想让别人也使用我们的库,可以发布公有版本。
1、 添加tag标记,生成稳定的 release
cd ~/.cocoapods/repos/WYVideoRecordView
git tag '0.0.1'
git push --tags
git push origin master
我们就得到了一个稳定的 release 版本 0.0.1:2、修改podspec 文件
s.source = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git", :tag => s.version }
然后上传到GitHub。
3、检测是否已经注册了pod trunk账号
pod trunk me
4、创建pod trunk 用户
#举例
pod trunk register '邮箱' '电脑描述'
5、验证邮件
pod会发邮件过了,验证一下。
6、再次检验用户
pod trunk me
7、上传到到Cocoapod
pod trunk push WYVideoRecordView.podspec
如果有警告,那么我们要去修改警告或者忽略警告
pod trunk push WYVideoRecordView.podspec --allow-warnings
等待一下,提示:
//上传成功的提示
🎉 Congrats
🚀 WYVideoRecordView (0.0.1) successfully published
📅 April 25th, 00:08
🌎 https://github.com/wuyaGit/WYVideoRecordView
👍 Tell your friends!
8、验证是否可用
两种方式:
(1)删除我们在~/.cocoapods/repos/下创建的私有库,然后
pod search WYVideoRecordView
(2)在CocoaPod管理所有第三方库(CocoaPod管理的库)中所搜一下。
9、升级自己的库
1.修改项目
2.修改.podspece内部的版本号
3.上传github
4.打tag
5.上传podspece