iOS 一行命令發布 Pod 框架

2021-07-29 20:19:33 字數 4061 閱讀 9269

作者ripperhe 

關注 2017.03.30 23:38*

字數 5589

閱讀 27

喜歡 2

如果很多元件都需要做成 pod 庫,每一步都手動去做,顯得繁瑣而且容易出錯。本文主要講一下,怎麼自動化去實現這些事情。不過,在此之前,先概述一下,發布框架具體需要做哪些事情。如果對發 pod 的流程比較熟悉,直接跳過看自動化實現部分。

先上 github 倉庫位址:

注:圖中標號並非和發布流程標號對應,圖中表述的是從框架發布到使用的大致流程。

想要發布框架到 cocoapods 官方庫,需要有以下流程:

安裝 cocoapods]

註冊 cocoapods 賬號]

建立 spec 檔案]

提交**並為框架打 tag

驗證 spec 檔案

通過 pod trunk push 推送 spec 檔案

網上有很多教程,這裡不再贅述。需要注意的是,rubygems的 **映象 已經不再維護,已遷移至 ruby china,安裝 cocoapods 前記得替換gem sources

首先需要註冊乙個 cocoapods 賬號,用於發布 pod 倉庫。

$ pod trunk register email [name]
trunk命令用於建立乙個賬號或是乙個 seession。

你可以對你的 session 進行描述,這樣在利用pod trunk me命令檢視所有 session 資訊的時候,可以很清晰地看到在哪些電腦上建立過 session。

$ pod trunk register [email protected] 'orta therox' --description='macbook air'
命令成功之後,你的郵箱應該會收到乙份郵件。檢視郵件資訊,訪問對應**即可驗證你的賬號。當然,這個事情做一次就好了,以後基本上不用再操作。

spec 檔案即乙個 pod 倉庫的描述資訊。所有通過pod search搜尋出來的框架,都是根據這個檔案中的描述資訊進行匹配的。以下為部分描述資訊:

乙個簡單的 spec 檔案如下:

pod::spec.new do

|s| s.name = 'zytemplatename'

s.version = '0.1.0'

s.summary = 'a short description of zytemplatename.'

s.homepage = ''

s.license =

s.author =

s.source =

s.ios.deployment_target = '8.0'

s.source_files = 'zytemplatename/classes/**/*'

end

先進入需要發布的框架的根目錄,執行

$ pod spec create [name]
這裡的name即為框架名字,不需要手動加.podspec字尾。執行完成之後,會生成zytemplatename.podspec檔案(這裡以zytemplatename為例),進入該檔案,將對應資訊改為你具體的資訊即可。

如果你發現你的 spec 檔案預設填寫的使用者名稱和郵箱不是你剛才利用 trunk 命令註冊賬號時候填寫的不用驚訝,因為預設取的是 git 的使用者名稱和郵箱,所以想修改的話,去修改~/.gitconfig檔案中的使用者名稱和郵箱。以下為相關原始碼:

endspec 檔案的這些描述,基本上看命名是可以看明白的。實在不明白可以檢視 官方文件。需要注意的是,s.version是你將要發布的 pod 倉庫的版本,s.source是你的倉庫源位址和對應的tag資訊。

versiontag可以是不同的,但是為了方便管理和維護,我們一般將其設定為一樣的,所以tag可以 直接使用s.version.to_s。既然這裡用到了tag,那麼接下來,就需要為倉庫**打上tag

首先,需要將本倉庫的所有修改提交到遠端倉庫。

$ git add .

$ git ci -m 'release pod'

$ git push

上一步在倉庫的根目錄建立了 spec 檔案,隨著**的提交,spec 檔案也會提交到自己的遠端**倉庫。這個 spec 檔案和需要發布的框架放在一起並不是必須,只是這樣可以方便我們以後維護這個框架。

發布 pod 倉庫,需要和自己框架的遠端倉庫**版本對應,所以這裡需要為當前**打上 tag,這個 tag 是和前面的 spec 檔案中填寫的 tag 對應的。框架發布成功之後,cocoapods 會根據 tag 資訊去獲取相應**。

$ git push origin master

$ git tag '0.1.0'

$ git push --tags

用於驗證 spec 檔案是否正確,可以及早發現問題。同樣,也是在需要發布的框架的根目錄,執行

$ pod spec lint zytemplatename.podspec
這裡需要加上.podspec字尾來驗證這個檔案。如果有報錯,仔細檢視報錯資訊,一般可以定位問題,可以加上--verbose檢視詳細的驗證過程,方便定位問題。

$ pod spec lint zytemplatename.podspec --verbose
驗證 spec 檔案也可以用另外乙個命令

$ pod lib

lint

zytemplatename.podspec

pod spec lintpod lib lint最主要的區別是,前者會根據 spec 檔案 tag 資訊去驗證遠端倉庫**是否存在,後者不會。簡單理解就是,pod spec lint聯網檢查,pod lib lint不聯網檢查。

驗證的時候,可能會報錯,或是報警告。報錯的話,必須解決,詳細看具體資訊,一般能找到問題,如果不能,自行 google

一行命令安裝apk

話說,最近入手了mac,嘿嘿,做好了吃土的準備 我們都知道怎樣用adb命令安裝乙個apk,但是在次次開發更新除錯的過程中,還是覺得不太爽,有木有更高效的方法呢,思路如下 配置adb環境變數 使用adb命令安裝apk 便捷安裝 將adb安裝apk的命令儲存成指令碼檔案,執行指令碼檔案安裝 便捷公升級 ...

Shell Linux 一行 多命令

要實現在一行執行多條linux命令,分三種情況 1 舉例 lpr tmp t2 rm tmp t2 第2條命令只有在第1條命令成功執行之後才執行。根據命令產生的退出碼判斷是否執行成功 0成功,非0失敗 2 舉例 cp tmp t2 tmp t2.bak rm tmp t2 只有 前的命令 cp tm...

一行命令 優化上傳速度

最近許多使用者反映上傳速度慢的一塌糊塗,七牛的上傳頻寬我想肯定是沒問題的,那原因不必多想就剩下 dns 了。即便本地網路再快,dns 伺服器給了乙個很遠的伺服器位址也沒辦法很快的上傳。在終端執行這一行命令,就會自動幫你找到最快的 ip,然後根據提示自己修改 hosts 就可以了 sh c curl ...