? ? ? ?在實(shí)現(xiàn)iOS項(xiàng)目的自動(dòng)打包工程中星著,我們需要配置好工程的證書(shū)文件信息牵触,為了能夠自動(dòng)的根據(jù)bundle id來(lái)設(shè)置不同的profile文件处铛,我們可以通過(guò)腳本文件來(lái)修改工程的projext.pbxproj文件幫助我們進(jìn)行自動(dòng)設(shè)置错蝴。
? ? ? ?測(cè)試環(huán)境:xcode8 多target
1. Project.pbxproj
Xcode項(xiàng)目中的xxx.xcodeproj其實(shí)是一個(gè)文件夾果覆,右鍵單擊xxx.xcodeproj,顯示包內(nèi)容:
Project.pbxproj的解析
關(guān)于這個(gè)配置文件的結(jié)構(gòu)夫否,請(qǐng)參考project.pbxproj彻犁,最熟悉的”陌生人(http://www.olinone.com/?p=215),解析該文件可以使用現(xiàn)有的解析工具mod-pbxproj凰慈,該工具是一個(gè)python的腳本汞幢。其github地址為:https://github.com/kronenthaler/mod-pbxproj。
為了修改不同taget的profile微谓,我們需要知道這些配置在文件中的具體位置森篷,不難發(fā)現(xiàn):
我們的目標(biāo)是為不同的bundle id設(shè)置不同的profile,所以只需要找到不同target的XCBuildConfiguration豺型,修改其中PROVISIONING_PROFILE的值即可仲智。通過(guò)分析project.pbxproj文件結(jié)構(gòu),你會(huì)發(fā)現(xiàn)其找到這些target的buildSettings的路徑如下:
rootObject=> PBXNativeTarget=> XCConfigurationList=> XCBuildConfiguration姻氨。
XCBuildConfiguration會(huì)有Debug和Release兩個(gè)版本钓辆,這里我們以修改Release版本的為例進(jìn)行說(shuō)明。
2. Python腳本修改profile
需要在工程目錄下配置如下腳本文件肴焊,通過(guò)從json文件中讀取配置信息前联,然后根據(jù)不同的bundle id來(lái)設(shè)置不同的profile文件和其他字段信息。其中xcode_configurator_profile.py為修改profile的腳本文件娶眷,profile.json為配置的證書(shū)信息似嗤。demo如下圖所示:
首先在profile.json文件中配置好bundle id和對(duì)應(yīng)的profile文件,如下如所示:
然后在工程目錄下執(zhí)行xcode_configurator_profile.py:
檢查profile修改結(jié)果:
如果設(shè)置了以后有任何問(wèn)題茂浮, 你可以在對(duì)應(yīng)的xxx.xcodeproject下找到對(duì)應(yīng)的備份。
文章中源碼及demo可見(jiàn)github:https://github.com/cornyu/xcode_auto_configurator_profile