xcodebuild自動打包學(xué)習(xí)日記

本著務(wù)實(shí)求真诡曙、增加技能點(diǎn)的前提下(~想偷懶)场躯,學(xué)習(xí)了了下xcodebuild自動打包方面舷夺。在這個做個小總結(jié)猖辫,方便自己及你我他。

工具介紹

xcodebuild builds one or more targets contained in an Xcode project, or builds a scheme contained in an Xcode workspace
xcodebuild就是用來構(gòu)建產(chǎn)品的命令行工具伍宦,其用法可以歸結(jié)為3個部分:

  • 可構(gòu)建的對象
  • 構(gòu)建行為
  • 一些其他輔助命令

可以構(gòu)建的對象有:(默認(rèn)情況下會運(yùn)行project下的第一個targect)

  • workspace:必須和“-scheme”一起使用诺苹,構(gòu)建該workspace下的一個scheme。
  • project:當(dāng)根目錄下有多個Project的時候雹拄,必須使用“-project”指定project
  • target:構(gòu)建某個Target
  • scheme:和“-workspace”一起使用,指定構(gòu)建的scheme掌呜。

構(gòu)建行為有:

  • xcodebuild clean:清除build目錄下的
  • xcodebuild build: 構(gòu)建
  • xcodebuild test: 測試某個scheme滓玖,必須和"-scheme"一起使用
  • xcodebuild archive:打包,必須和“-scheme”一起使用
  • xcodebuild -exportArchive:包導(dǎo)出

輔助命令有:

  • man xcodebuild:查看手冊
  • xcodebuild -version:查看版本號
  • xcodebuild -help:查看幫助
  • xcodebuild -showsdks:查看已安裝SDK列表
  • ...

打包測試

打包過程中主要使用了一下三個命令:

xcodebuild clean 清理工程
xcodebuild archive 編譯打包文件
xcodebuild -exportArchive 導(dǎo)出IPA包

需要兩個文件build.shExportOptions.plist

截屏2020-07-08 下午3.40.21.png

build.sh
#!bin/sh

echo "開始工程清理"
# ${workspace} 工程中,.xcworkspace的文件名字
# ${scheme} 當(dāng)前要編譯運(yùn)行的scheme
# configuration ${Debug或者Release} 當(dāng)前是要以Debug運(yùn)行還是以Release運(yùn)行
# -quiet 忽略警告提示打印
# -UseNewBuildSystem=NO 是否使用新的build系統(tǒng)
xcodebuild clean -workspace "YourProjectWorkspace.xcworkspace" -scheme "Yourscheme" -configuration Release -UseNewBuildSystem=NO
echo "工程清理完成"

echo "開始工程打包"
#${workspace} 工程中,.xcworkspace的文件名字
#${scheme} 當(dāng)前要編譯運(yùn)行的scheme
#configuration ${Debug或者Release} 當(dāng)前是要以Debug運(yùn)行還是以Release運(yùn)行
#-archive_path 導(dǎo)出.xcarchive文件的存放路徑
#CODE_SIGN_IDENTITY 證書文件名
#PROVISIONING_PROFILE 運(yùn)行文件UUID
xcodebuild archive -workspace "YourProjectWorkspace.xcworkspace" -scheme "Yourscheme" -configuration Release -archivePath "~/Desktop/autoPack/SetUpConfig"
echo "工程打包完成"

echo "開始導(dǎo)出IPA包"
#xcodebuild -exportArchive -archivePath archive文件的地址.xcarchive
#                          -exportPath 導(dǎo)出的ipa文件夾地址
#                          -exportOptionsPlist exprotOptionsPlist.plist(前面路徑會自動補(bǔ)全)
#                          CODE_SIGN_IDENTITY=證書
#                          PROVISIONING_PROFILE=描述文件UUID
xcodebuild -exportArchive -archivePath "~/Desktop/autoPack/SetUpConfig.xcarchive" -exportPath "~/Desktop/autoPack/SetUpConfig.ipa" -exportOptionsPlist "ExportOptions.plist"

