最近專案長的太肥了,應該要來瘦身一下。CocoaPods是一個很方便的管理工具,可以把專案分成幾個小的模組(Pods)方便日後的管理。如果不想把程式碼放在Github上給別人看光光怎麼辦?很簡單,用bitbucket就好了,private repository不用錢,想開幾個就開幾個。不過私有的程式碼是沒辦法放在CocoaPods官方的spec裡面的。所以該怎麼辦呢?
解法1:使用development pod
產生development pod
用cocoapods內建的小工具來建立一個新的pod
pod lib create myDevelopmentPod
修改myDevelopmentPod.podspec
然後把.m、.h、.swift複製進去就行啦
把development pod加入專案
修改專案的Podfile,加入development pod
pod 'myDevelopmentPod', :path => '~/MyProjects/myDevelopmentPod'
然後執行
pod install
解法2:使用private pod
產生一個新的spec
要先創造一個private spec repository
mkdir MYSpecs
cd MYSpecs
git init
git remote add origin git@bitbucket.org:my_account/my_specs.git
git commit -m 'Initial commit'
git push -u origin master
上傳到bitbucket之後,就能把MYSpecs的資料夾給砍了
rm -rf MYSpecs
告訴CocoaPods我們要新增一個自己的spec
pod repo add MYSpecs git@bitbucket.org:my_account/my_specs.git
CocoaPods會把這個spec複製一份下來,放在~/.cocoapods/repos
裡面
創建private pod
用內建的指令幫我們創建一個新的pod
pod lib create myPrivatePod
回答幾個問題就建好了
myPrivatePod.podspec
的內容如下
Pod::Spec.new do |s|
s.name = "myPrivatePod"
s.version = "0.1.0"
s.summary = "A short description of myPrivatePod."
s.description = <<-DESC
An optional longer description of myPrivatePod
* Markdown format.
* Don't worry about the indent, we strip it!
DESC
s.homepage = "https://github.com/<GITHUB_USERNAME>/myPrivatePod"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "" => "" }
s.source = { :git => "https://github.com/<GITHUB_USERNAME>/myprivatepod.git", :tag => s.version.to_s }
# 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 = {
'myPrivatePod' => ['Pod/Assets/*.png']
}
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
end
把要改的東西改一改吧
要注意預設的license是MIT,既然我們不想開源,就改成
s.license = 'proprietary'
改完之後存檔
另外LICENSE檔案也要改掉,在命令列下輸入
echo -e "Copyright (c) 2015, MyCompany\nAll right reserved." > LICENSE
最後驗證podspec的內容是否正確
pod lib lint --allow-warnings
Cocoapods很龜毛,有可能產生一些警告訊息。但是我們是自己用,不用這麼麻煩,加入--allow-warnings
讓驗證程式忽略這些錯誤
測試private pod
找一個專案修改它的Podfile,把創建出來的pod以development pod的形式加進去
pod 'myPrivatePod', :path => '~/MyProjects/myPrivatePod'
測試pod和專案的整合有沒有遇到問題
上傳private pod
測試通過之後,把private pod上傳到bitbucket
git tag -m "first release" 0.1.0
git push --tags
再把private pod加入到我們的spec裡面
pod repo push --allow-warnings MYSpecs myPrivatePod.podspec
安裝pod
簡單,指定private spec的位置,再把private pod加到專案的Podfile
source 'git@bitbucket.org:my_account/my_specs.git'
pod 'myPrivatePod'
再執行pod install
pod更新
別忘了myPrivatePod.podspec的版本編號也要修改
在把修改過的程式push
之後,執行
git tag -m "second release" 0.2.0
git push --tags
pod repo push --allow-warnings MYSpecs myPrivatePod.podspec
刪除private spec
如果不想要再用private spec的話,用以下命令移除spec
pod repo remove MYSpecs
總結:該用那個呢?
development pod的好處是方便管理,想改code就直接在Xcode裡面改好。不必像private pod那樣改完之後還要commit
、push
、pod install
。缺點是無法和其它的專案分享程式碼。如果要在不同的專案內使用同樣的pod,那private pod是唯一的選擇。