iOS 一行命令釋出 Pod 框架
前言
目前比較流行的元件化開發,針對多個 app 要用同一套程式碼,將其做成 pod 倉庫是比較好的解決方案。程式碼只有一份放在元件倉庫,需要整合的 app 只需要將其 pod 到工程內部即可。
如果很多元件都需要做成 pod 庫,每一步都手動去做,顯得繁瑣而且容易出錯。本文主要講一下,怎麼自動化去實現這些事情。不過,在此之前,先概述一下,釋出框架具體需要做哪些事情。如果對發 pod 的流程比較熟悉,直接跳過看自動化實現部分。
先上 GitHub 倉庫地址:
釋出框架到官方庫
注:圖中標號並非和釋出流程標號對應,圖中表述的是從框架釋出到使用的大致流程。
想要釋出框架到 CocoaPods 官方庫,需要有以下流程:
- 安裝 CocoaPods]
- 註冊 CocoaPods 賬號]
- 建立 spec 檔案]
- 提交程式碼併為框架打 tag
- 驗證 spec 檔案
- 通過 pod trunk push 推送 spec 檔案
安裝 CocoaPods
網上有很多教程,這裡不再贅述。需要注意的是,RubyGems
的 淘寶映象 已經不再維護,已遷移至 Ruby
China,安裝 CocoaPods 前記得替換 gem sources
。
註冊 CocoaPods 賬號
首先需要註冊一個 CocoaPods 賬號,用於釋出 pod 倉庫。
$ pod trunk register EMAIL [NAME]
trunk
命令用於建立一個賬號或是一個
seession。
- 如果你還沒有賬號,則需要將郵箱和名字一起填入,建立賬號的同時會自動建立 session
- 如果已經有了賬號,但是沒有在當前這臺電腦上釋出過 pod 倉庫,這個時候就需要建立一個 session,僅需要填郵箱即可,除非你想改名字,否則不用填寫名字。
你可以對你的 session 進行描述,這樣在利用 pod
trunk me
命令檢視所有 session 資訊的時候,可以很清晰地看到在哪些電腦上建立過 session。
$ pod trunk register [email protected] 'Orta Therox' --description='macbook air'
命令成功之後,你的郵箱應該會收到一份郵件。檢視郵件資訊,訪問對應網址即可驗證你的賬號。當然,這個事情做一次就好了,以後基本上不用再操作。
建立 spec 檔案
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 = 'https://github.com/ripperhe/ZYTemplateName'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'ripperhe' => '[email protected]' }
s.source = { :git => 'https://github.com/ripperhe/ZYTemplateName.git', :tag => s.version.to_s }
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
檔案中的使用者名稱和郵箱。以下為相關原始碼:
def default_data_for_template(name)
data = {}
data[:name] = name
data[:version] = '0.0.1'
data[:summary] = "A short description of #{name}."
data[:homepage] = "http://EXAMPLE/#{name}"
data[:author_name] = `git config --get user.name`.strip
data[:author_email] = `git config --get user.email`.strip
data[:source_url] = "http://EXAMPLE/#{name}.git"
data[:ref_type] = ':tag'
data[:ref] = '#{s.version}'
data
end
spec 檔案的這些描述,基本上看命名是可以看明白的。實在不明白可以檢視 官方文件。需要注意的是,s.version
是你將要釋出的
pod 倉庫的版本,s.source
是你的倉庫源地址和對應的 tag
資訊。
version
和 tag
可以是不同的,但是為了方便管理和維護,我們一般將其設定為一樣的,所以 tag
可以
直接使用 s.version.to_s
。既然這裡用到了 tag
,那麼接下來,就需要為倉庫程式碼打上 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 檔案
用於驗證 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
相關推薦
iOS 一行命令釋出 Pod 框架
前言 目前比較流行的元件化開發,針對多個 app 要用同一套程式碼,將其做成 pod 倉庫是比較好的解決方案。程式碼只有一份放在元件倉庫,需要整合的 app 只需要將其 pod 到工程內部即可。 如果很多元件都需要做成 pod 庫,每一步都手動去做,顯得繁瑣而且容易出錯。本文主要講一下,怎麼自動化去實現這
一行命令統計iOS工程程式碼總行數
我們有時候想要統計一下我們的工程的總程式碼行數,來獲取一些成就感或者作為別的用圖,這裡就介紹一些如何便捷地統計程式碼的行數,非常簡單,方法如下: 1. 開啟終端; 2. 通過cd命令到達我們的工程檔案,這裡注意如果要避免統計引用的第三方庫的程式碼量,我們就要進一步進到我
ios-deploy命令
before move lin debugging comm req -c rac mic -d, --debug launch the app in lldb after installation -i, --id <device
iOS 循環輪播框架思路
自然 caption name -o 完整 auto scroll 初始 一次 使用3個imageview實現無線輪播的大致原理 將3個imageview添加到scrollview上面,scrollview的contensize是3個imageview的寬度,設置scro
iOS 9 平臺上 AFNetworking 框架 3.0 版本號解決的問題和問題解決
mon ans net 介紹 otto rac -a div das iOS 9 平臺上 AFNetworking 框架 3.0 版本號解決的問題和問題解決太陽火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商業用途-保持
yarn 常用命令(基於vue框架)
不同 yar route 瀏覽器 import style temp pan exp 初始化項目 yarn add init 安裝vue yarn add vue 安裝webpack,webpack-dev-server(是一個小型的Node.js Express服務器)
Mac appium iOS 安裝命令
appium led rom lec comm clas ide mobile car 1. brew install node 2. npm install -g appium #或者用安裝包安裝 3. brew install libimobiledevice --
IOS APNS訊息推送框架介紹(pushy)以及詳細使用方法
最近公司需要做IOS訊息推送的功能,我負責後臺推送,IOS端資料處理以及回撥我不負責,本篇文章主要介紹基於java的apns訊息推送,使用框架為pushy。 宣告:我先前也沒有接觸過這個IOS推送,自己研究了兩天,通過百度,對比各個框架的優缺點,最後選擇了這個框架,有說的不對的地方,還
iOS 一行程式碼處理子檢視(移除、隱藏等)
無需遍歷迴圈,一行程式碼處理子檢視邏輯 移除所有子檢視: [view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 顯示、隱藏所有子檢視 //隱藏所有子檢視 [view.subviews
iOS模擬器命令(自動化測試)
1. 列出安裝的可用的模擬器: xcrun instruments -s 【如:iPhone 5s (9.0) [00AB3BB6-C5DC-45C7-804F-6B88F57C2AFF] (Simulator)】 1. 檢視已安裝的模擬器: ios-sim showdevicetypes
Python | 一行命令生成動態二維碼
主要是使用的工具是myqr這個工具 安裝步驟: 1、安裝setup-tools 下載安裝包,解壓 unzip setup-tools-36.0.1.zip ; cd setup-tools-36.0.1 ; python setup.py install 2、安裝pyt
[iOS]一行程式碼給中文陣列新增索引
/** * 將原資料以及存放索引的空陣列 傳參 返回整理後的陣列 * 已用分類封裝,直接引入標頭檔案 使用方法即可 * * https://github.com/KKKKaras/JY_SectionDemo */ #import "JYTableViewController.h
linux在一行命令列上執行多個命令
1. [ ; ] 如果被分號(;)所分隔的命令會連續的執行下去,就算是錯誤的命令也會繼續執行後面的命令。 [[email protected] etc]# lld ; echo “ok” ; lok -bash: lld: command not fou
[Asp.net core]使用ssh命令釋出asp.net core專案
命令 # 移除之前釋出的包 rm -rf ./.Publish rm -rf ./Wolfy.Blog.tar.gz # 編譯併發布 將釋出包打包在.Publish目錄下 "C:/Program Files/dotnet/dotnet.exe" publish "./Wolfy.Blog/
Extjs如何使用cmd命令生成應用框架
Extjs如何使用cmd命令生成應用框架 1、獲取ext5.1的sdk檔案,以及安裝sencha cmd。注意,要對應sdk的版本號 2、建立專案,可參考官方api ①找到電腦中sdk的路徑,以及專案存入的路徑 如:sdk路徑 ② 專案存入路徑 命令如圖所示: ③、生成
一行命令讓CPU佔用率達到100%
一行命令讓CPU佔用率達到100% for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done 說明:
[awk] 一行命令處理文字的解析輸出格式OFS
/* 簡潔,推薦 */ grep cpe Recent.xml|grep product |sort|awk -F '<|>' '{ if($3!="") print $3 }'|awk '{print $1,$2,$3,$4}' FS=':' OFS=':'
一行命令使redis批量去除key過期時間/或刪除key
一行命令使redis批量去除key過期時間 redis-cli -p 12379 -n 3 keys "f_vulcan*" | xargs -n1 redis-cli -p 12379 -n 3 persist 連線12379埠的redis,選擇資料庫3,查詢f_vulcan開頭的k
實戰| 一行命令對你的圖像視頻進行風格遷移
gen pat -o -m 不同的 復制 .html upload vgg 1.項目介紹 今天我們要做的是一個快速圖像風格遷移的程序。 那麽,什麽是圖像風格遷移?圖像風格遷移就是把一種圖像風格轉變為另一種圖像風格。例如,原圖為:加上不同風格的圖像可以得到如下不同的結果: 2
AndroidStudio3.0多渠道打包:我用一行命令打出N個包
前言: 做Android開發的繞不開多渠道這件事,因為Android應用市場大大小小有幾百個,而我們需要在釋出應用之後統計各個渠道的使用者下載量,這個時候就要多渠道打包,也就是對各個渠道進行標識,以便於統計。多渠道和統計時息息相關的,因為我們做多渠道打包的目的就是要統計,友盟