前言
項(xiàng)目大了或者多了之后都會(huì)遇到維護(hù)和編譯慢的一個(gè)問題鲁驶。組件化管理一些公用的內(nèi)容既方便開發(fā)也方便管理驼鞭。
網(wǎng)上私有庫創(chuàng)建的教程很多缨历,但是確實(shí)會(huì)遇到一些奇葩問題揪罕,特在此記錄一下我完整的創(chuàng)建到最終引用私有庫的全過程。
創(chuàng)建(私有庫github收費(fèi)锭硼,所以我使用https://gitee.com碼云)
1房资、創(chuàng)建私有索引庫
復(fù)制創(chuàng)建好的庫的鏈接
# pod repo add [Private Repo Name] [git https url]??
?比如:$ pod repo add hrSpecs??https://gitee.com/HRChen/hrSpecs.git
此時(shí)會(huì)在~/.cocoapods/repos目錄下看到你的【Private Repo Name】的文件夾。
2檀头、創(chuàng)建私有代碼庫
此時(shí)利用pod 命令創(chuàng)建庫的模板
# pod lib create [projectName]
例如 $ pod lib create PrivateKit?
控制臺(tái)會(huì)先下載模板轰异,然后順序彈出選項(xiàng)讓你配置一些基本信息
GavindeMacBook-Pro:~ gavin$ pod lib create PrivateKit
Cloning `https://github.com/CocoaPods/pod-template.git` into `PrivateKit`.
Configuring PrivateKit template.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
If this is your first time we recommend running through with the guide:?
?-https://guides.cocoapods.org/making/using-pod-lib-create.html
?( hold cmd and double click links to open in a browser. )
What platform do you want to use?? [ iOS / macOS ]
?>?
What platform do you want to use?? [ iOS / macOS ]
?>ios
What language do you want to use?? [ Swift / ObjC ]
?>swift
Would you like to include a demo application with your library? [ Yes / No ]
?>yes
Which testing frameworks will you use? [ Quick / None ]
?>None
Would you like to do view based testing? [ Yes / No ]
?>no
根據(jù)需要填寫上面的問題。完成后悔自動(dòng)xcode打開PrivateKit的項(xiàng)目
到example 文件目錄下? 備注:只有此處是在example目錄下運(yùn)行暑始,其余的命令全部在項(xiàng)目根目錄Privatekit文件夾下運(yùn)行
$ pod install??
然后按照需求更改podspec 文件的各項(xiàng)答案(模板基本填寫搭独,只需要將一些鏈接更改成我們自己的鏈接,以及summary和description等)
更改完成后可以使用命令
$ pod lib lint 檢查是否有效
備注:可以使用另外后綴語法 過濾無關(guān)緊要的信息或者查看錯(cuò)誤的詳細(xì)信息廊镜,
--private 可以過濾一些私有庫可以忽略的警告
--verbose 獲得更詳細(xì)的日志
等等...
(可能會(huì)遇到swift版本設(shè)置)下面可以解決
#?echo?"[version]"?> .swift-version
$ echo?"3.0"?> .swift-version
直到控制臺(tái)顯示
?PrivateKit passed validation.
將代碼推送到之前建立的PrivateKit的遠(yuǎn)程服務(wù)器上
$ git add .
$ git commit -s -m "XXX"
$ git remote add origin https://gitee.com/HRChen/PrivateKit.git#添加遠(yuǎn)端倉庫
$ git push origin master#提交到遠(yuǎn)端倉庫
$ git tag? 0.1.0? #打上標(biāo)簽牙肝,這個(gè)很重要
$ git push --tags#推送tag到遠(yuǎn)端倉庫
3、將私有庫PrivateKit的podspec關(guān)聯(lián)到hrSpecs索引庫上
# pod repo push [Repo名] [podspec 文件名字]
$ pod repo push hrSpecs PrivateKit.podspec
此時(shí)在~/.cocoapods/repos下的hrSpecs會(huì)有關(guān)于PrivateKit的索引信息以及hrSpecs遠(yuǎn)程服務(wù)器也會(huì)有代碼push上去
此時(shí)可以檢查遠(yuǎn)程服務(wù)器上的podspec 是否有效嗤朴。
$ pod spec lint?
輸出 PrivateKit?passed validation 為有效
此時(shí)庫的創(chuàng)建和關(guān)聯(lián)都完成配椭,使用下面命令可以查詢
?$ pod search PrivateKit
4、常見錯(cuò)誤
常規(guī)錯(cuò)誤提示會(huì)很明顯雹姊,我遇到一個(gè)比較奇葩的錯(cuò)誤股缸,
- ERROR | xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
? ? - NOTE? | [iOS] xcodebuild:? xcodebuild: error: Unable to find a destination matching the provided destination specifier:
加上--verbose后
xcodebuild: error: Unable to find a destination matching the provided destination specifier: { id:CB895974-468D-4487-B7BA-362513792516 }
還有一個(gè)有效的模擬器列表,但是我xcode是支持這個(gè)模擬器(iphone 4s 8.1)的吱雏,而且也運(yùn)行了敦姻。
最后查出來,是之前取消過這個(gè)模擬器
就算重新勾上也沒用還是無效歧杏,包括重啟刪除緩存等等方法镰惦。
解決辦法:右鍵delete 這個(gè)模擬器重新添加一次。就ok了犬绒。