組件pod私庫管理和踩坑記錄

私有庫搭建流程:
一 準(zhǔn)備工作:
1 查看本地是否有私有庫索引文件 pod repo
2 建立存儲podsepc的地方(習(xí)慣上一般把該podspec和源碼庫放在一起辕近,即是該文件同級目錄是Pod文件夾)名段,如github或者gitlab
3 添加私有庫的本地索引骑丸,pod repo add 本地索引庫名稱 遠(yuǎn)程索引庫地址
4 通過pod repo查看是否添加成功

二 私有庫創(chuàng)建(即是存放源碼的地方)
1 創(chuàng)建遠(yuǎn)程倉庫
2 把遠(yuǎn)程庫拉到本地 git clone
3 創(chuàng)建測試工程(隨便一個本地別的目錄,在源碼庫本目錄還未試驗(yàn)),pod init 生成podfile,pod install生成workspace文件
4 創(chuàng)建podspec文件: pod spec create 庫名。在podspec同級目錄創(chuàng)建Pod/Classes文件夾纲刀,功能模塊就放在該classes文件夾下
5 podspec編寫:
必寫字段:
version 必須有tag對應(yīng)
License
platform最好指定,否則在某個未測試兼容的平臺可能報錯
source
source_files:這里要注意補(bǔ)上Pod/前綴
framework:源碼有用到的系統(tǒng)framework要導(dǎo)入

6 提交Podspec和源碼担平,并且打tag
git add --all
git commit -m "update podspec"
git push origin master
git tag 0.0.1
git push --tags

7 檢測pod庫是否可用
Pod lib lint

8 測試本地庫是否可用
pod ‘庫名’示绊,:path =>’本地庫絕對路徑’
Pod repo update
pod install
看源碼文件是否能拉下來,看編譯是否通過

9 提交本地庫,向Spec Repo提交podspec
pod repo push BYPrivateComponent BYPrivateComponent.podspec --verbose --use-libraries --allow-warnings
10 測試是否提交成功pod search 庫名
11 在測試工程導(dǎo)入暂论,測試是否可用 pod 'BYComponents', :git => 'https://xxx.git'或者直接pod ‘庫名’

12 只要更新了pod文件夾下內(nèi)容或者更改了podspec文件都需要執(zhí)行pod update

在隨便一個測試工程引入該庫面褐,例如: pod 'BYComponents', :git => 'https://github.com/zhoubingyu/BYComponents.git'
Pod install 如果報錯就pod update
重新打開workspace工程文件

問題和解決辦法
1 如遇到The source_files pattern did not match any file
1.1 檢查是否打tag,并且源碼文件推送到遠(yuǎn)程倉庫
1.2 檢查本地目錄/Users/Dana/.cocoapods/repos/空另,是否是最新的podspec文件盆耽,此處的Pod目錄下的文件是否正確。如不正確扼菠,pod repo update /Users/Dana/.cocoapods/repos/BYComponents

更新維護(hù)podspec
1 先將源文件添加到Pod/Classes中
2 編輯podspec
3 在測試項(xiàng)目里pod update
4 把代碼push到遠(yuǎn)端并打tag
5 再次使用pod lib lint驗(yàn)證編輯好的podsepc文件
6 提交本地庫 pod repo push PodTestLibrary PodTestLibrary.podspec
7 到~/.cocoapods/repos/PrivateRepo目錄下查看
8 pod search測試

