1. 程式人生 > >iOS 一行命令釋出 Pod 框架

iOS 一行命令釋出 Pod 框架

前言

目前比較流行的元件化開發,針對多個 app 要用同一套程式碼,將其做成 pod 倉庫是比較好的解決方案。程式碼只有一份放在元件倉庫,需要整合的 app 只需要將其 pod 到工程內部即可。

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

先上 GitHub 倉庫地址

釋出框架到官方庫


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

想要釋出框架到 CocoaPods 官方庫,需要有以下流程:

  1. 安裝 CocoaPods]
  2. 註冊 CocoaPods 賬號]
  3. 建立 spec 檔案]
  4. 提交程式碼併為框架打 tag
  5. 驗證 spec 檔案
  6. 通過 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應用市場大大小小有幾百個,而我們需要在釋出應用之後統計各個渠道的使用者下載量,這個時候就要多渠道打包,也就是對各個渠道進行標識,以便於統計。多渠道和統計時息息相關的,因為我們做多渠道打包的目的就是要統計,友盟