? ? ? ?最近一直在做遠(yuǎn)程開發(fā),需求也比較頻繁,所以動(dòng)不動(dòng)就編譯打包提測(cè)上傳做了很多重復(fù)工作,基本每次都得花十分鐘左右時(shí)間,而且其中每個(gè)過程都必須仔細(xì)關(guān)注,以免出現(xiàn)差錯(cuò),很是費(fèi)事.
? ? ? ?在極其注重效率的今天,且所有編譯器或IDE都希望程序員把注意力集中到業(yè)務(wù)需求上的大環(huán)境下,傳統(tǒng)打包方式顯然已經(jīng)跟不上節(jié)奏.? 所以持續(xù)集成和快速打包等方式已然成為主流,今天就詳細(xì)介紹下長(zhǎng)期專注于應(yīng)用內(nèi)測(cè)服務(wù)的 fir - (官網(wǎng)鏈接 https://fir.im/) 提供的快速打包上傳一條龍工具 fir.cli .
? ? ? ?先說說使用快速打包之前我們的日常提測(cè)步驟是什么
1. Xcode ->Product-Scheme->Edit Scheme 下選取Debug打包方式
2.選擇Archive 將源碼轉(zhuǎn)換為 .xcarchive 包
3.配置好證書,及描述文件后,選擇打包ipa方式
4.將桌面生成的包傳到fir,并生成短鏈,填寫changeLog
5.上傳完成后將短鏈地址告知測(cè)試人員
打開QQ/討論組/微信 等,打開相關(guān)人員對(duì)話框 編輯更新內(nèi)容 粘貼下載URL,發(fā)送.....
當(dāng)然以上部分步驟也可用Xcode自帶的打包命令執(zhí)行,但上傳下載的步驟總是省不了,實(shí)際上fir.cli也是使用Xcode命令來實(shí)現(xiàn)打包的
使用fir.cli之后
以上所有繁瑣的過程在使用fir.cli后可以簡(jiǎn)化成一條命令,極大的縮短的打包時(shí)間且降低了出錯(cuò)率
$ fir bi -w -t doctor -C Debug -S doctor -p -c“2.5.3需求提測(cè)”?
以上是針對(duì)我目前項(xiàng)目的寫法,意思為:直接在項(xiàng)目根目錄下輸出 cocoapods項(xiàng)目里(-w) doctor target下(-t doctor) 以debug方式打包(-C Debug) 設(shè)置Scheme 名字為 doctor (-S doctor) 打包完成后自動(dòng)上傳至對(duì)應(yīng)Bundle id 的應(yīng)用動(dòng)態(tài)下,且使用原有下載短鏈(-p) 更新內(nèi)容為 "2.5.3需求提測(cè)" (-c“2.5.3需求提測(cè)”).
如果需要通知相關(guān)人員的話可以加上
$ curl https://hooks.pubu.im/services/test_test_test -X POST --data-urlencode? 'payload={"text":"iOS版本已更新","attachments":[{"title":"會(huì)醫(yī)","description":"2.5.3需求完善","url":"http://fir.im/doctest","color":"success"}],"username":"楊永強(qiáng)","icon_url":"https://oivkbuqoc.qnssl.com/91305b85ec630717a36fe6b839aac79764667d23?t=1493359982.968105","buttons":[{"text":"點(diǎn)擊下載","url":"http://fir.im/doctest"}]}'
其中 https://hooks.pubu.im/services/test_test_test 為配置了團(tuán)隊(duì)協(xié)作工具 瀑布 IM 之后的post鏈接,作用就是使用命令快速發(fā)送自定義聊天消息,其主要業(yè)務(wù)也是將碎片化的開發(fā)時(shí)信息做統(tǒng)一收集,本篇暫不介紹其具體使用方法, 其具體業(yè)務(wù)內(nèi)容可參考,其具體業(yè)務(wù)可參考 瀑布 IM
使用場(chǎng)景
這通知命令看起來也很繁瑣,且changeLog還得寫兩次,其余別的參數(shù)也看起來沒什么關(guān)鍵信息,其實(shí)fir早就幫我們想好了,在fir官網(wǎng)的應(yīng)用配置下面直接配置瀑布IM的hook鏈接后可以很方便的自動(dòng)幫我們做了通知人員的事情
其使用場(chǎng)景為下圖,在執(zhí)行完 ($ fir bi -w -t doctor -C Debug -S doctor -p -c“2.5.3需求提測(cè)”) 命令后,fir會(huì)自動(dòng)發(fā)相關(guān)消息到瀑布IM
這樣一來我們連通知相關(guān)人員的溝通成本都省掉了,以后就差直接往測(cè)試手機(jī)里自動(dòng)裝應(yīng)用啦??
其安裝方式非常簡(jiǎn)單 只需要
$ gem install fir-cli
更新fir.cli 為
$ fir upgrade
其必要安裝條件及運(yùn)行條件為:
1.已安裝Xcode及Xcode Command -line-tool 工具
2.更換Ruby源為淘寶源,(如果未翻墻)
3.確保Ruby 的 gem為最新版本
4:確保正確配置相關(guān)開發(fā)證書及描述文件
使用前先將fir.cli與你的賬號(hào)簡(jiǎn)歷綁定
$ fir login
這時(shí)需要輸入fir賬號(hào)的token來建立對(duì)應(yīng)關(guān)系
復(fù)制token到終端即可建立綁定關(guān)系
繼續(xù)執(zhí)行
($ fir bi -w -t doctor -C Debug -S doctor -p -c“2.5.3需求提測(cè)”)具體項(xiàng)目可按幫助內(nèi)容執(zhí)行具體命令
在執(zhí)行完打包命令后會(huì)在項(xiàng)目根目錄下生成fir_build目錄,其結(jié)構(gòu)為:
是不是很方便,甚至幫我們生成了對(duì)應(yīng)的符號(hào)表文件,另外fir.cli還可集成?BugHD,如果想使用那么可直接使用命令配置實(shí)現(xiàn),自動(dòng)上傳符號(hào)表文件,簡(jiǎn)直不要太方便.
fir mapping指令用于將符號(hào)表上傳至BugHD.com所對(duì)應(yīng)的項(xiàng)目, 目前已經(jīng)支持 dSYM 和 txt 兩種格式的符號(hào)表文件上傳, 有以下三種方法上傳:
指定 version 和 build 上傳:
$ fir m-P-v-b-T
在 publish 的時(shí)候自動(dòng)上傳:
$ fir p-m-P-T
在 build_ipa 的時(shí)候自動(dòng)上傳:
$ fir b-P-M -p -T
詳細(xì)的使用說明, 可以使用fir mapping -h查看
在fir_build目錄的exportOptions.plist 內(nèi)容為
均為默認(rèn)參數(shù),可修改后使用配置方便命令打包
fir.cli 還可以直接編譯 Github 上的 workspace
$ fir build_ipa git@github.com:xxxx.git -o path/to/output -w -C Release -t allTargets GCC_PREPROCESSOR_DEFINITIONS="FOO=bar"
當(dāng)然fir.cli能做的遠(yuǎn)不止這些,具體-help 為
Usage:
fir build_ipa BUILD_DIR [options] [settings]
Options:
-B, [--branch=BRANCH]# Set branch if project is a git repo, the default is `master`
-w, [--workspace], [--no-workspace]# true/false if build workspace
-S, [--scheme=SCHEME]# Set the scheme NAME if build workspace
-C, [--configuration=CONFIGURATION]# Use the build configuration NAME for building each target
-d, [--destination=DESTINATION]# Set the destination specifier
-t, [--target=TARGET]# Build the target specified by target name
-E, [--export-method=EXPORT_METHOD]# for exportOptionsPlist method, ad-hoc as default
-O, [--optionPlistPath=OPTIONPLISTPATH]# User defined exportOptionsPlist path
-f, [--profile=PROFILE]# Set the export provisioning profile
-o, [--output=OUTPUT]# IPA output path, the default is: BUILD_DIR/fir_build_ipa
-p, [--publish], [--no-publish]# true/false if publish to fir.im
-s, [--short=SHORT]# Set custom short link if publish to fir.im
-n, [--name=NAME]# Set custom ipa name when built
-c, [--changelog=CHANGELOG]# Set changelog if publish to fir.im
-Q, [--qrcode], [--no-qrcode]# Generate qrcode
-M, [--mapping], [--no-mapping]# true/false if upload app mapping file to BugHD.com
-P, [--proj=PROJ]# Project id in BugHD.com if upload app mapping file
[--open], [--no-open]# true/false if open for everyone
[--password=PASSWORD]# Set password for app
-T, [--token=TOKEN]# User's API Token at fir.im
-L, [--logfile=LOGFILE]# Path to writable logfile
-V, [--verbose], [--no-verbose]# Show verbose
# Default: true
-q, [--quiet], [--no-quiet]# Silence commands
-h, [--help], [--no-help]# Show this help message and quit
多種命令組合基本可適用絕大部分使用場(chǎng)景,還未使用的快趕緊試試吧,而且內(nèi)容中提到的瀑布IM 功能也非常強(qiáng)大,囊括了絕大部分為提升開發(fā)效率而生的工具,其強(qiáng)強(qiáng)聯(lián)合必然會(huì)讓你的團(tuán)隊(duì)開發(fā)如虎添翼,試想下團(tuán)隊(duì)中的任何人的任何一次提交整個(gè)項(xiàng)目任何一小個(gè)動(dòng)作都能在一個(gè)IM應(yīng)用里收到通知并提供相關(guān)功能作分類查找處理,那溝通成本必然會(huì)大大降低.
本人第一篇博文,不足之處還望大家能及時(shí)指出,相關(guān)的問題也可私聊我,一直致力于團(tuán)隊(duì)開發(fā)效率提升,大家有什么效率提升的好工具可以留言給我哈,感謝先
下一篇繼續(xù)介紹使用該工具自動(dòng)打包安卓項(xiàng)目的步驟