來個栗子給大家全程重現(xiàn)我的操作步驟,我演示用的這個demo是已經(jīng)提交通過的,請大家不要在以該名字命名嘍,我的demo私有倉庫叫做ShareUtils,托管到了git.oschina上,此處以這個ShareUtils為例說明:
(cocoaPods類庫管理工具的使用見上一篇文章,這里就不做介紹了,也可以百度,萬能的度娘無所不知。)
一、使用oschina托管項目
1.創(chuàng)建新項目ShareUtils(私有項目)
1.0注冊自己的賬號登錄之后,選擇項目欄,再選擇“+新建項目”
<缺圖>
1.1填寫項目信息
<缺圖>
1.2初始項目目錄如下
新建項目的目錄介紹:
a. .gitignore:文件里面記錄了若干中文件類型,凡是該文件包含的文件類型,git都不會將其納入到版本管理中。是否選擇看個人需要;
b. LICENSE:正規(guī)的倉庫都應(yīng)該有一個license文件,Pods依賴庫對這個文件的要求更嚴(yán),是必須要有的。因此最好在這里讓oschina創(chuàng)建一個,也可以自己后續(xù)再創(chuàng)建。此處使用的license類型是Apache License, Version 2.0;
c. README.md:說明文檔;
2. clone倉庫到本地
a.獲取遠(yuǎn)程地址:可以選擇https或ssh兩種形式的鏈接
b.進(jìn)入本地項目路徑,clone倉庫到本地;
$cd /Users/LYPC/Documents/PodsDemo
$git clonehttps://git.oschina.net/liuli/ShareUtils.git
操作完成后,oschina上對應(yīng)的文件都會拷貝到本地,目錄結(jié)構(gòu)為:
<缺圖>
倉庫中的.gitignore文件是以.開頭的隱藏文件,因此這里只能看到兩個,后續(xù)我們的所有文件增、刪、改都在這個目錄下進(jìn)行。
三.使用cocoapods管理私有庫
整體先說明一下創(chuàng)建一個私有的podspec包括如下那么幾個步驟:
1創(chuàng)建并設(shè)置一個私有的Spec Repo。
2創(chuàng)建Pod的所需要的項目工程文件,并且有可訪問的項目版本控制地址。
3創(chuàng)建Pod所對應(yīng)的podspec文件。
4本地測試配置好的podspec文件是否可用。
5向私有的Spec Repo中提交podspec。
6在個人項目中的Podfile中增加剛剛制作的好的Pod并使用。
7更新維護(hù)podspec。
注意:以下描述的文件都要放在步驟二.2.b中clone到本地的git倉庫的根目錄下面!
1.0在本地倉庫目錄里面添加ShareUtils庫的文件目錄內(nèi)容:
創(chuàng)建好之后的目錄結(jié)構(gòu)如圖:
<缺圖>
1.1提交本地倉庫中增加的內(nèi)容
a.提交前保證更新到最新版:$ gitpull
b.添加到倉庫管理并提交修改:$ git
add -A && git commit -m "提交類文件及podspec文件"
c.將本地修改的內(nèi)容提交到遠(yuǎn)程倉庫:$ gitpush origin master
d.確保你所push的代碼已經(jīng)打上"version
tag",也就是給源代碼打上版本號標(biāo)簽:
$git tag '1.0.0'? -m "0.0.5"
$git push --tags? ? #推送tag到遠(yuǎn)端倉庫
創(chuàng)建命令:pod spec create文件名字
2.0podspec文件內(nèi)容示例及介紹:
2.0.1文件內(nèi)容示例修改xxx. Podspec文件內(nèi)容指導(dǎo)
該文件是ruby文件
以ShareUtils.podspec為例,分幾個模塊介紹修改描述文件:
a.關(guān)鍵字段介紹(不全的地方可以百度查詢):
s.name:導(dǎo)入pod后的目錄名;
s.version:庫的當(dāng)前版本號,每次有新的更改要修改此版本號;
s.summary:描述介紹;
s.homepage:osChina上面此庫的地址(瀏覽器地址欄復(fù)制);
s.license:開源許可證;
s.author:開發(fā)人員;
s.ios.deployment_target:配置的target;
s.source:來源的具體路徑,是http鏈接還是本地路徑,此處是osChina上面此庫的遠(yuǎn)程地址;
s.xcconfig:Xcode項目配置;
s.subspec 'CTCategory' do |cTCategory|:庫里面的目錄分支,給'CTCategory'文件起一個別名cTCategory;
requires_arc:是否需要arc
source_files:指定該目錄下包含哪些文件
其他可選參數(shù)還包括:
dependency:指定依賴,如果依賴的庫不存在或者依賴庫的版本不符合要求將會報錯
libraries:指定導(dǎo)入的庫,比如sqlite3
frameworks:指定導(dǎo)入的framework
weak_frameworks:弱鏈接,比如說一個項目同時兼容iOS6和iOS7,但某一個framework只在iOS7上有,這時候如果用強(qiáng)鏈接,那么在iOS7上運行就會crash,使用weak_frameworks可以避免這種情況。
b.CTCustomUtils目錄:
c.CTThirdPartys目錄:
d.LFCGzipUtillity文件目錄:
e.Alipay文件目錄:
d.WxPay目錄:
e.整個庫需要的依賴包
f.podSpec文件編寫注意事項:
例如寫這些路徑的文件的時候,都以相對于spec文件所在的同一目錄下的路徑,
例子:
我的整個框架文件結(jié)構(gòu):
那我寫的路徑的時候就這么寫:不用寫第一級主目錄ShareUtils?。。。?!
s.source_files ='ShareUtilsFile/*'
s.public_header_files ='ShareUtilsFile/*.h'
s.resource ='Resources/Resources.bundle'
2.1創(chuàng)建自己的podspec文件可以有兩個途徑:
a.copy上面的podspec文件,或者去github上看有名的第三方里面的podspec文件拷貝,然后修改對應(yīng)的參數(shù),推薦使用這種方式。
b.cd進(jìn)入本地倉庫根目錄,執(zhí)行創(chuàng)建命令:$?pod?spec?create?ShareUtils
命令成功之后圖:
創(chuàng)建好podspec文件之后的目錄圖:
2.3驗證本地配置好的podspec文件是否可用
進(jìn)入本地你的podspec文件路徑下,命令:
$?pod?lib?lint
有些警告是可以忽略的,由于我們的podspec文件里面用到了一些包framework,所以使用命令驗證:
$ podlib lint --verbose --no-clean --allow-warnings --use-libraries;
這個驗證過程根據(jù)依賴的庫多少耗時有差異,等待驗證合法之后終端顯示如下,如果驗證失敗會提示具體的信息,可按照提示修改你的podspec內(nèi)容保證沒有錯誤:
驗證通過之后提交合法的spec文件到遠(yuǎn)程倉庫:
a.提交前保證更新到最新版:$ gitpull
b.添加到倉庫管理并提交修改:$ git
add -A && git commit -m "提交類文件及podspec文件"
c.將本地修改的內(nèi)容提交到遠(yuǎn)程倉庫:$ gitpush origin master
2.4Spec Repo介紹
Spec Repo是所有的Pods的一個索引,就是一個容器,所有公開的Pods都在這個里面,它實際是一個Git倉庫remote端在GitHub上,但是當(dāng)你使用了Cocoapods后它會被clone到本地的~/.cocoapods/repos目錄下,可以進(jìn)入到這個目錄看到master文件夾就是這個官方的Spec Repo了,目錄結(jié)構(gòu)如下圖:
我們現(xiàn)在要創(chuàng)建自己私有的庫,因此也需要創(chuàng)建一個類似于master的私有Spec Repo,這樣我們才可以在項目中通過pods工具關(guān)聯(lián)到自己的私有類庫。
2.5創(chuàng)建私有Spec Repo
命令:$?pod?repo?add?ShareUtils ?https://coding.net/ct1516/ShareUtils.git
命令執(zhí)行成功之后,進(jìn)入到你的電腦資源庫:~/.cocoapods/repos路徑下,可以看到如下目錄文件:
至此創(chuàng)建私有Spec Repo完成,使用pod search命令就可以查到我們自己的庫了:$ pod searchShareUtils
2.6向私有Spec Repo提交podspec
提交命令:
$ pod repopush ShareUtils ShareUtils.podspec? --use-libraries --allow-warnings
提交成功之后終端顯示:
補(bǔ)充:
a.向私有Spec Repo提交podspec報如下錯誤:
解決方法:
先保證本地已經(jīng)add了一份私有Spec
Repo源,執(zhí)行一遍一下add命令:
$?pod?repo?add?ShareUtils?https://coding.net/ct1516/ShareUtils.git
然后在執(zhí)行提交命令。
2.7使用方法和刪除本地源
2.7.1直接從本地源查找下載使用
a.在個人項目中的Podfile中增加剛剛制作的好的Pod并使用,可以通過修改版本號選擇使用哪一版本的庫,注意所選的版本號必須再源里面有,進(jìn)入~/.cocoapods/repos查看,下圖是提交過三個版本的ShareUtils框架:
個人項目配置好cocoapods支持之后目錄結(jié)構(gòu):
私有cocoapods修改的podfile文件內(nèi)容為:(target修改為自己的項目名字)
source 'https://git.oschina.net/ct5621/ShareUtils.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target :DemoAPP do
pod 'ShareUtils', '2.1.0'
end
使用pod下載關(guān)聯(lián)庫:
進(jìn)入項目目錄,使用命令:
$ pod install
執(zhí)行成功之后終端截圖:
b.如果有其他合作人員共同使用這個私有Spec
Repo的話在他有對應(yīng)Git倉庫的權(quán)限的前提下執(zhí)行相同的命令添加這個Spec Repo即可:
$?pod?repo?add?ShareUtils?https://coding.net/ct1516/ShareUtils.git
c.刪除一個私有Spec Repo,本機(jī)上的項目便不可以再通過pod添加此庫
$pod repo remove?ShareUtils
d.再把它給加回來
$ pod repo add ShareUtils?https://git.oschina.net/ct5621/ShareUtils.git
2.7.2從遠(yuǎn)程倉庫查找下載使用
a.跟2.7.1里面的操作方式一致,僅修改podfile文件寫法,從遠(yuǎn)程倉庫里面下載:
podfile里面的ShareUtils git地址寫遠(yuǎn)程倉庫的連接(target改為自己的項目名字)!
b.cd到項目路徑,執(zhí)行$ podinstall:
因為此庫為私有庫,供別人使用的時候pod install之后會提示輸入賬號密碼,如圖,輸入有權(quán)限的用戶名密碼即可正常使用:
3.更新維護(hù)podspec
3.0clone到本地一份需要改的私有庫;
3.1根據(jù)需求修改庫文件的內(nèi)容(保證代碼無誤);
3.2修改podspec文件內(nèi)容,并修改最新版本號碼;
3.3校驗podspec文件是否合法:
$ pod lib lint --verbose --no-clean --allow-warnings --use-libraries;
3.4提交修改內(nèi)容,podspec文件,并打上tag版本號;
3.5向Spec Repo中提交podspec文件;
$ pod repopush ShareUtils ShareUtils.podspec? --use-libraries --allow-warnings
3.6更新最新的庫:
$ pod install