iOS 組件化必經(jīng)之路—創(chuàng)建私有庫,這里記錄一下創(chuàng)建過程,以及遇到的坑。
需要的知識點
- it 相關(guān)指令
- cocoaPod相關(guān)知識點(電腦正確安裝了pod)
- ssh Git配置多個SSH-Key
準備工作
1、有一個私有代碼倉庫(github、gitlab、碼云、騰訊云 )
2、創(chuàng)建兩個私有項目(一個存放索引、另外一個存放源代碼)
一、創(chuàng)建私有庫的索引庫
1、在碼云中創(chuàng)建私有庫的索引庫(拷貝項目路徑https://gitee.com/whityStyle/ZLRepo.git\給下一步使用備用)
創(chuàng)建私有庫的索引庫,這句話有些繞口,我們分開來看:
- 私有庫:指的是我們真正放置組件代碼的地方。
- 索引庫:存放spec文件的地方,用于索引到代碼的位置。
2、將創(chuàng)建的索引庫添加到本地cocoapods倉庫
<1> cocoapods本地倉庫路徑(command + shift + G)
$ ~/.cocoapods/repos
<2> 在本地添加一個自己的遠程索引庫(路徑為上一步拷貝的項目路徑)
pod repo add ZLRepo https://gitee.com/whityStyle/ZLRepo.git
這時候在~/.cocoapods/repos目錄下會生成一個名為ZLRepo的文件夾,
二、制作組件
1、創(chuàng)建模版, 在指定的目錄下(最好固定方便以后修改)
$ cd ../../..指定的目錄
$ pod lib create ZLDemoTool
通過該命令會自動創(chuàng)建一個模板工程,里面包含我們需要的索引文件,格式為spec,接下來通過該模板文件來制作我們自己的組件。
終端得到以下界面:

這里會詢問幾個問題(答案根據(jù)實際情況設(shè)置),分別是:
1、語言選擇
—— 教程選擇Objc,如果要做Swift私有庫,請選擇輸入Swift
2、是不是需要一個demo項目工程
? —— 教程選擇Yes,需要創(chuàng)建一個demo工程,建議創(chuàng)建一個demo工程
3、測試框架使用哪一個
? —— 教程選擇None
4、是不是需要做基本的測試
? —— 教程選擇Yes
5、類前綴是什么
? —— 教程輸入LAT
2、將我們自己的組件放入指定目錄
- 將源碼文件復(fù)制到文件夾路徑:ZLDemoTool/ZLDemoTool/Classes下。
-
資源文件放到Assets下。
image.png
模板文件中會看到一個Development pods的文件夾,這個文件夾代表的是本地的組件庫,這里我們把Tool文件(也就是我們自己制作的組件)放在指定的文件夾,然后引入到工程中.
至此,我們的本地第三方組件已經(jīng)制作完成,現(xiàn)在可以通過在終端執(zhí)行pod install看看效果了(cd 到example文件夾下)!當(dāng)然,我們肯定不會局限于本地,接下來就是如何制作線上組件庫了!
3、將制作好的組件上傳至碼云
在項目工程文件下執(zhí)行g(shù)it相關(guān)指令,發(fā)布到git。
$ git remote add origin https://git.oschina.net/ZLDemoTool/ZLDemoTool.git
$ git add .
$ git commit -a -m "初始化"
$ git pull origin master --allow-unrelated-histories
$ git push origin master
4、更改模板文件相關(guān)信息

我們打開Xcode工程,找到.podspec后綴的文件,更改s.summary,這個是顯示在pod search的簡短描述,s.version是版本號,我這里修改為0.0.1,下面再主要修改一個s.homepage和s.source中的地址為我們創(chuàng)建組件倉庫的地址即可!
#
# Be sure to run `pod lib lint ZLDemoTool.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'ZLDemoTool'
s.version = '0.0.1'
s.summary = 'ZLDemoTool use desc.'
s.description = <<-DESC
TODO: ZLDemoTool use desc.
DESC
s.homepage = 'https://gitee.com/whityStyle'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '劉磊' => 'liulei10luojia@163.com' }
s.source = { :git => 'https://gitee.com/whityStyle/ZLDemoTool.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = 'ZLDemoTool/Classes/**/*'
# s.public_header_files = 'Pod/Classes/**/*.h'
s.frameworks = 'UIKit'
end
5、驗證spec文件

$ pod lib lint --private
如果出現(xiàn)警告,可以將
s.homepage = '[https://gitee.com/Qinz_323/Tool](https://gitee.com/Qinz_323/Tool)'
改為
s.homepage = '[https://gitee.com/Qinz_323](https://gitee.com/Qinz_323)'
驗證通過后的截圖

6、將修改的.podspec文件上傳到碼云
$ git commit -a -m " 注釋"
$ git push origin master
7、給版本打一個分支
此處的0.0.1版本號要與spec文件的保持一致
$ git tag 0.0.1
$ git push --tags
三、建立關(guān)聯(lián)
在項目的根目錄下操作
$ pod repo push ZLRepo ZLDemoTool.podspe
成功后的截圖

通過這一步我們就同步好了遠程和本地索引庫,到此,私有庫已經(jīng)制作完畢!
使用 驗證
注意:podfile文件里要加上
source 'https://github.com/CocoaPods/Specs.git'
source 'https://gitee.com/whityStyle/ZLDemoTool.git'
配置
如果你不配置系統(tǒng)的索引庫 會找不到其他的庫 只能找到你自己創(chuàng)建的倉庫

總結(jié)
- 私有庫:是我們真正放置組件代碼的地方。
- 索引庫:存放spec文件的地方,用于索引到代碼的位置。
由于未保存截圖,引用了部分其他截圖(后續(xù)會補全所有源截圖),如發(fā)現(xiàn)有問題,可共同交流
參考:侵立刪
有g(shù)if
流程疏離
trunk的注冊使用發(fā)布
