因爲公司的項目比較多,多個項目之間有不少公共的東西,各類姿式百度以後決定使用碼雲私有庫+cocoaPods的方式來管理公共部分的代碼(公司的代碼是不能公開的,因此用的是碼雲)。html
本文講的是從頭開始的流程:ios
一、在碼雲上建立一個本身的私有倉庫,本人是使用的sourceTree在本地進行的版本管理git
參考:使用碼雲建立屬於你的免費私有git倉庫ssh
二、在終端,cd到你的項目文件目錄中,建立podspec文件:ui
pod spec create xxxxx
文件名最好與你的庫名字一致,庫名字最好不要與pods上其餘庫名字重複url
建立成功後,項目文件目錄下會多一個xxxxx.podspec的文件,這個至關於pods倉庫的配置文件,配置內容具體以下:spa
# Pod::Spec.new do |s| # s.name = "PodTestLibrary" #名稱 # s.version = "0.1.0" #版本號 # s.summary = "Just Testing." #簡短介紹,下面是詳細介紹 # s.description = <<-DESC # Testing Private Podspec. # DESC # s.homepage = "https://git.oschina.net/wuhongxing/PrivateRepo.git" #主頁,這裏要填寫能夠訪問到的地址,否則驗證不經過 # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" #截圖 # s.license = 'MIT' #開源協議 # s.author = { "wtlucky" => "wtlucky@foxmail.com" } #做者信息 # s.source = { :git => "https://git.oschina.net/wuhongxing/PrivateRepo.git", :tag => "0.1.0" } #項目地址,這裏不支持ssh的地址,驗證不經過,只支持HTTP和HTTPS,最好使用HTTPS # s.social_media_url = 'https://twitter.com/<twitter_username>' #多媒體介紹地址 # s.platform = :ios, '8.0' #支持的平臺及版本 # s.requires_arc = true #是否使用ARC,若是指定具體文件,則具體的問題使用ARC # s.source_files = 'Pod/Classes/**/*.{h,m}' #代碼源文件地址,**/*表示Classes目錄及其子目錄下全部文件,若是有多個目錄下則用逗號分開,若是須要在項目中分組顯示,這裏也要作相應的設置
# s.resource_bundles = { # 'PodTestLibrary' => ['Pod/Assets/*.png'] # } #資源文件地址 # s.public_header_files = 'Pod/Classes/**/*.h' #公開頭文件地址 # s.frameworks = 'UIKit' #所需的framework,多個用逗號隔開 # s.dependency 'AFNetworking', '~> 2.3' #依賴關係,該項目所依賴的其餘庫,若是有多個須要填寫多個s.dependency # end
而後將代碼提交。.net
這個配置文件的配置內容很重要,配置的對錯,會決定你的代碼可否成功的推送到pods翻譯
三、爲你的code打上tag版本號code
git tag '0.0.1' git push --tags
版本號本身肯定,與podspec配置文件內的版本號相匹配
四、註冊trunk
pod trunk register xxxx@xxxx.com 'xxxx' --description='xxxx' --verbose
xxxx@xxxx.com一個可用的郵箱,註冊成功以後會收到一份郵件須要點開
'xxxx'用戶名
--description='xxxx'描述
--verbose若是出現錯誤,顯示更多信息
查看本身的信息:
pod trunk me
添加其餘維護者
pod trunk add-owner xxxxxxx xxxxx@xxxx.com
xxxxxxx 庫的名字
xxxxx@xxxx.com 其餘人的trunk郵箱
五、提交到CocoaPods trunk
pod trunk push --allow-warnings
該操做會對本地的代碼及podspec配置文件進行檢查,容許警告WARN但不容許報錯ERROR
也能夠本身手動檢查
pod lib lint --allow-warnings
若是是在項目文件目錄下pod lib lint後面不須要跟xxxxx.podspec文件名,--allow-warnings是容許警告
六、上面的步驟成功以後
pod search 你的庫名
就能搜索到了
六、接下來是更新代碼,而後推送到pods的流程。
個人代碼庫裏只是一些零散的文件,因爲推送到pods的代碼不能報錯,因此我這裏是新建了一個空項目,而後把公共依賴的文件放到一個文件夾內Classes(名字隨意),拖到項目中,在提交的時候先編譯一下,確保沒有報錯。
這樣作的同時podspec裏
s.source_files的配置也要改成指定的文件目錄:項目名/Classes/**/*.{h,m}
本地文件改動後,提交到git
七、而後重複步驟3,爲你的代碼打上tag,並推送tag(tag不能重複)
八、而後步驟5推送到trunk,這一步檢查的時候很容易失敗,報出的錯誤能夠翻譯過來針對性的找一下問題,基本意思都很明確
之後在每一個項目中之須要在Podfile文件中增長本身的庫,而後
pod install
每次有更新 pod update 你的庫名
便可
能夠參考:發佈本身的pods到CocoaPods trunk
http://www.javashuo.com/article/p-wefwgsii-et.html
在引用Masonry時,須要在podspec配置文件中增長
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }