IOS 自動化打包介紹

2021-09-24 17:40:11 字數 4333 閱讀 1302

摘要

tag自動化打包背景介紹

隨著ios程式發布的渠道逐漸的增多,為每個渠道打包也成為特別耗費時間和體力的一項技術活了,而這一般大多數都是由rd來完成的。這樣就占用了rd很多的開發時間,何不把這些東西寫成乙個自動化的指令碼,然後交給qa 或是 pm來完成這個打包過程了。經過一番調研發現網上這種指令碼還是很少的,不過xcode 提供了shell編譯工具 xcodebuild 和 ipa打包工具xcrun ,這就有理由讓我們利用這兩個工具寫乙個自動化的打包指令碼來提高我們的工作效率和自動化程度。

利用xcode 打包

耗費時間、耗費體力、效率低下、只能依賴rd來完成、容易出錯、發布風險比較高、qa回歸確認比較困難、 不智慧型化。

自動化打包具體實現

1    xcodebuild[-project

2 ][-activetarget][-alltargets][-target]...[-parallelizetargets][-activeconfiguration][-configuration][-sdk |][=]......

3 xcodebuild[-version[-sdk |]]

4 xcodebuild[-showsdks]

5 xcodebuild[-find][-sdk |]

6 xcodebuild[-list]

也可以在終端輸入:xcodebuild –help 或 –h檢視具體的選項

顯示xcodebuildversion:xcodebuild –version

顯示當前系統安裝的sdk:xcodebuild –showsdks

顯示當前目錄下project information:xcodebuild –list

需要注意的是:執行以上命令時必須把位置定位在ios專案檔案的根目錄下 否則會提示找不相關命令的。

注:具體事例見附錄

一些問題

當有些shell命令在mac的終端中執行不通過時,請確保你的shell指令碼是在mac環境下編寫的而不是同xp等其他環境中copy過來的。因為mac跟xp的編碼是不一樣所以會有問題。

總結:通過從母包打出其他渠道的包這種方法:得到以下好處

i.              降低了rd的工作量,一起qa的工作量。

ii.              讓測試發布程式時的風險得到了控制。

iii.              提高了打包發布工作效率。(幾十個包 只需短短的幾分鐘)。

iv.              提高了自動化。

v.              不依賴mac 以及xcode環境 直接在linux 下即可完成 從母包生成其它包

附錄

01    #!/bin/sh

0203 xcodebuild clean -configuration distribution //

clean專案

0405 distdir="

/users/***x/dist

"06 releasedir="

build/distribution-iphoneos

"07 version="

1_0_0

"08 rm-rdf "

$distdir

"09 mkdir"

$distdir

"10 forline in$(catdata.dat) //

讀取所有渠道號data.dat檔案

11do

12 ipafilename=`echo$line|cut-f1 -d'

:'` //

渠道名13 sourceid=`echo$line|cut-f2 -d'

:'` //

渠道號14 echo"

ipafilename=$ipaname

"15 echo"

sourceid=$sourceid

"16 targetname="

youtargename"//

專案名稱(xcode左邊列表中顯示的專案名稱)

17 echo"

sourceid=$sourceid

"18 echo"

ipafilename=$ipafilename

"19 echo"

$sourceid

"20 echo"

sourceid.dat: "21

catsourceid.dat

22 rm-rdf "

$releasedir"23

24 ipapath="

$/$_$_from_$.ipa"25

26 echo"

"27 xcodebuild -target "

$targetname

"-configuration distribution -sdk iphoneos build"29

if[ $sourceid == ""]

30then

31cd$releasedir

32 zip -r "

$_$_$.zip"""

33 mv"

$_$.zip

"$distdir 2

< /dev/null

34 cd../..

35else

36 echo"

***開始打ipa渠道包****

""-o "

$ipapath

"--sign "

iphone distribution:******"38

fi39 done

注:以上的data.dat檔案為存放渠道號列表的檔案 其格式為:3g:1001b 即 (渠道名:渠道號) sourceid.dat 為專案檔案中存放渠道號的檔案(內容只有乙個渠道號)。當然了上面指令碼只是說明了下如何利用xcodebuild 和 xcrun 進行打包 以及自動打包的乙個邏輯,shell指令碼好的同學可以自由發揮哈。。。

01    #!/bin/sh

02 sourceipaname="

母包名.ipa

"04 distdir="

/users/l***/qa"//

打包後檔案儲存目錄

05 version="

1.0.0

"06 rm-rdf "

$distdir

"07 mkdir"

$distdir

"unzip $sourceipaname //

解壓母包檔案

08 forline in$(catdata.dat) //

讀取渠道號檔案並進行迴圈

09do

10 ipafilename=`echo$line|cut-f1 -d':'

`11 sourceid=`echo$line|cut-f2 -d':'

`12 echo"

ipafilename=$ipaname

"13 echo"

sourceid=$sourceid

"14 targetname="

ipa包名

"15 echo"

sourceid=$sourceid

"16 echo"

ipafilename=$ipafilename"17

cdpayload

1819 echo"

replace sourceid.dat before: "20

catsourceid.dat

21 echo"

$sourceid

"22 echo"

replace sourceid.dat after: "23

catsourceid.dat

24if[ $sourceid == ""]

25then

26cd..

27 zip -r "

$_$_from_$.zip

2829 mv"

$_$_from_$.zip

"$distdir

30cd..

31else

32 cd../..

33 zip -r "

$_$_from_$.ipa

"payload //

打成其他渠道的包

34 mv"

$_$_from_$.ipa

"$distdir

35fi

36 donerm-rdf payload

iOS自動化打包

ios專案自動打包指令碼 1.指令碼自動打包 2.上傳到fir.im 3.傳送郵件給測試人員 需要安裝的相關指令軟體 1.python 2.7 2.xcode 3.fir.im指令 使用方法 1.安裝xcode 2.安裝fir.im的指令,安裝方法見 3.配置相關資訊 python ipa.py c...

iOS自動化打包

第一步 如果要發布到fir,需要安裝 終端執行gem install fir cli 第二步 如果沒有安裝過rvm,需要安裝rvm,在終端輸入rvm v命令檢視,如果列印出rvm command not found說明沒有安裝過rvm,如果能列印出rvm版本等資訊說明安裝過。如果沒有安裝過rvm可以...

iOS 專案自動化打包實踐

1.1 安裝fir.cli 具體安裝步驟見github.1.2 xcode 證書配置xcode 根據不同的模式配置不同的證書,預設有release,debug,可自行新增,新增方法見圖。adhoc 就是新新增的用於測試分發 的打包方式。配置adhoc證書 debug 除錯模式,配置除錯證書 rele...