前段時(shí)間借助了CocoaPods進(jìn)行組件化開發(fā),現(xiàn)在總結(jié)下操作步驟和遇到的問題,以供以后使用,借助Carthage進(jìn)行組件化實(shí)際原理和步驟是相同的。
創(chuàng)建私有Pod倉庫
在git服務(wù)器上創(chuàng)建私有倉庫
執(zhí)行命令
pod repo add添加私有倉庫(HTSpecs是私有倉庫名稱)
$ pod repo add HTSpecs git@192.168.80.136:IOS/HTSpecs.git
- 執(zhí)行命令
pod repo list檢查是否添加成功
$ pod repo list

創(chuàng)建私有Pod組件庫
-
創(chuàng)建模板項(xiàng)目
pod lib create 項(xiàng)目名第一個(gè)問題是我們需要選擇的開發(fā)語言,這里我們選擇
ObjC;第二個(gè)問題是詢問是否包含一個(gè)Demo項(xiàng)目,一般會(huì)選擇
Yes,其他問題根據(jù)實(shí)際情況選擇。 -
Pod會(huì)自動(dòng)在當(dāng)前目錄生成一個(gè)項(xiàng)目,配置項(xiàng)目中的
podspec文件
pod5.png
`s.version` 表示的是當(dāng)前類庫的版本號(hào);//**要和tag值對(duì)應(yīng)**
`s.source` 表示當(dāng)前類庫遠(yuǎn)程地址;
`s.sources_files` 表示類庫的源文件存放目錄;
`s.resource_bundles` 表示資源文件存放目錄;
`s.frameworks` 表示類庫依賴的framework;
`s.static_framework = true` 把當(dāng)前項(xiàng)目內(nèi)的framework編譯成靜態(tài)庫,如果項(xiàng)目中包含其他閉源靜態(tài)庫需要加上此句;
`s.dependency` 表示依賴的第三方類庫;
`s.requires_arc = true`,如果項(xiàng)目依賴了第三方類庫,必須加上此句;
其他字段請(qǐng)參考http://guides.cocoapods.org/syntax/podspec.html
- 把需要導(dǎo)入的文件導(dǎo)入工程中,導(dǎo)入位置要與
podspec中s.sources_files配置的地址對(duì)應(yīng)
**導(dǎo)入完成后執(zhí)行g(shù)it命令**
只執(zhí)行一次,確認(rèn)當(dāng)前遠(yuǎn)程地址是否正確
1. 添加遠(yuǎn)程倉庫
git remote add origin 倉庫地址 // 倉庫地址與.podspec文件中的s.source對(duì)應(yīng)
2.提交修改的文件并打tag
git add .
git commit -a -m '修改內(nèi)容'
git tag -a tag版本號(hào) -m '修改內(nèi)容' // tag版本號(hào)和podspec配置文件里的s.version保持一致
3.推送修改的分支和tag到遠(yuǎn)程倉庫
git push -u origin master
git push --tags
- 使用
pod lib lint驗(yàn)證類庫是否符合 pod 的要求,可以使用--allow-warnings來忽略一些警告,建議在打 tag 前運(yùn)行此命令,檢查自己寫的pod是否報(bào)錯(cuò),在push到遠(yuǎn)程Specs的時(shí)候(步驟5),會(huì)自動(dòng)運(yùn)行此步驟。
如果項(xiàng)目依賴了私有庫,需要加上--sources指定依賴庫的所屬 specs 地址,如下:
pod lib lint 項(xiàng)目名.podspec --allow-warnings --sources='git@192.168.80.136:IOS/HTSpecs.git,https://github.com/CocoaPods/Specs'

?
- 把當(dāng)前項(xiàng)目的
podspec文件push到私有源中
pod repo push HTSpecs YourPod.podspec --allow-warnings -- sources='git@192.168.80.136:IOS/HTSpecs.git,https://github.com/CocoaPods/Specs'
?
提交成功后gitlab里的私有倉庫能看到上傳的項(xiàng)目配置文件

之后提交新版本時(shí)按以下步驟進(jìn)行:
檢查是否可以編譯成功(pod lib lint)-> 提交并打上對(duì)應(yīng)的 tag -> 推送到對(duì)應(yīng)的 spec(pod repo push)
使用私有庫
在主項(xiàng)目里Podfile文件里添加需要引用私有源地址:
source 'git@192.168.80.136:IOS/HTSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'

使用下面命令可以指定引入第三方的遠(yuǎn)程倉庫地址:
pod 'HTNetwork',:git => 'git@192.168.80.136:IOS/HTNetwork.git'
編碼注意
為避免提供給Pod外部時(shí),出現(xiàn)引入錯(cuò)誤,Pod中引用和繼承第三方庫需要按以下方式進(jìn)行導(dǎo)入:
#if __has_include(<AFNetworking/AFNetworking.h>)
#import <AFNetworking/AFNetworking.h>
#else
#import "AFNetworking.h"
#endif
先用宏檢查是否存在以第三方庫形式導(dǎo)入的,是的話以此方式導(dǎo)入,不是的話以直接引入源碼的方式導(dǎo)入。
給項(xiàng)目添加Carthage支持
- 打開Xcode,新建與pod庫同名的打包工程。Xcode->
File->New->Project,根據(jù)需要選擇framework或者static library。

-
將創(chuàng)建好的相關(guān)文件復(fù)制到pod倉庫的文件夾,并創(chuàng)建Cartfile文件,在Cartfile文件中寫上所依賴的庫。(可選,只為了獲取第三方framework)
例:github "SnapKit/Masonry"
github "jdg/MBProgressHUD"
git "git@192.168.80.136:IOS/YTKNetwork.git"運(yùn)行
carthage update --platform iOS --verbose下載依賴的framework,操作完畢文件夾結(jié)構(gòu)應(yīng)該如下(紅色是新增的文件),Carthage/Build路徑下有打包好的第三方framework。

-
將代碼和資源文件添加到打包工程并提交,提交之前修改文件夾中的
.gitconfig配置文件,刪除Carthage/Checkouts前的注釋。-
選擇需要分享給carthage的target。
carthage5.png-
使用以下命令驗(yàn)證是否可以用carthage成功打包
carthage build --no-skip-current --platform iOS或者直接編譯指定的famework
carthage build YourFramework --no-skip-current --platform iOS
-
-






