*****************************注:之前網(wǎng)上參考各種文章,不是這里有問題就是那里報錯,最后終于搞定,記錄一下過程,讓看到的少走點坑***************************
一.iOS組件化本地操作**非上傳git版本**( 上傳git版本看第二部分 第一部分必看)
新建工程SXShellTest(名字寫你要創(chuàng)建的工程名字 這里我以SXShellTest為例講解)作為殼工程 ?
首先打開命令行工具
1、添加Podfile文件?
? ? cd到你剛創(chuàng)建的工程目錄下 以SXShellTest為例 打開終端 輸入 cd 把目標(biāo)文件夾拖進(jìn)來

? ? 回車后執(zhí)行 pod init ?這時候就生成了podfile文件
2、生成xcworkspace 執(zhí)行 pod install ?然后在此項目中創(chuàng)建一個文件夾 我這邊以lib為列

3、在lib文件夾下創(chuàng)建組件工程 我這邊以(WKWebTest--*是你自定義的一個工程名字,也就是你的其中一個組件或者業(yè)務(wù)模塊*)為例 ?執(zhí)行?pod lib create WKWebTest ? ?執(zhí)行后會出現(xiàn)填寫信息頁面 按下面內(nèi)容填寫

打開新建工程WKWebTest->WKWebTest->Classes,有個ReplaceMe的文件,意思就是要替換它,換成我們自己需要對外提供的類 這里我已經(jīng)替換了 替換后刪除ReplaceMe文件。


4、殼工程使用本地組件庫(WKWebTest ),修改殼工程(SXShellTest)項目中的Podfile文件,增加 pod 'WKWebTest', :path => 'Lib/WKWebTest'

cd到殼工程SXShellTest目錄下 執(zhí)行pod install?

二.iOS組件化創(chuàng)建私有庫(上傳git版本)**還是以上面創(chuàng)建的項目為列**
1、創(chuàng)建類似于CocoaPods的master ,所有的私有庫組件都放在這個里面

2、在終端中創(chuàng)建一個本地私有庫,在終端中輸入: pod repo add 需要創(chuàng)建的庫名字 這里我以xxxxxxs為列

然后和 github上剛才創(chuàng)建的關(guān)聯(lián) pod repo add xxxxxxs?https://github.com/你自己的賬號/xxxxxxs.git?(這個https是剛才創(chuàng)建的git地址)
至此一個包含所有組件庫的git創(chuàng)建好了?
接下來是向這個git中添加組件 想要添加那必須要先創(chuàng)建一個組件
3、創(chuàng)建一個新的組件 --在git上創(chuàng)建一個new repository ? ?寫上將要用的組件名字 (這個組件以上面創(chuàng)建的本地組件為列)

2、***注:執(zhí)行這步時候WKWebTest組件已經(jīng)在本地創(chuàng)建好了(如何創(chuàng)建:參照第一部分 這里就不再重復(fù)寫了)****?
cd到組件工程WKWebTest目錄下 執(zhí)行下面操作

第一次關(guān)聯(lián)git
git init? 初始化git
git add .?
git commit -m"init project" ? 提交初始化工程
git remote add origin https:你剛才創(chuàng)建的git地址 ? 讓這個工程和剛才在Github上創(chuàng)建的Repository關(guān)聯(lián)
git push origin master -f ? ?強(qiáng)制提交上去?
git tag 0.1.0 ? ? ? (版本號 第一次上傳)以后每次修改上傳都要迭代版本 (這個版本號就是類似第三方庫中AFNetworking控件的版本號)
git push --tags
刷新github 這時候已經(jīng)看到把代碼都傳到git上了 在releases里面就能看到版本號為0.1.0
3、這部比較關(guān)鍵 就是要把WKWebTest 組件的***索引文件(什么是索引文件:.podspec文件)***添加到之前創(chuàng)建的那個xxxxxxs(這個就是包含所有組件)
還是cd到組件工程WKWebTest目錄下
pod repo push <本地索引庫> <索引文件名> --allow-warnings 把git上的組件.podspec下載到本地索引庫中
例:pod repo push xxxxxxs WKWebTest.podspec --allow-warnings

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?************************************ffffffs是我創(chuàng)建的第二個組件庫 ************************************

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 打開github就會看到已經(jīng)上傳到git 上了 也就是本地和github上同時已經(jīng)有了

?如果再創(chuàng)建第二個組件的話 和創(chuàng)建第一個的方法一樣 上圖中 ffffffs就是第二個組件 所有的組件的(.podspec文件)都放在xxxxxxs中
4、殼工程怎么使用這些組件 還以第一步創(chuàng)建的 殼工程SXShellTest為例
? ? ? ·在殼工程的podfile文件中 添加source:組件在git上的地址
? ? ? ·然后把本地路徑改成從索引庫中獲取的方式pod 'WKWebTest','0.8.0' --->(0.8.0 是這個組件的版本)
? ? ? ·版本號根據(jù)你自己的需要獲取本地索引庫中已經(jīng)有的版本 類似于master里面的AFNetworking有各種不同的版本 用哪個寫哪個

?cd到殼工程SXShellTest目錄下 執(zhí)行pod install 這樣組件就到殼工程了
三.iOS組件 某個組件更新 還以WKWebTest這個組件為例
打開工程WKWebTest->WKWebTest->Classes,?只要組件中classes 添加了文件 或者文件中的代碼修改了?

1、然后再cd 到WKWebTest 目錄下 (因為是修改或者添加文件所以git時候不像第一次上傳那樣了)
? ? ? git add .
? ? ? git commit -m '注釋'
? ? ? git push origin master -f
? ? ? git tag -a '新版本號' -m '注釋' // 注意這里 只要是修改了需要重新打一個版本號
? ? ? git push --tags
? ? ? 然后打開WKWebTest文件夾 修改s.version 這個版本就是剛才你(git tag -a)的新版本號?

最后:pod repo push?xxxxxxs?WKWebTest.podspec --allow-warnings (這時候就把修改過內(nèi)容的版本 傳到了xxxxxxs中)打開~/.cocoapods/repos 文件夾 就會看到xxxxxxs文件夾中的WKWebTest組件庫里面的版本多了一個

2、殼工程中如何使用修改過的組件 ?
修改殼工程的podfile文件中的組件版本號

?cd到殼工程SXShellTest目錄下 執(zhí)行pod install 這樣組件中修改的內(nèi)容 就更新到了殼工程中了
四.總結(jié)
實施起來比較繁瑣,步驟比較多也是容易出錯的關(guān)鍵 其實想明白的話操作也挺容易
組件化固然不錯 但是比較適合中大型項目 還是要根據(jù)自己的項目實施 ?
本文時間倉促,也參考了別人的文章(看的比較多鏈接也沒留存,望見諒)可能有些地方敘述不到位和不合理或理解錯誤,望各位指正,共同進(jìn)步!?。。。。。。。。。。。。。。。。?!