組件化踩坑記錄
1 subspec里面的source文件夾路徑如果某級目錄沒文件,會報錯坝咐。因?yàn)間it不存儲空文件夾
2 每次有改動循榆,要驗(yàn)證pod lib lint YXComponents.podspec,要提交源碼到遠(yuǎn)程倉庫墨坚,打tag秧饮,對應(yīng)修改podspec里面的版本號,然后推送私有庫索引到遠(yuǎn)程pod repo push YXComponents
3 subspec里面指定的源文件的位置泽篮,不能放在總組件目錄下盗尸。否則報錯,該目錄是放自動生成的版本信息的帽撑。
4 私庫有更新升級流程:
4.1 提交更新的修改
4.2 打tag
4.3 升級Podspec里面的版本號
4.4 pod lint repo xxx
4.5 pod push repo xxx
4.6 pod install
4.7 pod repo push BYPrivateComponent BYPrivateComponent.podspec --verbose --use-libraries --allow-warnings
4.8 遇到target has transitive dependencies that include statically linked binaries
解決辦法: 兩步:1 在podspec加上 s.static_framework = true 2 push私有庫時加上--use-libraries
4.9 劃分子目錄需要每個子目錄能單獨(dú)編譯通過泼各,并且所有的子目錄的父親的source_files不能包含子目錄的文件,否則文件夾被創(chuàng)建亏拉,但是文件還在父目錄下
5.0
允許使用靜態(tài)庫扣蜻,允許警告,可查看詳細(xì)信息及塘。推送私庫到倉庫
pod repo push YXComponents YXComponents.podspec --verbose --use-libraries --allow-warnings

5.1 如果指定了spec文件的public_header_files莽使,則所有要暴露出來的頭文件都要包含在里面。不包含的頭文件將無法引用
5.2 如果依賴了類似libresolv.tbd這類文件笙僚,則要添加下面依賴芳肌,注意去掉前綴lib和后綴.tbd
s.libraries = ‘resolv’
5.3 如果引入有.c文件的pod庫的.h文件,報錯Undefined symbols for architecture i386
方法一:(已驗(yàn)證)在repo push 后面加--skip-import-validation
方法二:s.pod_target_xcconfig = { 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }

5.4 指定私庫版本號
pod 'YXComponents','0.5.9', :subspecs => ['Base','JSBridgesBaseDefine','YXBaseDefine']
5.5 Unexpected duplicate task 錯誤
看podspect里面的依賴路徑是否有重復(fù)包含某個文件,或者匹配集太大亿笤,剛好都包含到同一個文件了翎迁。關(guān)鍵看source_files和resource的匹配模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市责嚷,隨后出現(xiàn)的幾起案子鸳兽,更是在濱河造成了極大的恐慌,老刑警劉巖罕拂,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揍异,死亡現(xiàn)場離奇詭異,居然都是意外死亡爆班,警方通過查閱死者的電腦和手機(jī)衷掷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柿菩,“玉大人戚嗅,你說我怎么就攤上這事∈嗖埃” “怎么了懦胞?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凉泄。 經(jīng)常有香客問我躏尉,道長,這世上最難降的妖魔是什么后众? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任胀糜,我火速辦了婚禮,結(jié)果婚禮上蒂誉,老公的妹妹穿的比我還像新娘教藻。我一直安慰自己,他們只是感情好右锨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布括堤。 她就那樣靜靜地躺著,像睡著了一般陡蝇。 火紅的嫁衣襯著肌膚如雪痊臭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天登夫,我揣著相機(jī)與錄音广匙,去河邊找鬼。 笑死恼策,一個胖子當(dāng)著我的面吹牛鸦致,可吹牛的內(nèi)容都是我干的潮剪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼分唾,長吁一口氣:“原來是場噩夢啊……” “哼抗碰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绽乔,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤弧蝇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后折砸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體看疗,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年睦授,在試婚紗的時候發(fā)現(xiàn)自己被綠了两芳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡去枷,死狀恐怖怖辆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情删顶,我是刑警寧澤竖螃,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站逗余,受9級特大地震影響斑鼻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猎荠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜀备。 院中可真熱鬧关摇,春花似錦、人聲如沸碾阁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脂凶。三九已至宪睹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚕钦,已是汗流浹背亭病。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘶居,地道東北人罪帖。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親整袁。 傳聞我的和親對象是個殘疾皇子菠齿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353