在某些公司的局域網(wǎng)內(nèi)慨飘,我們可能是無法訪問github網(wǎng)站的。如果做iOS開發(fā)译荞,我們需要這些第三方庫依賴瓤的。如何通過github上的開源庫,我們來設(shè)置自己的依賴呢吞歼。
通過下面這些操作圈膏,你可以對 git的specs索引庫有更深的理解。
以MJRefresh為例篙骡,在一臺可以訪問github的電腦稽坤,找到github上git地址addressA
git clone addressA
將MJRefresh 克隆到本地
將代碼復(fù)制到不能訪問github的電腦
cd到當(dāng)前文件夾
git remote -v 查看當(dāng)前的遠(yuǎn)程地址,是實際上github的倉庫地址糯俗,名稱為origin
git remote add me addressB
該操作是添加新的遠(yuǎn)端倉庫地址慎皱。addressB是你創(chuàng)建的git倉庫地址,別名是me
git push me 推送到遠(yuǎn)端代碼
git push me --tags 這一步很關(guān)鍵叶骨。
因為有了這一步,第三方庫就是有版本號祈匙。我們使用的pod 'MJRefresh' ,'3.1.2'命令中的3.1.2就是對應(yīng)的tag號忽刽。
但是:做到了以上這些還不夠天揖。我們即使在Podfile文件中頭部添加這句話
source 'https://xxxx.com/myCocoaPods/MJRefrsh.git'
或者是這樣寫
pod 'MJRefresh' ,'3.1.2' , :source => 'https://xxxx.com/myCocoaPods/MJRefrsh.git'
為什么會這樣呢?
回到你的finder 打開如下路徑:/用戶/MacUserName/.cocoapods
或者shift+command+. 打開顯示隱藏文件夾
在這個路徑下(/用戶/fjzlsc/.cocoapods/repos/master/specs)我們可以看到幾乎所有的cocoapod上出現(xiàn)的索引庫跪帝。里面采用哈希分布今膊,0-f 三層 共有161616個哈希索引,每個索引下有一系列的庫
我們在/用戶/fjzlsc/.cocoapods/repos/master/specs中搜索:MJRefresh
它的路徑是0/f/b/的索引下面伞剑,通過搜索斑唬,我們還能搜索出別人在基礎(chǔ)繼續(xù)修改的庫,如:
打開MJRefresh黎泣,我們可以看到MJRefresh下所有的版本號對應(yīng)的文件夾
重點來了:這個以podspec.json 為結(jié)尾的文件恕刘,就是關(guān)鍵的索引文件
打開這個文件,我們可以看到:
{
"name": "MJRefresh",
"version": "3.1.2",
"summary": "An easy way to use pull-to-refresh",
"homepage": "https://github.com/CoderMJLee/MJRefresh",
"license": "MIT",
"authors": {
"MJ Lee": "199109106@qq.com"
},
"platforms": {
"ios": "6.0"
},
"source": {
"git": "https://github.com/CoderMJLee/MJRefresh.git",
"tag": "3.1.2"
},
"source_files": "MJRefresh/**/*.{h,m}",
"resources": "MJRefresh/MJRefresh.bundle",
"requires_arc": true
}
我們要著重修改下面這部分
"source": {
"git": "https://github.com/CoderMJLee/MJRefresh.git",
"tag": "3.1.2"
},
我們將source改為自己的git代碼https://xxxx.com/myCocoaPods/MJRefrsh.git
然后抒倚,我們也需要像cocoapod一樣模擬一個索引庫褐着,但是這個索引庫,我們沒必要像Cocoapods一樣建立哈希查找索引托呕,只需要把自己工程需要的庫放進(jìn)去即可含蓉。
建立方法也很簡單:
https://xxxx.com/myCocoaPods/mySpecs.git
里面我們只需要把剛才MJRefresh文件下所有文件(以podspec.json 為結(jié)尾的文件)和文件夾拷貝一下。然后使用腳本語言项郊,把所有的source中的git地址修改一下馅扣。
這樣,我可以把MJRefresh文件夾上傳至遠(yuǎn)端倉庫上https://xxxx.com/myCocoaPods/mySpecs.git着降,這樣
我們在配置podfile時差油,只要在頭部添加這句話
source 'https://xxxx.com/myCocoaPods/MySpecs.git'
或者是這樣寫
pod 'MJRefresh' ,'3.1.2' , :source => 'https://xxxx.com/myCocoaPods/MySpecs.git'
至此,我們在局域網(wǎng)或者受限網(wǎng)絡(luò)環(huán)境下鹊碍,使用cocoapods功能完全實現(xiàn)厌殉。
缺點:需要手動維持第三方庫的更新。你都不能訪問外網(wǎng)了侈咕,就只能手動升級了公罕。
參考文章:Podfile語法參考