scheme可以使用xcodebuild -list命令查看
CODE_SIGN_IDENTITYPROVISIONING_PROFILE 如果不需要指定可以不用寫质蕉,它會根據(jù)你xcode中的配置去自動匹配

ExportOptions.plist

這個在使用xcode打包后會生成势篡,建議使用xcodebuild自動打包前先使用xcode打一個包,保證項(xiàng)目代碼和各項(xiàng)配置沒有問題模暗。


截屏2020-07-08 下午3.57.09.png

執(zhí)行命令

打開終端,cd到工程目錄,輸入 sh ./build.sh

遇到的問題

** ARCHIVE SUCCEEDED **

工程打包完成
開始導(dǎo)出IPA包
2020-05-09 11:33:57.289 xcodebuild[20203:817143] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/_6/t0xhscld37g6mb17jt4cv2sw0000gn/T/SetUpConfiguartion_2020-05-09_11-33-57.287.xcdistributionlogs'.
error: exportArchive: The data couldn’t be read because it isn’t in the correct format.

Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value., NSFilePath=/var/folders/_6/t0xhscld37g6mb17jt4cv2sw0000gn/T/ipatool-json-filepath-~~~EygMH8}

** EXPORT FAILED **

按照提示禁悠,前往錯誤日志文件地址,找到錯誤日志文件

/var/folders/_6/t0xhscld37g6mb17jt4cv2sw0000gn/T/SetUpConfiguartion_2020-05-09_11-33-57.287.xcdistributionlogs

在錯誤日志中看到

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sqlite3 (LoadError)

終端執(zhí)行 gem list | grep sqlite3 如果沒有輸出信息說明少了sqlite3 這個文件兑宇。
執(zhí)行 gem install sqlite3 --platform=ruby 安裝碍侦,如果是已安裝 則繼續(xù)執(zhí)行 rvm use system --default

我看網(wǎng)上很多文章都說如果出現(xiàn)這個問題是因?yàn)?strong>xcode上的Enable BitCode問題,設(shè)置為No即可。這時可以使用xcode打包并導(dǎo)出測試一下瓷产,如果xcode打包并導(dǎo)出都沒有問題站玄,則不是Enable BitCode問題
關(guān)于Enable BitCode,可以看看這位大神的文章:關(guān)于bitcode, 知道這些就夠了

參考
# iOS系統(tǒng)提供開發(fā)環(huán)境下命令行編譯工具:xcodebuild

iOS 自動化打包(xcodebuild)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末濒旦,一起剝皮案震驚了整個濱河市株旷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尔邓,老刑警劉巖晾剖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梯嗽,居然都是意外死亡齿尽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門慷荔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雕什,“玉大人,你說我怎么就攤上這事显晶〈叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵磷雇,是天一觀的道長偿警。 經(jīng)常有香客問我,道長唯笙,這世上最難降的妖魔是什么螟蒸? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮崩掘,結(jié)果婚禮上七嫌,老公的妹妹穿的比我還像新娘。我一直安慰自己苞慢,他們只是感情好诵原,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挽放,像睡著了一般绍赛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辑畦,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天吗蚌,我揣著相機(jī)與錄音,去河邊找鬼纯出。 笑死蚯妇,一個胖子當(dāng)著我的面吹牛敷燎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侮措,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼懈叹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了分扎?” 一聲冷哼從身側(cè)響起澄成,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畏吓,沒想到半個月后墨状,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菲饼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年肾砂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏悦。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡镐确,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饼煞,到底是詐尸還是另有隱情源葫,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布砖瞧,位于F島的核電站息堂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏块促。R本人自食惡果不足惜荣堰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望竭翠。 院中可真熱鬧振坚,春花似錦、人聲如沸斋扰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褥实。三九已至,卻和暖如春裂允,著一層夾襖步出監(jiān)牢的瞬間损离,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工绝编, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留僻澎,地道東北人貌踏。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像窟勃,于是被迫代替她去往敵國和親祖乳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355