公司最近在推動組件私有庫的工作搏讶, 自己在嘗試把組件推到遠端私有庫時,遇到了幾個問題霍殴。
1 s.homepage 和 s.source
自己在寫demo時媒惕,索引庫和組件代碼庫用的都是github,地址比較接近来庭。在XXX.podspec文件中妒蔚,s.homepage 和 s.source對應(yīng)的鏈接,很容易弄錯月弛。
s.homepage 和 s.source對應(yīng)的鏈接指的是你的組件代碼庫的地址肴盏。不要寫成索引庫的地址。
2 組件推送到遠端之后帽衙,通過pod的方式加載了組件菜皂,發(fā)現(xiàn)文件目錄并非是自己想要的目錄結(jié)構(gòu)。
我期望的目錄結(jié)構(gòu):
實際的目錄結(jié)構(gòu):
我手動在Classes文件夾下創(chuàng)建了兩個文件夾:Category和Downloader
將文件放在對應(yīng)的文件夾下厉萝。
但是恍飘,pod進項目之后,發(fā)現(xiàn)Classes文件下并沒有我手動創(chuàng)建的兩個文件夾谴垫。所有的代碼文件被統(tǒng)一放到了Classes文件下章母。
但是我發(fā)現(xiàn)AFN等一些三方,卻可以把代碼源文件文件按照功能來分塊翩剪。
后面我查找了一些資料胳施,發(fā)現(xiàn)了subspec這個東西。
因為我只是手動在 Classes文件下創(chuàng)建了子文件夾肢专,并沒修改XXX.podspec中的source_files舞肆。而s.source_files = 'XXX/Classes/*/' 指定了Classes目錄為代碼源文件的目錄地址焦辅,系統(tǒng)會將Classes及其子目錄下所有的文件統(tǒng)一放到Classes下,不展示手動創(chuàng)建的子目錄椿胯。
這里需要更改XXX.podspec中的代碼筷登。
注釋原來的s.source_files,按照Classes中子目錄的文件結(jié)構(gòu)哩盲,在XXX.podspec中前方,寫上對應(yīng)的subspec代碼。
# s.source_files = 'XXX/Classes/**/*'
s.subspec 'Category' do |category|
category.source_files = 'XXX/Classes/Category/**/*'
category.dependency 'AFNetworking'
end
s.subspec 'Downloader' do |dowmloader|
dowmloader.source_files = 'XXX/Classes/Downloader/**/*'
dowmloader.dependency 'YYModel'
end
重新cd到example中pod install. 更新版本號并將組件推到遠程私有庫中廉油。
此時惠险,再通過pod的方式加載組件,就會得到想要的目錄結(jié)構(gòu)抒线。
還可以通過修改podfile中的代碼班巩,來指定加載XXX組件的子組件。
pod 'XXX/Category' 或 pod 'XXX/Downloader'
效果圖如下: