在篇教程基于你對CocoaPods 和 iOS 開發(fā)有了一個基礎(chǔ)的了解及皂。
Setp1.創(chuàng)建一個git倉庫
你需要為你的private Pod創(chuàng)建兩個git 倉庫宗收。一個為Pod創(chuàng)建的港庄,另外一個作為你的Podspec倉庫欢搜。Podspec是你priavte pod保存信息的地方牛曹。為了添加private Podspec到你本地的CocoaPods中,運行下面的命令:
pod repo add [REPO_NAME] [SOURCE_URL]
你將會用[REPO_NAME]
這個名字來引用Podspec倉庫瓢娜。[SOURCE_URL]
是你倉庫的git地址挂洛。如果上述操作順利,你將會看到一個目錄在你機器的~/.cocoapods/repos
目錄下眠砾,目錄名字是你倉庫的名字虏劲。
Setp2.用pod lib create
創(chuàng)建你的Pod
CocoaPods有一個很nice的功能幫助你建立自己的Pod Project。里面還包括了test app和testing framework褒颈。運行下面命令即可:
pod lib create [POD_NAME]
Setp3. 編輯.podsepc
文件
一個Podspec或者Spec,描述了一個Pod library的版本柒巫。它包含了很多細(xì)節(jié)。包括source file的地址谷丸,build setting的設(shè)置堡掏,依賴frameworks等,和一些其他的metadata刨疼,比如泉唁,名稱、版本揩慕、描述亭畜。下面是一個Grio's的private pod的Podspec文件:
Pod::Spec.new do |s|
s.name = "GrioCommon"
s.version = "1.1.7"
s.summary = "Common functions for Grio iOS apps"
s.description = <<-DESC
Common functions for Grio iOS apps. functionality includes:
* Universal User Settings
* Localytics libraries and support files
DESC
s.homepage = "[https://github.com/Grio/GrioCommoniOS](https://github.com/Grio/GrioCommoniOS)"
s.license = 'MIT'
s.author = { "Doug Kadlecek" => "dkadlecek@grio.com" }
s.source = { :git => "[https://github.com/Grio/GrioCommoniOS.git](https://github.com/Grio/GrioCommoniOS.git)", :tag => s.version.to_s }
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Pod/Classes/*.{h,m}'
s.resource_bundles = {
'GrioCommon' => ['Pod/Assets/*.*']
}
s.frameworks = 'UIKit'
s.dependency 'AFNetworking', '~> 2.4.1'
s.subspec 'Analytics' do |as|
as.source_files = 'Pod/Classes/Analytics/*.{h,m}', 'Pod/Classes/*.{h,m}'
as.dependency 'Localytics-iOS-Client', '~> 2.71.0'
end
s.subspec 'UserSettings' do |us|
us.source_files = 'Pod/Classes/UserSettings/*. {h,m}'
end
end
用Subspecs來組織Pod的功能和代碼,是一個很棒的辦法迎卤。注意拴鸵,因為CocoaPods自動為你的Pod創(chuàng)建Xcode Project,你必須要使用目錄而不是XCode來組織你的source 文件蜗搔,注意下面的命令:
s.resource_blundles = {
'GrioCommon' => ['Pod/Assets/*.*']
}
這里創(chuàng)建了一個source bundle劲藐,名為GrioCommon
,被放在Pod/Assets
目錄下面碍扔。
這些資源能從Pod里面訪問到瘩燥。
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle]
pathForResource:@"GrioCommon" ofType:@"bundle"]];
NSString *filePath = [bundle pathForResource:@"grio-user-settings" ofType:@"js"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
你能夠利用resource bundle里的資源訪問任何你需要的非編碼的文件秕重。
在Podspec文件中還有很多其他選項不同。你可以在CocoPods的官方地址中查看。
Setp4.Push your repo
現(xiàn)在你已經(jīng)建立并且測試了你的Pod(測試你的Pod溶耘,這一點很重要二拐,本人在這里折騰了很久),是時候部署你的Private Podsepc 倉庫了凳兵。
第一步為你的Pod的git倉庫打上標(biāo)簽(版本號)
git tag '1.1.7'
git push --tags
tag要和你的.Podspec 倉庫的版本號一樣百新。一旦你把tag,push到Pod倉庫庐扫,你就可以使用下面的命令了
pod repo push [REPO_NAME] [POD_NAME].podspec
把你的library饭望,push到已經(jīng)命名的private Podspec倉庫里嗎仗哨。如果你想要你團隊的其他成員能夠訪問并且使用你創(chuàng)建的private pod。你必須要把他們加為你的library的developer铅辞。
我們團隊使用的是GitLab來托管項目的厌漂,地址在我們自己的服務(wù)器上面。
或者斟珊,把私有倉庫添加到他們機器上的
~/.cocoapods/repos
目錄下苇倡。pod repo add [REPO_NAME] [SOURCE_URL]
Congratulations!你已經(jīng)發(fā)布了你的第一個Private Pod。你可以更簡單的享受重用code的樂趣了囤踩,在你的iOS project之間旨椒。
參考文檔如下
原文地址
官方Private Pod教程
在github上創(chuàng)建你自己的Public Pod