1. 程式人生 > >iOS元件化開發-釋出私有庫

iOS元件化開發-釋出私有庫

遠端索引庫

將遠端索引庫添關聯到本地

pod repo 檢視本地已關聯倉庫源
pod repo add  本地索引庫名稱 遠端索引庫倉庫地址
pod repo update 索引庫名稱
pod repo remove 本地索引庫名稱

 執行命令 新增遠端索引庫`KTPodSpecs`克隆到本地

遠端庫 

新建框架工程KTUIKit

利用模板自動生成私有庫工程 

pod lib create 框架名稱
pod lib create KTUIKit

生成的工程依賴關係

KTUIKit的示例工程的podfile配置spec的路徑是相對於本地podfile的路徑

編寫PodSpec 

依賴第三方庫

framewirks:依賴系統的動態庫 比如 UIKit
vendored_framework:依賴非系統的動態庫 比如TencentOpenAPI.framework
libraries:依賴系統靜態庫 比如libstdc++.a
vendored_libraries:依賴非系統的靜態庫 比如新浪微博的libWeiboSDK.a
dependency:依賴pod庫

上傳框架到遠端倉庫 

 新建遠端倉庫

進入本地KTUIKit目錄執行Git命令 與遠端KTUIKit建立關聯

git remote add origin https://github.com/coderketao/KTUIKit.git
git branch --set-upstream-to=origin/master master 本地分支遠端分支建立track

 

建立關聯後,本地KTUIKit push到遠端倉庫 注意:push過程記得一定將Pods和Podfile.lock檔案忽略,否則導致pod install和pod repo push很慢

遠端master分支新增tag 執行命令

git tag '0.1.0' 新增
git push --tags
git tag -d 0.1.0 刪除
git push origin :0.1.0

私有庫釋出

將podspec檔案到遠端索引庫 執行命令 驗證`KTUIKit.podspec`是否合法

pod lib lint KTUIKit.podspec --allow-warnings --use-libraries 驗證本地

執行命令 釋出podspec到遠端索引倉庫

pod repo push KTPodSpecs KTUIKit.podspec --allow-warnings --use-libraries 

在構建元件時,如果該元件引用了其它庫

s.dependendy 'SDWebImage'
s.dependendy 'AFNetWorking'

在驗證、推送遠端索引庫加上pod的source

pod lib lint KTUIKit.podspec --sources='http://47.93.191.194:9002/hongketao/QXComponentSpecs.git,https://github.com/CocoaPods/Specs.git' --allow-warnings --use-libraries 

pod repo push KTPodSpecs KTUIKit.podspec --sources='http://47.93.191.194:9002/hongketao/QXComponentSpecs.git,https://github.com/CocoaPods/Specs.git' --allow-warnings --use-libraries 

 

私有庫使用

新建專案,應用私有庫 

 podspec的寫法

~> 1.2.0 要求版本 [1.2.0, 2.0.0)
<= 1.2.0 版本小於等於1.2.0 超過後1.2.0後不再更新

指定三方庫本地路徑的寫法(用於提交前進行測試)

pod 'AFNetworking', :path => '~/Desktop/AFNetworking'

指定git的寫法

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git'

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :branch => 'dev'

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '3.1.1'

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :commit => '0f506b1c45'

指定podspec的寫法

pod 'AFNetworking', :podspec => '~/Desktop/AFNetworking/AFNetworking.podspec'

指定subspecs的寫法(這也是subspec的另一個用法

pod 'MyThirdparty', '~> 0.0.1', :subspecs => ['Sparta', 'GotyeSDK', 'TalkingData', 'Tingyun', 'BaiduPanorama']