踩坑筆記-xcode從7.x升級到8.x

公司搭建了一套基于jenkins的持續(xù)集成環(huán)境,我們一個基于cocos2d-x引擎的手游項目的打包流程也集成在這個環(huán)境里,從此打包也確實方便了很多,在管理后臺里選上對應(yīng)參數(shù),打包按鈕一按,等上個10來分鐘,熱乎乎的包(IOS&ANDROID&WIN32)就出來了,還會自動生成二維碼...
一哥們把mac升級到了10.12.4,對應(yīng)xcode版本也從7.x升級到了8.3,導(dǎo)致打包流程出了一大堆問題

  • 問題1:

我們打包時會使用luajit,用到了php模塊,由于mac升級,自帶的php版本也升級了,導(dǎo)致ZipArchive的某些api有變化,比如我們在open一個文件時是這么調(diào)用的

$zip->open($zipfile, ZIPARCHIVE::OVERWRITE | ZIPARCHIVE::CM_STORE)

當文件不存在的時候,還是會open成功,但$zip對象不會被初始化(老版本是會初始化的),后來只能修改如下:

$zip->open($zipfile, ZIPARCHIVE::CREATE |ZIPARCHIVE::OVERWRITE 
| ZIPARCHIVE::CM_STORE)

問題解決

  • 問題2:

xcrun:error:unable to find utility"PackageApplication",nota developer 
toolorinPATHError:Errorcode72forcommand:xcrunwithargs:-sdk,iphoneos,
PackageApplication,-v

原來cocos2d提供的python打包腳本是使用xcodebuild + xcrun的PackageApplication打包,但在xcode8.3已經(jīng)被棄用了,新的方法是使用archive和exportArchive來打包
下圖是我對打包腳本(project_compile.py)的修改:


這其中還涉及到獲取描述文件UUID的方法,參照:https://my.oschina.net/ioslighter/blog/494342,以及exportOptionsPlist文件的格式

  • 問題3:

xcodebuild: error: The project named "ACTGame" does not contain a scheme 
named "ACTGame". 
The "-list" option can be used to find the names of the schemes in the project.

在新的打包命令中,有指定scheme參數(shù),按照提示,在項目的xcode工程目錄輸入xcodebuild -list
發(fā)現(xiàn)有ACTGame這個scheme,而且直接xcode打包沒問題,百思不得其解,后來去打包機的工程目錄查看scheme,發(fā)現(xiàn)沒有ACTGame這個scheme,后來經(jīng)過查詢得知,需要打開工程->Product->Scheme->Manage Schemes,把要打包的scheme的shared屬性勾上(如果沒有對應(yīng)的scheme,點擊右上角的Autocreate Schemes Now自動生成對應(yīng)的scheme),這時會在xcodeprj文件夾xcshareddata目錄中生成ACTGame.xcsheme文件,把這個文件提交到打包機,問題解決。

  • 問題4:

=== BUILD TARGET ACTGame OF PROJECT ACTGame WITH CONFIGURATION Release ===
Check dependencies
Provisioning profile "gamepub_ds_delopment" doesn't include the 
currently selected device "kedlly's iPhone6".
Code signing is required for product type 'Application' in SDK 'iOS 10.3'
** ARCHIVE FAILED **

這個純粹是開發(fā)人員做死,把iphone手機連接到了打包機上,然后對應(yīng)的開發(fā)證書又沒有把他的手機uuid添加進去,手機一拔,問題解決

  • 問題5:

打出來的包在ios9以后的機器上無法訪問http地址,這個參考App Transport Security (ATS)

  • 問題6:


??打出來的包沒有開通push權(quán)限
這是因為在Xcode8之后,如果需要使用Push Notifications的功能,需要勾選Capabilities -> Push Notifications為YES,否則進行遠程推送就會有問題,并且會收到蘋果發(fā)來的這封郵件。另外push證書需要在appid把push權(quán)限打開后導(dǎo)出,否則在打包時會報錯。

以上就是我在從7升級xcode8.3以后遇到的坑,在此作個記錄,也希望能幫到其他人,少走彎路。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容