目錄
一、描述文件
.mobileprovision
的再次認(rèn)識二、使用Xcode增加環(huán)境變量為每個(gè)打包環(huán)境對應(yīng)一個(gè)打包模式
三、認(rèn)識打包命令
四、自動(dòng)化打包時(shí)候,參數(shù)化環(huán)境改變
五、打包完后
1、Bugly 符號表上傳
2、分支branch與標(biāo)簽tag附:描述文件的位置與內(nèi)容查看
前言
首先說明這邊不對簡單的打包再累訴,因?yàn)榫W(wǎng)上一堆。
這邊只對一些平時(shí)不容易注意的東西,以及重要的一些點(diǎn)進(jìn)行說明。
1、要達(dá)到的目的/效果:
構(gòu)建一個(gè)Jenkins項(xiàng)目,通過該項(xiàng)目,在輸入打包環(huán)境后自動(dòng)打包項(xiàng)目。
2、實(shí)現(xiàn)過程中需要了解和操作的東西:
①項(xiàng)目中存在多個(gè)環(huán)境
②每個(gè)環(huán)境都有自己打包時(shí)候需要的對應(yīng)描述文件
一、描述文件.mobileprovision
的再次認(rèn)識
通過以下表格,你將認(rèn)識到為什么你這個(gè)環(huán)境需要使用這個(gè)描述文件打包,用其他描述文件會(huì)有什么問題。
類型 | 可安裝的設(shè)備 | 證書環(huán)境(開發(fā)/生產(chǎn)) | 推送 | 用于測試環(huán)境(測試/預(yù)生產(chǎn)/生產(chǎn)) |
---|---|---|---|---|
development | 已注冊的設(shè)備 | 開發(fā)環(huán)境的證書 | 測試環(huán)境的推送 | 測試環(huán)境 |
adhoc | 已注冊的設(shè)備 | 生產(chǎn)環(huán)境的證書 | 和appstore一樣的正式環(huán)境推送 | 預(yù)生產(chǎn)環(huán)境 |
appstore | 所有的設(shè)備 | 生產(chǎn)環(huán)境的證書 | appstore的推送肯定是要正式環(huán)境的 | 生產(chǎn)環(huán)境 |
所以在需要考慮收到的推送環(huán)境是否正確的情況下,有下面的因果關(guān)系:
二、使用Xcode增加環(huán)境變量為每個(gè)打包環(huán)境對應(yīng)一個(gè)打包模式
首先,請回想你是否有以下這個(gè)笨笨的經(jīng)歷,如果有請認(rèn)真看本節(jié)內(nèi)容。
什么經(jīng)歷呢?即:給測試人員打預(yù)發(fā)布版本的時(shí)候,去Xcode設(shè)置里選
xxx_adhoc.mobileprovision
,提線上版本的時(shí)候,又去Xcode里將它改為xxx_appstore.mobileprovision
。image.png
本操作沒什么問題,就是你不覺得如果可以不用改來改去的話會(huì)更好嗎?
所以,以下說法鑒于你不想每次打包時(shí)候去Xcode設(shè)置里頻繁的根據(jù)所需要的環(huán)境修改使用的描述文件。不去修改才是正道,如果你習(xí)慣了頻繁的修改,建議你改掉那個(gè)習(xí)慣。如果你不想改,請略過本小節(jié)。
問題/為什么會(huì)有此操作:
我們的正常開發(fā)環(huán)境總有“測試環(huán)境”、“預(yù)生產(chǎn)環(huán)境”、“生產(chǎn)環(huán)境”三種環(huán)境,而Xcode默認(rèn)的模式只有DEBUG和RELEASE兩種模式。沒法讓我們一一對應(yīng)。解決:
在項(xiàng)目中增加一個(gè)預(yù)發(fā)布環(huán)境或者再增加其他多個(gè)環(huán)境。即使用Xcode增加環(huán)境變量為每個(gè)打包環(huán)境對應(yīng)一個(gè)打包模式步驟:
步驟①、點(diǎn)擊下方的"+",選擇復(fù)制Debug模式的欄目
image.png
細(xì)心的你,可能會(huì)發(fā)現(xiàn)我們項(xiàng)目中這里有pod,所以我們需要立即執(zhí)行一下pod install,讓pod自己去生成新的正確的xcconfig文件才能被識別到。否則待會(huì)你編譯的時(shí)候會(huì)報(bào)錯(cuò)。那么你打包的時(shí)候肯定也會(huì)報(bào)錯(cuò),一般是報(bào)Pod庫問題,如下圖:image.png
重新pod install后的圖如下:image.png
步驟②、因?yàn)閯?chuàng)建的 Prerelease 環(huán)境變量,是copy Debug模式下的,所以在Xcode的配置中需要更改預(yù)編譯的環(huán)境變量為PRERELEASE=1,,修改處路徑是:TARGETS-->Build Settings-->Preprocessor Macrosimage.png
恭喜您,至此,使用Xcode增加環(huán)境變量為每個(gè)打包環(huán)境對應(yīng)一個(gè)打包模式結(jié)束。
分割圖1.jpg
附:有時(shí)候您還想讓app根據(jù)不同的環(huán)境顯示不同的應(yīng)用名,那么您可以:
image.png
打包配置就講到這,下面講講打包命令。這個(gè)在自動(dòng)化打包中常需要用到。建議都熟悉一下。
三、認(rèn)識打包命令
所使用的打包命令:
1、archive
略
2、exportArchive
這個(gè)步驟,著重介紹需要使用的exportOptionsPlist文件內(nèi)容是怎樣的,如果要修改要怎么修改
。
所以,我們再對平時(shí)手動(dòng)打包出來的文件目錄,重新認(rèn)識下。細(xì)心的你應(yīng)該發(fā)現(xiàn)里面其實(shí)已經(jīng)有一個(gè)ExportOptions .plist
文件了。
ExportOptions(打包出來的文件目錄).png
我們打開該文件查看一下里面的內(nèi)容。
ExportOptions(打包出來的內(nèi)容).png
下面我們舉個(gè)例子
其中的重點(diǎn)是
上面的key值,是bundleID,肯定是有"."的;
但是下面的string值,是蘋果開發(fā)者中心下管理描述文件下的Name,而不是下載下來生成的Name,或者自己改的Name。這個(gè)點(diǎn)尤其要注意。
描述文件匹配.png
仔細(xì)看圖,上面的Name自己在創(chuàng)建時(shí)候,命名的是有.的,所以我們這邊exportOptionsPlist文件中的這個(gè)string值,也應(yīng)該使用有.的(當(dāng)然如果你取的時(shí)候是沒有,那這邊也應(yīng)該是沒有,反正這邊的是要和網(wǎng)站上的Name保持一致的,而不是自己隨便重命名的那個(gè))。
四、自動(dòng)化打包時(shí)候,參數(shù)化環(huán)境改變
參數(shù)化環(huán)境改變,這是什么鬼意思?
首先,在我們的項(xiàng)目中,肯定有一個(gè)變量是控制當(dāng)前打包的是什么環(huán)境的代碼吧。一般的代碼如下:
如果我們是手動(dòng)打包,那么每次打包之前都得修改當(dāng)前打包的環(huán)境變量。那自動(dòng)化打包的時(shí)候呢?難不成我們也那么處理,每次打包時(shí)候,去修改項(xiàng)目中的代碼,讓其打包成我們想要的環(huán)境??梢?,但不要這么做,下面將告訴你為什么?
試想以下兩種情況,情況①,什么功能都沒修改,只是為了換個(gè)打包環(huán)境就得去修改代碼,然后重新commit,Jenkins再構(gòu)建,是不是感覺不知不覺多了很多不必要的commit節(jié)點(diǎn)。情況②,某個(gè)分支下已經(jīng)是穩(wěn)定的了,如master,但是測試人員想要不同的環(huán)境,你認(rèn)為為了這個(gè)需求,你頻繁的去改這個(gè)穩(wěn)定的版本有必要嗎?(情況①在這里就顯得更容易理解了)。
所以為了避免這些多余的無用功,我們將更改環(huán)境的操作,參數(shù)化到Jenkins中執(zhí)行命令的地方,通過命令中所帶的參數(shù)結(jié)合python腳本,讓python腳本去把我們項(xiàng)目中的環(huán)境變量值改為命令中的。
這里我們把環(huán)境改變腳本macro_env.py和要改變的文件單獨(dú)提取出來測試。
參數(shù)化環(huán)境改變1.png
可以看到執(zhí)行命令后,腳本中指定的文件中的CJDemoCurrentEnvironment
變量的值被我們改變成了Develop3
(原本在項(xiàng)目中的值為Develop1
)。
附:腳本小樣地址:CJDemo
分割圖1.jpg
五、打包完后
1、Bugly 符號表上傳
打包完后,為了能快速并準(zhǔn)確地定位用戶APP發(fā)生Crash的代碼位置,每次Jenkins構(gòu)建成功后,需要上傳符號表到Bugly,以備后續(xù)使用符號表對APP發(fā)生Crash的程序堆棧進(jìn)行解析和還原。詳細(xì)操作略,請前往官網(wǎng)查看Bugly iOS 符號表配置的配置方法。
2、分支branch與標(biāo)簽tag
①、功能開發(fā)時(shí)候的分支情況:
功能開發(fā)時(shí)候的分支情況.png
②、進(jìn)入發(fā)布時(shí)候的分支情況:
進(jìn)入發(fā)布時(shí)候的分支情況.png
③、發(fā)布后開始維護(hù)時(shí)候的分支情況:
發(fā)布后開始維護(hù)時(shí)候的分支情況.png
附:描述文件的位置與內(nèi)容查看
描述文件的位置~/Library/MobileDevice/Provisioning Profiles
描述文件的位置.png
在上圖中,點(diǎn)擊 空格鍵可以查看描述文件的詳細(xì)信息,如下圖:
描述文件的詳細(xì)信息.png