使用podspec建立iOS外掛

xiangzhihong發表於2018-12-26

概述

在WWDC 2014全球開發者大會上,蘋果開放了動態庫、App Extension等全新的功能,這為iOS外掛化開發帶來了可能。在iOS開發中,動態庫是iOS提供的一種資源打包方式,可以將程式碼檔案、標頭檔案、資原始檔和說明文件等集中在一起,並且可以在執行時進行動態載入。

目前,很多應用越做越複雜,應用程式也顯得越來越臃腫。試想一下,如果將一些不常用的功能做成一個外掛,然後根據使用者的需求從網路中下載,這樣最大限度的利用了系統資源,這也是外掛化開發的初衷。

使用Cocoapods的優勢

傳統使用第三方庫的劣勢

  • 使用一個第三方SDK,需要在工程裡面新增一堆配置,少新增一步配置就會報一大堆錯誤。這個時候為了排查少了哪一個步驟,只能從頭開始重做一遍,太浪費時間和精力。有些配置還不好配置,就更使人煩躁鬱悶了。
  • 如果使用的第三方SDK有比較重要的更新,想使用最新的SDK只能到官方下載最新的SDK,重新匯入到自己的專案工程中。
  • 如果公司有多個專案,每一個工程都這樣配置一遍,這是多麼痛苦的領悟呀。

使用Cocoapods管理第三方庫的優勢

  • 我們可以避免上訴的問題,使用方便。
  • 方便我們自己管理,只需要更新版本就行了,以前的庫還可以保留讓他人使用。

建立外掛庫

1,註冊Trunk

trunk需要CocoaPods 0.33以上版本,可以使用pod --version命令來檢視本地的版本。

在這裡插入圖片描述
如果版本太低,可以使用下面的指令升級:

sudo gen install cocoapods
pod setup
複製程式碼

接下來,需要檢視自己是否註冊過Trunk。

pod trunk me
複製程式碼

如果沒有註冊,可以使用下面的命令進行註冊:

pod trunk register zhangyqyx@163.com "zhangyqyx" --verbose
複製程式碼

其中,zhangyqyx表示名字,zhangyqyx@163.com表示註冊的郵箱。註冊時,系統會傳送一個驗證連結到你的郵箱,驗證通過後即註冊成功。註冊成功後再次使用命令pod trunk me檢視。

在這裡插入圖片描述

##2, 建立GitHub倉庫 要完成外掛化開發的需求,首先需要在GitHub中建立一個遠端的託管倉庫。如下圖:

在這裡插入圖片描述

將專案克隆下來到本地,並新增公開庫檔案相關的資訊,程式碼上傳和下載建議使用SourceTree等圖形化工具進行操作。

在這裡插入圖片描述

##3, podspec 使用如下命令建立.podspec檔案,建立的命令如下:

pod spec create pluginPods
複製程式碼

其中,CardBannerView為庫的名稱。然後,開啟並編輯.podspec檔案。

Pod::Spec.new do |s|
    s.name         = 'pluginPods'
    s.version      = '0.0.3'
    s.summary      = '自定義輪播外掛'
    s.homepage     = 'https://github.com/xiangzhihong/pluginPods'
    s.license      = 'MIT'
    s.authors      = {'xiangzhihong' => '1044817967@qq.com'}
    s.platform     = :ios, '8.0'
    s.source       = {:git => 'https://github.com/xiangzhihong/pluginPods.git', :tag => s.version}
    s.source_files = 'pluginPods/*'
end
複製程式碼

其中,上面配置的具體的含義為:

  • s.name:名稱,pod search 搜尋的關鍵詞,注意這裡一定要和.podspec的名稱一樣,否則報錯。
  • s.version:版本號。
  • s.ios.deployment_target:支援的pod最低版本
  • s.summary: 專案簡介
  • s.homepage:專案主頁地址
  • s.social_media_url:社交網址
  • s.license:許可證
  • s.author:作者
  • s.source:專案的地址
  • s.requires_arc: 是否支援ARC
  • s.source_files:需要包含的原始檔
  • s.public_header_files:公開的標頭檔案
  • s.resources: 資原始檔
  • s.dependency:依賴庫,不能依賴未釋出的庫,可以寫多個依賴庫

常見的寫法

dependency寫法:

s.dependency = 'AFNetworking' , 'SDWebImage'
複製程式碼

source_files寫法:

'runtime/*'
'runtime/runtime/*.{h,m}'
'runtime/**/*.h'
複製程式碼

其中,

  • '*'表示匹配所有檔案;
  • '*.{h,m}' 表示匹配所有以.h和.m結尾的檔案;
  • '**' 表示匹配所有子目錄

