由於公司的項目比較多,多個項目之間有很多公共的東西,各種姿勢百度之后決定使用碼雲私有庫+cocoaPods的方式來管理公共部分的代碼(公司的代碼是不能公開的,所以用的是碼雲)。
本文講的是從頭開始的流程:
1、在碼雲上創建一個自己的私有倉庫,本人是使用的sourceTree在本地進行的版本管理
2、在終端,cd到你的項目文件目錄中,創建podspec文件:
pod spec create xxxxx
文件名最好與你的庫名字一致,庫名字最好不要與pods上其他庫名字重復
創建成功后,項目文件目錄下會多一個xxxxx.podspec的文件,這個相當於pods倉庫的配置文件,配置內容具體如下:
# 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
然后將代碼提交。
這個配置文件的配置內容很重要,配置的對錯,會決定你的代碼能否成功的推送到pods
3、為你的code打上tag版本號
git tag '0.0.1' git push --tags
版本號自己確定,與podspec配置文件內的版本號相匹配
4、注冊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郵箱
5、提交到CocoaPods trunk
pod trunk push --allow-warnings
該操作會對本地的代碼及podspec配置文件進行檢查,允許警告WARN但不允許報錯ERROR
也可以自己手動檢查
pod lib lint --allow-warnings
如果是在項目文件目錄下pod lib lint后面不需要跟xxxxx.podspec文件名,--allow-warnings是允許警告
6、上面的步驟成功之后
pod search 你的庫名
就能搜索到了
6、接下來是更新代碼,然后推送到pods的流程。
我的代碼庫里只是一些零散的文件,由於推送到pods的代碼不能報錯,所以我這里是新建了一個空項目,然后把公共依賴的文件放到一個文件夾內Classes(名字隨意),拖到項目中,在提交的時候先編譯一下,確保沒有報錯。
這樣做的同時podspec里
s.source_files的配置也要改為指定的文件目錄:項目名/Classes/**/*.{h,m}
本地文件改動后,提交到git
7、然后重復步驟3,為你的代碼打上tag,並推送tag(tag不能重復)
8、然后步驟5推送到trunk,這一步檢查的時候很容易失敗,報出的錯誤可以翻譯過來針對性的找一下問題,基本意思都很明確
以后在每個項目中之需要在Podfile文件中增加自己的庫,然后
pod install
每次有更新 pod update 你的庫名
即可
可以參考:發布自己的pods到CocoaPods trunk
https://www.cnblogs.com/richard-youth/p/4704413.html
在引用Masonry時,需要在podspec配置文件中增加
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }