(二)创建公共的 pods
1. 创建 git 远端仓库:同上
2. 本地创建 pod 项目工程文件:同上
3. 本地测试 podspec 文件:同上4.注册 trunk
1)在注册 trunk 之前,我们需要确认当前的 CocoaPods 版本是否足够新。trunk需要 pod 在 0.33 及以上版本,如果你不满足要求,打开 Terminal 使用 ruby 的 gem 命令更新 pod:
sudo gem install cocoapods2)更新结束后,我们开始注册 trunk:
pod trunk register --verbose
邮箱以及用户名请对号入座。用户名我使用的是 Github 上的用户名。--verbose 参数是为了便于输出注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了 trunk 注册流程。使用下面的命令可以向 trunk 服务器查询自己的注册信息:
pod trunk me
3) 输出如下信息就表示你注册成功,可以进行下面的流程
zilin_weng@163.com |
'weng1250' |
5.通过 trunk 推送 podspec 文件:
先 cd 到 podspec 文件所在目录,执行:pod trunk push testPrivateFile.podspec
6. 更新本地 pod 依赖: pod setup
7. 执行 pod search 命令,若结果如下,则成功
四.更新版本:(一)私有 spec pods
已经制作好了testPrivateFile的0.1.0版本,现在对他进行升级工作,这次我添加了更多的模块到testPrivateFile之中,包括工具类,底层Model及UIKit扩展等,这里又尝试了一下subspec功能,给testPrivateFile创建了多个子分支。
具体做法:
1.更改代码库文件:先将源文件添加到Pod/Classes中,然后按照不同的模块对文件目录进行整理,因
为我有四个模块,所以在Pod/Classes下有创建了四个子目录,
2.更改之前的testPrivateFile.podspec,这次增加了subspec特性Pod::Spec.new do |s|
s.names.versions.summarys.description
s.homepage
= "testPrivateFile"= "1.0.0"
= "Just Testing."= <<-DESC
Testing Private Podspec.
* Markdown format.
* Don't worry about the indent, we strip it!DESC
= "https://coding.net/u/ranny_90/p/testPrivateFile"= "www.example.com/screenshots_1",
# s.screenshots"www.example.com/screenshots_2"
s.licenses.authors.source
= 'MIT'
= { "wtlucky" => "wtlucky@foxmail.com" }
= { :git =>"https://git.coding.net/ranny_90/testPrivateFile.git ",
:tag => "1.0.0" }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.platform = :ios, '7.0's.requires_arc = true
#s.source_files = 'Pod/Classes/**/*'#s.resource_bundles = {
# 'testPrivateFile' => ['Pod/Assets/*.png']#}
end
#s.public_header_files = 'Pod/Classes/**/*.h'
s.subspec 'NetWorkEngine' do |networkEngine|
networkEngine.source_files = 'Pod/Classes/NetworkEngine/**/*'networkEngine.public_header_files = 'Pod/Classes/NetworkEngine/**/*.h'networkEngine.dependency 'AFNetworking', '~> 2.3'
end
s.subspec 'DataModel' do |dataModel|
dataModel.source_files = 'Pod/Classes/DataModel/**/*'dataModel.public_header_files = 'Pod/Classes/DataModel/**/*.h'
end
s.subspec 'CommonTools' do |commonTools|
commonTools.source_files = 'Pod/Classes/CommonTools/**/*'commonTools.public_header_files = 'Pod/Classes/CommonTools/**/*.h'commonTools.dependency 'OpenUDID', '~> 1.0.0'
end
s.subspec 'UIKitAddition' do |ui|
ui.source_files = 'Pod/Classes/UIKitAddition/**/*'ui.public_header_files = 'Pod/Classes/UIKitAddition/**/*.h'ui.resource = "Pod/Assets/MLSUIKitResource.bundle"ui.dependency 'testPrivateFile/CommonTools'
end
s.frameworks = 'UIKit'
#s.dependency 'AFNetworking', '~> 2.3'#s.dependency 'OpenUDID', '~> 1.0.0'
因为我们创建了subspec所以项目整体的依赖dependency,源文件source_files,头文件public_header_files,资源文件resource等都移动到了各自的subspec中,每个subspec之间也可以有相互的依赖关系,比如UIKitAddition就依赖于CommonTools。
3.在测试项目里pod update一下
4.将工程 push到远端代码仓库,并打上新的tag->1.0.0。4.使用pod lib lint验证编辑好的podsepc文件5.再次提交到Spec Repo中了,命令跟之前是一样的
$ pod repo push testPrivateFile testPrivateFile.podspec6.使用pod search查找得到的结果为
$ pod search testPrivateFile(二) 公共 podspec
-
更改 pods 代码文件,同上
-
提交并 push 代码库至远程代码库,同上
-
为远端代码库打上新的 tag,同上
-
更改 podspec 文件,同上
-
执行 pod trunk push 操作