使用CocoaPods進(jìn)行組件化

前段時(shí)間借助了CocoaPods進(jìn)行組件化開發(fā),現(xiàn)在總結(jié)下操作步驟和遇到的問題,以供以后使用,借助Carthage進(jìn)行組件化實(shí)際原理和步驟是相同的。

創(chuàng)建私有Pod倉庫

  1. 在git服務(wù)器上創(chuàng)建私有倉庫

  2. 執(zhí)行命令pod repo add添加私有倉庫(HTSpecs是私有倉庫名稱)

$ pod repo add HTSpecs git@192.168.80.136:IOS/HTSpecs.git
  1. 執(zhí)行命令pod repo list檢查是否添加成功
$ pod repo list
image

創(chuàng)建私有Pod組件庫

  1. 創(chuàng)建模板項(xiàng)目

    pod lib create 項(xiàng)目名
    

    第一個(gè)問題是我們需要選擇的開發(fā)語言,這里我們選擇ObjC;

    第二個(gè)問題是詢問是否包含一個(gè)Demo項(xiàng)目,一般會(huì)選擇Yes,其他問題根據(jù)實(shí)際情況選擇。

  2. 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

  1. 把需要導(dǎo)入的文件導(dǎo)入工程中,導(dǎo)入位置要與podspecs.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  
  1. 使用 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'

?

  1. 把當(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支持

  1. 打開Xcode,新建與pod庫同名的打包工程。Xcode->File->New->Project,根據(jù)需要選擇framework或者static library。
  1. 將創(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。

  1. 將代碼和資源文件添加到打包工程并提交,提交之前修改文件夾中的.gitconfig配置文件,刪除Carthage/Checkouts前的注釋。

    1. 選擇需要分享給carthage的target。

      carthage5.png
      1. 使用以下命令驗(yàn)證是否可以用carthage成功打包

        carthage build --no-skip-current --platform iOS
        

        或者直接編譯指定的famework

        carthage build YourFramework --no-skip-current --platform iOS
        
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容