引言:本文主要介紹了iOS私有庫(kù)的三種管理方式。在多產(chǎn)品線的情況下,包括業(yè)務(wù)層、自定義的控件、自定義的工具類,如日期處理類、日歷、加密類等等,甚至包括App的基礎(chǔ)框架都是可以考慮復(fù)用,這樣一來(lái)有效的提高了編碼的效率,讓開發(fā)人員專注主業(yè)務(wù)的開發(fā),不在為基礎(chǔ)的框架、基礎(chǔ)的類重復(fù)的“造輪子”。
目錄
1、第三方庫(kù)
2、項(xiàng)目中的私有庫(kù)
2.1 本地管理
2.2 Git遠(yuǎn)程管理
2.3 項(xiàng)目組服務(wù)器管理
3、svn下的私有庫(kù)管理
3.1 如何打tag進(jìn)行版本控制
3.2 如何實(shí)現(xiàn)指定目錄管理
1、第三方庫(kù)
可以使用Cocoapods全權(quán)管理,配置Podfile,最后pod install。
AFNetworking、SDWebImage都可以用這種方式管理。
2、項(xiàng)目中的私有庫(kù)
主要包括自定義的控件,自定義的工具類,如日期處理類、日歷、加密類等等。
有以下幾種方式進(jìn)行管理:
一、本地管理
將私有庫(kù)存在本地,其他項(xiàng)目有需要時(shí)可以選擇拷貝,不過(guò)我們的目的是希望所有的私有庫(kù)可以形成組件化,所以這樣不利于統(tǒng)一管理。
另外,可以將私有庫(kù)結(jié)合Cocoapods進(jìn)行管理,具體的步驟如下:
1.1 新建一個(gè)SingleView項(xiàng)目,將私有庫(kù)添加至項(xiàng)目中,此時(shí)項(xiàng)目直接Run按道理應(yīng)該是可以運(yùn)行成功的。
1.2 在項(xiàng)目的根目錄(工程目錄),新建podspec文件 項(xiàng)目名.podspec
Pod::Spec.new do |s|
s.name? ? ? ? = "項(xiàng)目名"
s.version? ? ? = "1.0.1" //版本號(hào)
s.summary? ? ? = "desc" //描述
s.homepage? ? = "https://coding.net/u/xxx/p/項(xiàng)目名/git"
s.license? ? ? = { type: 'MIT', file: 'LICENSE' }
s.author? ? ? = { "xx" => "xx@email.com" }
s.platform? ? = :ios, "8.0"
s.source? ? ? = { :git => "/Users/xx/項(xiàng)目名" }
s.source_files? = "Class/*.{h,m}"
s.requires_arc = true
end
PS:也可以使用命令 pod spec create A****t
前者可以自定義字段、字段值,后者則生成一個(gè)模板
1.3 最后pod lib lint,可能會(huì)報(bào)錯(cuò),可以使用
pod lib lint --verbose查看具體的錯(cuò)誤原因
pod lib lint --allow-warnings忽略警告
pod lib lint --use-libraries解決系統(tǒng)SDK頭文件引用錯(cuò)誤
1.4 新建工程測(cè)試
target '新建項(xiàng)目名稱' do
# 參數(shù)對(duì)應(yīng)1.2配置文件
pod '項(xiàng)目名', :path => '/Users/xx/項(xiàng)目名'
end
參考:http://m.itdecent.cn/p/5b950e89e1ac
二、Git遠(yuǎn)程管理
1、做好準(zhǔn)備工作
新建A****Y文件夾,準(zhǔn)備以下四個(gè)文件,其中LICENSE和A****Y.podspec文件不可或缺
依賴庫(kù)描述文件(.podspec)的名稱需和文件夾名稱保持一致

2、配置好遠(yuǎn)程倉(cāng)庫(kù),這里使用的是Coding。
進(jìn)入終端,cd到當(dāng)前目錄,執(zhí)行
git clone https://git.coding.net/x****7/A****Y.git
此時(shí)創(chuàng)建一個(gè)空的A****Y目錄
PS:第1步和第2步不分先后順序
3、添加代碼到遠(yuǎn)程倉(cāng)庫(kù)(Coding)
git add -A
git commit -m "add pod files"
git remote add A****Y https://git.coding.net/x****7/A****Y.git
git push A****Y master
4、cd ~/.cocoaPods/repo目錄,第3步clone了一份A****Y
將spec repo文件上傳
pod repo push A****Y A****Y.podspec --sources='https://git.coding.net/x****7/A****Y.git' --allow-warnings
PS:直接執(zhí)行 pod repo push A****Y A****Y.podspec報(bào)錯(cuò)

