公司申請(qǐng)了一臺(tái) mac mini 本來是用來方便iOS專屬打包,而搭建Jenkins自動(dòng)發(fā)布平臺(tái)的,但是鑒于領(lǐng)導(dǎo)是android控 于是乎 對(duì) mac mini 配置進(jìn)行 大大改造 以至于 本來好好的 iOS項(xiàng)目的打包功能 也陷入癱瘓(關(guān)鍵你改了 你說一聲,你也不吭聲)。。。。
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)叢臺(tái)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。好吧接下來說問題,
開始自動(dòng)化編譯ipa,嘩嘩打印日志 突然
error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: **** --resource-rules=/var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/****.app/ResourceRules.plist --entitlements /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/entitlements_plistGMvHUypG /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/******.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)! Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
問題來了,在 Mac OS X >= 10.10 的系統(tǒng)中 針對(duì) /ResourceRules.plist 的檢測(cè)已經(jīng)廢棄了,
對(duì)比
于是乎 Mac OS X >= 10.10 的系統(tǒng)中并且 xcode 8 build環(huán)境 ,build ****.app 的時(shí)候 沒有了ResourceRules.plist
但是 xcode 8 的 內(nèi)部的一個(gè) 負(fù)責(zé)打包的可執(zhí)行腳本 還是要檢測(cè)ResourceRules.plist 來打包程序,結(jié)果找不到,所以報(bào)錯(cuò),卡卡卡。。
解決方案 這樣 打開路徑 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
打開 編輯之前 建議將原腳本 備份一下,省的出什么幺蛾子。
備份完畢
找到 codesign_args
look 簽名時(shí) 檢測(cè) 了 --resource-rules=$destApp/ResourceRules.plist 可但是 .app 文件內(nèi)并無此文件,
所以對(duì)這個(gè)變量稍作修改了,
修改如下
my @codesign_args;
if (-e '$destApp/ResourceRules.plist') { # If ResourceRules.plist exists, include it in codesign arguments, for backwards compatability
@codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
"--sign", $opt{sign},
"--resource-rules=$destApp/ResourceRules.plist");
} else { # If ResourceRules.plist isn't found, don't include it in the codesign arguments
@codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
"--sign", $opt{sign});
}
規(guī)避 ResourceRules.plist 的檢測(cè) 打包;
如上就是解決
error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: **** --resource-rules=/var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/****.app/ResourceRules.plist --entitlements /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/entitlements_plistGMvHUypG /var/folders/zy/9qwmy3j50qb2g8pbtj9hxyvm000086/T/HjWeg6NTbj/Payload/******.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)! Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
問題 如果問題還是沒有解決
多看看 是不是證書和簽名的問題 避免 簽名證書 存放到 系統(tǒng)鑰匙串中,一定要存放到登錄鑰匙串中?。?!而且盡量只存在一個(gè)證書(開發(fā)或者生產(chǎn)的,避免jenkins找不到該使用哪一個(gè)), 同時(shí)還有刪除一些 無用的私鑰,這也是是一個(gè)容易被忽略的坑 ;
一般咱們?cè)谧约旱膍ac上編譯打包的時(shí)候,在打包過程中會(huì)提示 “是否允許訪問私鑰” 一般選擇 “總是允許”,但是鑒于jenkins是遠(yuǎn)程自動(dòng)化打包,所以事先要對(duì)所使用的證書的私鑰設(shè)置成“允許所有程序訪問”,當(dāng)然了取決于 所處環(huán)境的安全策略要求了。。
如下圖
如此即可。。
其實(shí)以上都是一些老生常談的問題,但是不管操作過多少次,每次使用jenkins都是出現(xiàn)各種新鮮花樣的問題,但是問題還是在掌控之中能夠處理的,大家僅以慰藉,希望能對(duì)大家有所幫助。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。