使用podspec建立iOS插件

概述

在WWDC 2014全球開發者大會上,蘋果開放了動態庫、App Extension等全新的功能,這爲iOS插件化開發帶來了可能。在iOS開發中,動態庫是iOS提供的一種資源打包方式,能夠將代碼文件、頭文件、資源文件和說明文檔等集中在一塊兒,而且能夠在運行時進行動態加載。ios

目前,不少應用越作越複雜,應用程序也顯得愈來愈臃腫。試想一下,若是將一些不經常使用的功能作成一個插件,而後根據用戶的需求從網絡中下載,這樣最大限度的利用了系統資源,這也是插件化開發的初衷。git

使用Cocoapods的優點

傳統使用第三方庫的劣勢
一、使用一個第三方SDK,須要在工程裏面添加一堆配置,少添加一步配置就會報一大堆錯誤。這個時候爲了排查少了哪個步驟,只能從頭開始重作一遍,太浪費時間和精力。有些配置還很差配置,就更令人煩躁鬱悶了。
二、若是使用的第三方SDK有比較重要的更新,想使用最新的SDK只能到官方下載最新的SDK,從新導入到本身的項目工程中。
三、若是公司有多個項目,每個工程都這樣配置一遍,這是多麼痛苦的領悟呀。github

使用Cocoapods管理第三方庫的優點
一、咱們能夠避免上訴的問題,使用方便。
二、方便咱們本身管理,只須要更新版本就好了,之前的庫還能夠保留讓他人使用。json

建立插件庫

1,註冊Trunk

trunk須要CocoaPods 0.33以上版本,可使用pod --version命令來查看本地的版本。
在這裏插入圖片描述
若是版本過低,可使用下面的指令升級:網絡

sudo gen install cocoapods
pod setup

接下來,須要查看本身是否註冊過Trunk。工具

pod trunk me

若是沒有註冊,可使用下面的命令進行註冊:ui

pod trunk register zhangyqyx@163.com "zhangyqyx" --verbose

其中,zhangyqyx表示名字,zhangyqyx@163.com表示註冊的郵箱。註冊時,系統會發送一個驗證連接到你的郵箱,驗證經過後即註冊成功。註冊成功後再次使用命令pod trunk me查看。
在這裏插入圖片描述url

2, 建立GitHub倉庫

要完成插件化開發的需求,首先須要在GitHub中建立一個遠端的託管倉庫。以下圖:
在這裏插入圖片描述spa

將項目克隆下來到本地,並添加公開庫文件相關的信息,代碼上傳和下載建議使用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打錯了,沒有用的話,咱們應該怎麼刪除呢?能夠參考下面的方法:
一、查看tags
git tag 就會羅列出咱們全部的tags

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

三、刪除遠程分支
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庫的流程大致類似:

一、建立一個私有的項目
能夠是公司本身的git管理工具、也能夠是碼雲上的,建立方法能夠參考Git倉庫的建立過程。

二、建立.podspec
使用pod spec create命令建立xxx.podspec文件。

三、編輯.podspec文件
編輯podspec文件,主要是添加項目庫、託管地址、版本號、暴露的文件等。

四、上傳到Git
將包含配置好的 .podspec, LICENSE 的項目提交 Git或私有云。

五、打tag

六、驗證.podspec文件
使用pod spec lint來驗證podspec文件是否配置正確,若是有任何的錯誤,請根據錯誤提示進行修改。若是是warning能夠忽略,在指令後面添加--allow-warnings便可。例如:

pod lib lint --allow-warnings

七、添加一個私有庫並和項目地址作綁定

pod repo add xxx https://github.com/xiangzhiho...

八、向私有的庫裏添加podspec文件

九、新建一個項目進行驗證

新建一個Xcode項目,在podfile中添加引用腳本,看是否可以成功的依賴,添加時注意版本號。

pod 'pluginPods', '~> 0.0.3'

若是,沒有任何提示錯誤,則說明自定義插件建立成功。

相關文章
相關標籤/搜索