5、pod serach A****Y
出現(xiàn)版本號(hào)、主頁(yè)等信息說(shuō)明依賴添加成功。
下面就可以像使用AFNetworking一樣調(diào)用私有庫(kù)了。
6、在新建的項(xiàng)目目錄下添加Podfile文件
內(nèi)容如下:
source 'https://github.com/CocoaPods/Specs.git'
source "https://git.coding.net/x****7/A****Y.git"
platform :ios, '8.0'
target 'TestUnit' do
pod 'AFNetworking', '= 3.0.0'
pod 'A****Y', '= 1.0.1'
end
三、項(xiàng)目組服務(wù)器管理
代碼統(tǒng)一放在本地服務(wù)器上,使用Cornerstone進(jìn)行代碼的維護(hù)管理工作。
如何結(jié)合SVN和Cocoapods對(duì)項(xiàng)目中的私有庫(kù)進(jìn)行管理呢?具體的步驟如下:
感謝 clarkda 為cocoapods 提供了這個(gè) repo-svn 的 svn 支持插件:
根據(jù) https://github.com/clarkda/cocoapods-repo-svn 上的說(shuō)明
gem install cocoapods-repo-svn 來(lái)安裝 repo-svn 插件。(PS:會(huì)報(bào)權(quán)限問(wèn)題,出現(xiàn)的Error可以忽略,改成sudo gem install cocoapods-repo-svn)
pod repo-svn add my-svn-repo http://svn-repo-url 添加你的私有 svn 項(xiàng)目倉(cāng)庫(kù)
pod repo-svn update my-svn-repo 更新項(xiàng)目
pod repo-svn remove my-svn-repo 刪除項(xiàng)目
1、準(zhǔn)備好私有庫(kù)
Readme文件、Class文件夾、podspec文件
上傳到服務(wù)器,指定SVN地址。
2、添加你的私有 svn 項(xiàng)目倉(cāng)庫(kù)
pod repo-svn add my-svn-repo http://svn-repo-url?
pod repo-svn update my-svn-repo 更新項(xiàng)目
3、在新建的項(xiàng)目目錄下添加Podfile文件
內(nèi)容如下:

3、svn下的私有庫(kù)管理
3.1 如何打tag進(jìn)行版本控制
需求場(chǎng)景:
項(xiàng)目經(jīng)理:有新的項(xiàng)目要來(lái),各項(xiàng)目組準(zhǔn)備下,新項(xiàng)目完全可以借鑒之前的項(xiàng)目中的私有庫(kù)進(jìn)行開發(fā),比如:一些工具類、字體、顏色、基礎(chǔ)框架、自定義的控件等等。
項(xiàng)目組成員有兩種方式復(fù)用之前的代碼,一種是直接搬代碼,明白的講就是拷貝,這是個(gè)細(xì)活,要求對(duì)項(xiàng)目的結(jié)構(gòu)非常了解,否則很容易出錯(cuò);第二種方式
是借助工具對(duì)私有庫(kù)進(jìn)行統(tǒng)一調(diào)配,這里介紹下Cornerstone+Cocoapods的方式對(duì)私有庫(kù)的管理:
基礎(chǔ)版可參考:http://m.itdecent.cn/p/cbb8931499da
本文重點(diǎn)介紹如何做到版本控制
1、本地項(xiàng)目目錄創(chuàng)建tags目錄并上傳至SVN


2、在cornrstone的控制臺(tái),選到工程路徑注意不是本地的,是svn服務(wù)器的,然后選擇頂部tag選項(xiàng)

3、經(jīng)過(guò)以上步驟,在SVN服務(wù)器trunk/項(xiàng)目名稱/tags應(yīng)該多個(gè)一個(gè)“1.0.1”的目錄
4、調(diào)用

5、新建項(xiàng)目,執(zhí)行pod install即可
3.2 如何實(shí)現(xiàn)指定目錄管理
需求場(chǎng)景:
如果只需要其中的一個(gè)或幾個(gè)私有庫(kù),怎么辦?
1、podspec文件中指定subspec
指定source_files、public_header_files、dependency

2、修改podspec
