測試build是通過TestFlight遞交的,測試人員手上沒有源代碼,開發人員在國外,不方便共享源碼,如何能做IOS的
自動化測試?
經過折騰,發現了個可能的辦法,
1. 先通過TestFlight安裝build
2. 再把build通過ifanbox把build導出來成為ipa文件
3. 下面就需要把ipa文件重新簽名,方法有兩種
方法一:
利用商業化工具簽名,SeeTest支持把ipa重新簽名,簽名需要提供 provision文件,和開發者證書私鑰和密碼
方法二:
自己想辦法簽,代碼參考如下
unzip app.ipa rm -rf Payload/MyApp.app/_CodeSignature/ cp ~/Downloads/AdHoc.mobileprovision Payload/MyApp.app/embedded.mobileprovision codesign -f -s "iPhone Distribution: Company Certificate" --resource-rules Payload/MyApp.app/ResourceRules.plist Payload/MyApp.app zip -qr app-resigned.ipa Payload/ |
其中"iPhone Distribution: Company Certificate"是你證書的common name, 別的沒什么要注意的。
方法三:
網上有推薦用一個叫iresign的工具簽名,其實挺好用,該工具只能
工作在mac下面
個人推薦用方法三,但是要注意一個問題,就是iresign需要你提供四個信息,一個是ipa文件,一個是provision文件,一個是證書的common name,最后一個是entitlements.plist文件。前三個想必大家都懂,但是第四個之前真沒聽過,網上資料也有限。
請用下面的方法生成entitlements.plist文件
/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i production.app/embedded.mobileprovision) > entitlements.plist /usr/libexec/PlistBuddy -c 'Set :get-task-allow true' entitlements.plist |
生成之后,再利用iresign,就可以做出一個可以被xcode instrument的ipa包了。