4,新增原始碼

接下來,將你的原始碼新增到剛才s.source_files配置的目錄。如果是OC編寫的還需要配置公開的標頭檔案。此處,我使用的是Swift編寫的,就不管那麼多了,如果有任何語法上的警告請忽略相關的警告。

5,上傳Git

將包含配置好的 .podspec, LICENSE 的專案提交 Git。命令如下:

git tag "v0.0.1"     // 如果出現錯誤,試一下不加v的情況
git push --tags
複製程式碼

或者,直接使用sourcetree等圖形化工具進行操作。例如:

在這裡插入圖片描述

在這裡插入圖片描述

如果我們的tag打錯了,沒有用的話,我們應該怎麼刪除呢?可以參考下面的方法: 1、檢視tags git tag 就會羅列出我們所有的tags

2、刪除本地tags git tag -d + 分支名稱就會刪除本地的分支

3、刪除遠端分支 git push origin :refs/tags/分支名稱 就刪除了遠端分支

為了驗證是否上傳成功,可以驗證.podspec檔案,命令如下:

pod spec lint WeexHMGesUnlock.podspec --verbose
複製程式碼

在這裡插入圖片描述
如果出現這種警告性的問題,我們可以直接忽略。

pod lib lint --allow-warnings
複製程式碼

在這裡插入圖片描述
如果出現這種情況,可能是你的那個版本找不到這個檔案。
在這裡插入圖片描述

5,釋出

釋出時會驗證 Pod 的有效性,如果你在手動驗證 Pod 時使用了 --use-libraries 或 --allow-warnings 等修飾符,那麼釋出的時候也應該使用相同的欄位修飾,否則出現相同的報錯。

pod trunk push pluginPods.podspec
複製程式碼

在這裡插入圖片描述
如果出現 --use-libraries 或 --allow-warnings 等修飾符警告,可以使用如下的命令:

pod trunk push pluginPods.podspec --allow-warnings
複製程式碼

在這裡插入圖片描述

6, 驗證倉庫

使用下面的命令來驗證,是否上傳成功。

pod search pluginPods
複製程式碼

在這裡插入圖片描述
如果碰到上面的情況,你可以刪除搜尋的檔案路徑,然後重新生成。命令如下:

rm ~/Library/Caches/CocoaPods/search_index.json
pod setup
複製程式碼

如果還是不行,估計是在你的專案還在稽核中,你可以通過其他輔助手段去驗證。例如,使用pod trunk me命令:

在這裡插入圖片描述
當然,你也可以在CocoaPod官網中進行搜尋。
在這裡插入圖片描述
如果沒有任何的錯誤,你將看到如下的搜尋結果:
在這裡插入圖片描述
如果剛才是用 pod lib lint 驗證成功的,就執行以下命令釋出。

pod trunk push pluginPods.podspec
複製程式碼

如果剛才是用 pod lib lint --allow-warnings 驗證成功的,就執行以下命令釋出。

pod trunk push pluginPods.podspec --allow-warnings
複製程式碼

TIP:整合時如搜尋不到,可以試著執行pod setup或pod repo update指令來更新pod,pod search搜尋不到時,可以刪除~/Library/Caches/CocoaPods下的search_index.json檔案以更新索引(pod search搜尋不到並不影響整合),因為國內使用的時映象,也可以稍等一段時間後再更新。

建立私有庫

建立私有庫和建立Git庫的流程大體相似:

1、建立一個私有的專案 可以是公司自己的git管理工具、也可以是碼雲上的,建立方法可以參考Git倉庫的建立過程。

2、建立.podspec 使用pod spec create命令建立xxx.podspec檔案。

3、編輯.podspec檔案 編輯podspec檔案,主要是新增專案庫、託管地址、版本號、暴露的檔案等。

4、上傳到Git 將包含配置好的 .podspec, LICENSE 的專案提交 Git或私有云。

5、打tag

6、驗證.podspec檔案 使用pod spec lint來驗證podspec檔案是否配置正確,如果有任何的錯誤,請根據錯誤提示進行修改。如果是warning可以忽略,在指令後面新增--allow-warnings即可。例如:

pod lib lint --allow-warnings
複製程式碼

7、新增一個私有庫並和專案地址做繫結

pod repo add xxx github.com/xiangzhihon…

8、向私有的庫裡新增podspec檔案

9、新建一個專案進行驗證

新建一個Xcode專案,在podfile中新增引用指令碼,看是否能夠成功的依賴,新增時注意版本號。

pod 'pluginPods', '~> 0.0.3'

如果,沒有任何提示錯誤,則說明自定義外掛建立成功。

相關文章