在WWDC 2014全球開發者大會上,蘋果開放了動態庫、App Extension等全新的功能,這爲iOS插件化開發帶來了可能。在iOS開發中,動態庫是iOS提供的一種資源打包方式,能夠將代碼文件、頭文件、資源文件和說明文檔等集中在一塊兒,而且能夠在運行時進行動態加載。ios
目前,不少應用越作越複雜,應用程序也顯得愈來愈臃腫。試想一下,若是將一些不經常使用的功能作成一個插件,而後根據用戶的需求從網絡中下載,這樣最大限度的利用了系統資源,這也是插件化開發的初衷。git
傳統使用第三方庫的劣勢github
使用Cocoapods管理第三方庫的優點json
trunk須要CocoaPods 0.33以上版本,可使用pod --version命令來查看本地的版本。 bash
若是版本過低,可使用下面的指令升級:sudo gen install cocoapods
pod setup
複製代碼
接下來,須要查看本身是否註冊過Trunk。網絡
pod trunk me
複製代碼
若是沒有註冊,可使用下面的命令進行註冊:工具
pod trunk register zhangyqyx@163.com "zhangyqyx" --verbose
複製代碼
其中,zhangyqyx表示名字,zhangyqyx@163.com表示註冊的郵箱。註冊時,系統會發送一個驗證連接到你的郵箱,驗證經過後即註冊成功。註冊成功後再次使用命令pod trunk me查看。 ui
##2, 建立GitHub倉庫 要完成插件化開發的需求,首先須要在GitHub中建立一個遠端的託管倉庫。以下圖: url
將項目克隆下來到本地,並添加公開庫文件相關的信息,代碼上傳和下載建議使用SourceTree等圖形化工具進行操做。 spa
##3, podspec 使用以下命令建立.podspec文件,建立的命令以下:
pod spec create pluginPods
複製代碼
其中,CardBannerView爲庫的名稱。而後,打開並編輯.podspec文件。
Pod::Spec.new do |s|
s.name = 'pluginPods'
s.version = '0.0.3'
s.summary = '自定義輪播插件'
s.homepage = 'https://github.com/xiangzhihong/pluginPods'
s.license = 'MIT'
s.authors = {'xiangzhihong' => '1044817967@qq.com'}
s.platform = :ios, '8.0'
s.source = {:git => 'https://github.com/xiangzhihong/pluginPods.git', :tag => s.version}
s.source_files = 'pluginPods/*'
end
複製代碼
其中,上面配置的具體的含義爲:
dependency寫法:
s.dependency = 'AFNetworking' , 'SDWebImage'
複製代碼
source_files寫法:
'runtime/*'
'runtime/runtime/*.{h,m}'
'runtime/**/*.h'
複製代碼
其中,
接下來,將你的源碼添加到剛纔s.source_files配置的目錄。若是是OC編寫的還須要配置公開的頭文件。此處,我使用的是Swift編寫的,就無論那麼多了,若是有任何語法上的警告請忽略相關的警告。
將包含配置好的 .podspec, LICENSE 的項目提交 Git。命令以下:
git tag "v0.0.1" // 若是出現錯誤,試一下不加v的狀況
git push --tags
複製代碼
或者,直接使用sourcetree等圖形化工具進行操做。例如:
若是咱們的tag打錯了,沒有用的話,咱們應該怎麼刪除呢?能夠參考下面的方法: 一、查看tags git tag 就會羅列出咱們全部的tags
二、刪除本地tags git tag -d + 分支名稱就會刪除本地的分支
三、刪除遠程分支 git push origin :refs/tags/分支名稱 就刪除了遠程分支
爲了驗證是否上傳成功,能夠驗證.podspec文件,命令以下:
pod spec lint WeexHMGesUnlock.podspec --verbose
複製代碼
若是出現這種警告性的問題,咱們能夠直接忽略。
pod lib lint --allow-warnings
複製代碼
若是出現這種狀況,多是你的那個版本找不到這個文件。
發佈時會驗證 Pod 的有效性,若是你在手動驗證 Pod 時使用了 --use-libraries 或 --allow-warnings 等修飾符,那麼發佈的時候也應該使用相同的字段修飾,不然出現相同的報錯。
pod trunk push pluginPods.podspec
複製代碼
若是出現 --use-libraries 或 --allow-warnings 等修飾符警告,可使用以下的命令:
pod trunk push pluginPods.podspec --allow-warnings
複製代碼
使用下面的命令來驗證,是否上傳成功。
pod search pluginPods
複製代碼
若是碰到上面的狀況,你能夠刪除搜索的文件路徑,而後從新生成。命令以下:
rm ~/Library/Caches/CocoaPods/search_index.json
pod setup
複製代碼
若是仍是不行,估計是在你的項目還在審覈中,你能夠經過其餘輔助手段去驗證。例如,使用pod trunk me命令:
固然,你也能夠在 CocoaPod官網中進行搜索。 若是沒有任何的錯誤,你將看到以下的搜索結果: 若是剛纔是用 pod lib lint 驗證成功的,就執行如下命令發佈。pod trunk push pluginPods.podspec
複製代碼
若是剛纔是用 pod lib lint --allow-warnings 驗證成功的,就執行如下命令發佈。
pod trunk push pluginPods.podspec --allow-warnings
複製代碼
TIP:集成時如搜索不到,能夠試着執行pod setup或pod repo update指令來更新pod,pod search搜索不到時,能夠刪除~/Library/Caches/CocoaPods下的search_index.json文件以更新索引(pod search搜索不到並不影響集成),由於國內使用的時鏡像,也能夠稍等一段時間後再更新。
建立私有庫和建立Git庫的流程大致類似:
一、建立一個私有的項目 能夠是公司本身的git管理工具、也能夠是碼雲上的,建立方法能夠參考Git倉庫的建立過程。
二、建立.podspec 使用pod spec create命令建立xxx.podspec文件。
三、編輯.podspec文件 編輯podspec文件,主要是添加項目庫、託管地址、版本號、暴露的文件等。
四、上傳到Git 將包含配置好的 .podspec, LICENSE 的項目提交 Git或私有云。
五、打tag
六、驗證.podspec文件 使用pod spec lint來驗證podspec文件是否配置正確,若是有任何的錯誤,請根據錯誤提示進行修改。若是是warning能夠忽略,在指令後面添加--allow-warnings便可。例如:
pod lib lint --allow-warnings
複製代碼
七、添加一個私有庫並和項目地址作綁定
pod repo add xxx github.com/xiangzhihon…
八、向私有的庫裏添加podspec文件
九、新建一個項目進行驗證
新建一個Xcode項目,在podfile中添加引用腳本,看是否可以成功的依賴,添加時注意版本號。
pod 'pluginPods', '~> 0.0.3'
若是,沒有任何提示錯誤,則說明自定義插件建立成功。