iOS組件化開發(fā)之路(CTMediator)麸拄,涉及到cocoapods本地庫、遠程私有庫黔姜、遠程公開庫(一)
二拢切、遠程私有倉庫 + 組件化
其實頁面的跳轉(zhuǎn)方法和本地庫的跳轉(zhuǎn)方法是一樣的,麻煩就麻煩在配置遠程私有倉庫這里秆吵,今天我細致板牙的給喃們講講遠程私有倉庫的創(chuàng)建淮椰。
今天我們這個教程就以淘寶和天貓為例。
1. 首先我們還是新建一個大文件夾,命名為AlibabaProject主穗,一會項目都放進這里看著立整
2. 新建工程泻拦,命名為Taobao
3. 設(shè)置一下證書和版本號還有一些基本代碼,讓項目可以跑起來
運行起來應(yīng)該是這樣嬸兒的
主工程到此為止先告一段落争拐,下面我們要開始遠程私有庫的創(chuàng)建了晦雨,每一步都是關(guān)鍵
劃重點
4. 首先需要索引的文件創(chuàng)建一個遠程的私有庫,好多博客有的用代碼創(chuàng)建闹瞧、有的創(chuàng)建時機在后面绑雄,總之就是亂七八糟的看的一頭霧水奥邮,這里我就簡單粗暴,能點的就不用代碼
在碼云創(chuàng)建倉庫
解釋一下這個倉庫是用來做什么的:這個倉庫不是用來存儲我們每次開發(fā)的代碼的洽腺,當(dāng)我們想把自己封裝好的類給外界分享時就好比pod "AFNetworking"會將AFN的包引進來而不是引進來整個項目脚粟,那么你抽出去的那部分代碼需要打一個tag版本且有唯一的tag版本號已脓,索引庫會關(guān)聯(lián)上這個打上了tag版本號的包,在你搜索pod search或安裝的時候才會下載指定路徑下的包文件厕宗。
5. 打開Finder已慢,進入.cocoapods文件夾
看到這個master文件夾沒霹购,這個就是Cocoapods公共的索引庫,你搜索的那些三方庫的索引都在這里面呢膜楷,如果你做的是公共的三方依賴庫那么你的索引就會加到這個文件夾中赌厅,但是我們現(xiàn)在要做的是私有的依賴庫轿塔,所以我們要為自己的依賴庫創(chuàng)建一個索引文件夾
打開終端
$ pod repo add TmallOpenSpec https://gitee.com/moment_forever/TmallOpenSpec.git
在你的目錄中會多出這樣一個文件夾
使用pod repo命令可以查看你本地存在的索引庫
6. 開始準(zhǔn)備天貓工程
先為天貓工程開一個私有倉庫
新建天貓工程揍障,并與倉庫關(guān)聯(lián)上,配置好證書什么的讓項目可以跑起來癌蚁,記得修改工程支持的系統(tǒng)版本10.0审胚,此時文件應(yīng)該是這樣的
簡單配置一下工程膳叨,配置出我們的天貓商品詳情頁還有Targets,是不是忘記Targets是什么了菲嘴?這個是我們路由跳轉(zhuǎn)需要用到的關(guān)聯(lián)文件,照著我的圖配好你們的工程
AppDelegate.m
Targets/Target_TmallDetail.h
Targets/Target_TmallDetail.m
TmallDetailViewController/TmallDetailViewController.m
7. 工程已經(jīng)準(zhǔn)備好健田,下面為工程創(chuàng)建索引依賴文件
進入工程的目錄,就在倉庫的那層跟目錄就行
$ pod spec create Tmall
創(chuàng)建出來就這樣的
8. 配置Tmall.podspec文件总放,這個地方要注意我紅框圈起來的位置
9. 配置好文件后局雄,將所有文件提交到遠程倉庫上面
10. 為你的工程打上tag(此處的tag版本號是要和你podspec文件里面的spec.version字段相對應(yīng)的)
$ git tag 0.0.1
將tag推到遠端
$ git push --tags
11. 驗證spec文件的有效性(本地和遠程)
本地
$ pod lib lint Tmall.podspec --allow-warnings
遠程
$ pod spec lint Tmall.podspec --allow-warnings
驗證通過的示例
如果沒通過驗證怎么辦炬搭,不要慌
如果驗證出錯需要修改spec文件(如何修改spec文件呢宫盔,看提示你的ERROR里面的內(nèi)容享完,不要看WARN驼侠,在各種地方查詢錯誤,嘗試修改苛预,在這個過程總你會開始更深入的理解這個文件的用法笋熬,這才是讓你成長的地方)
重新提交文件,并重新打tag
刪除之前的tag命令
git tag -d 0.0.1
git push origin :refs/tags/0.0.1
12. 驗證都通過了之后將項目spec文件與本地索引庫文件關(guān)聯(lián)
$ pod repo push TmallOpenSpec Tmall.podspec --allow-warnings
檢驗一下
$ pod search Tmall
13. 在主工程Taobao中新建Podfile文件并pod 'Tmall'
source 'https://gitee.com/moment_forever/TmallOpenSpec.git'
platform :ios, '10.0'
target 'Taobao' do
pod 'Tmall', '0.0.1'
end
上面的source就是用我們自己創(chuàng)建的索引庫去查找依賴框架的
這個source是哪里來的呢昔馋,就是我們pod repo時如下圖中紅框中的內(nèi)容
14. 執(zhí)行pod install打開Taobao工程秘遏,查看引入的私有組件庫
組件工程準(zhǔn)備好了之后嘉竟,我們使用同樣的方法創(chuàng)建組件工程的分類工程
15. 新建Tmall_Cagetory的私有倉庫
16. 關(guān)聯(lián)到本地舍扰,新建工程边苹,關(guān)聯(lián)進倉庫,配置工程版本號慕购、證書
17. 為Tmall_Category工程添加CTMediator三方依賴庫
platform :ios, '10.0'
target 'Tmall_Category' do
pod 'CTMediator'
end
安裝好之后應(yīng)該是這樣的
18. 新建分類的文件夾及文件
還記得怎么映射的嗎
19. 配置Tmall_Category的podspec文件
新建
$ pod spec create Tmall_Category
配置
Pod::Spec.new do |spec|
spec.name = "Tmall_Category"
spec.version = "0.0.1"
spec.summary = "A short description of Tmall_Category."
spec.homepage = "https://gitee.com/moment_forever/Tmall_Category"
spec.author = { "Cloud" => "haohao10987@163.com" }
spec.platform = :ios, "10.0"
spec.source = { :git => "https://gitee.com/moment_forever/Tmall_Category.git", :tag => "#{spec.version}" }
spec.subspec 'Tmall_Category' do |sub|
sub.source_files = "Tmall_Category/Tmall_Category/Tmall_Category/*.{h,m}"
end
spec.dependency "CTMediator"
end
20. 全部提交到倉庫桩警,打上tag
$ git tag 0.0.1
$ git push --tags
21. 本地和遠程的驗證
本次的驗證由于CTMediator用了一些系統(tǒng)底層的庫,所以在驗證時要加--use-libraries參數(shù)
$ pod lib lint Tmall_Category.podspec --allow-warnings --use-libraries
$ pod spec lint Tmall_Category.podspec --allow-warnings --use-libraries
22. 為Tmall_Category.podspec文件與索引文件關(guān)聯(lián)握截,但是目前我們還沒有為Tmall_Category創(chuàng)建索引關(guān)聯(lián)文件谨胞,接下來創(chuàng)建
23. 創(chuàng)建Tmall_CategoryOpenSpec的遠程私有倉庫
23. 將托管平臺的索引庫地址添加到本地的repo倉庫中去
$ pod repo add Tmall_CategoryOpenSpec https://gitee.com/moment_forever/Tmall_CategoryOpenSpec.git
在我們本地的.cocoapods文件夾中會多出Tmall_Category的索引文件夾
24. 將項目spec文件與本地索引庫文件關(guān)聯(lián)
$ pod repo push Tmall_CategoryOpenSpec Tmall_Category.podspec --allow-warnings --use-libraries
搜索一下檢查
$ pod search Tmall_Category
25. 在我們的主工程Taobao的Podfile文件里面添加內(nèi)容
26. 安裝
$ pod install
安裝好后應(yīng)該是這樣的