一、前言
在iOS開發中,爲了滿足企業內部的一些組件化需求,往往需要創建一些公用的代碼,這些公用代碼往往是不希望被公開的,此時一般可以選擇submodule或者CocoaPods庫的形式。
如果選用submodule,直接上傳到自己的私有遠程代碼倉庫就能達到目的。對於CocoaPods庫的使用,則需要創建自己的私有庫。
二、創建私有庫遇到的問題
私有庫的創建這裏不再贅述,在互聯網上已經有許多博客你可以進行參考,當然你也可以查看官方文檔。
1.私有庫的dependency找不到
假如你已經創建好私有庫A,並想在私有庫B中使用私有庫A,在庫B的.podspec文件中你需要制定依賴:
s.dependency 'pod projectName(A)', '~> version'
校驗sepc可用性時,執行以下命令:
pod sepc lint 文件名.podspec
此時由於你當前工程B依賴的工程是私有庫,於是會報錯:
- ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `XSLKeyChainCache (~> 0.1.0)` depended upon by `XSLOpenUDID`) during validation.
原因:
校驗podspec文件時會到遠程podspec庫查找相關依賴,默認只會到官方specs庫校驗,此時需要指定遠程specs庫去校驗。
解決:
-
指定pod spec文件校驗地址
pod sepc lint 文件名.podspec --sources='http://[privateLibName]/cocoaspecs.git,https://github.com/CocoaPods/Specs.git'
-
引用當前私有庫的podFile中指定source爲私有庫地址
source http://[privateLibName]/cocoaspecs.git' source 'https://github.com/CocoaPods/Specs.git'
2.將本地podspec推送到遠程私有spec庫時因爲警告失敗
當你想把本地.podspec文件推送到遠程specs倉庫時,你需要執行:
Pod repo push 本地spec庫名 本地.podsepc文件
如果.podspec文件存在警告時不能成功push。
解決:
Pod repo push 本地spec庫名 本地.podsepc文件 --allow-warnings
不過爲了嚴謹,最好把產生的警告解決掉再推送到遠程倉庫,以免對你的同事造成困擾。
更多相關指令你都可以用–help查看:
pod repo push --help