作者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
資訊。
version
和tag
可以是不同的,但是為了方便管理和維護,我們一般將其設定為一樣的,所以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 lint
和pod 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 ...