经过几个小时的绞尽脑汁,我是这样做的:
注意:我目前尚未针对 iOS 8.1.2 或更低版本进行测试(请谨慎操作!)
对于已使用您自己的企业证书签名的应用程序,您所要做的就是编辑manifest.plist(正如 RAStudios 在他的编辑中提到的):
Before:
<key>bundle-identifier</key>
<string>uk.co.acme.AcmeApp</string>
After:
<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
对于已由第三方签名的应用程序您要使用企业证书进行辞职(本演练假设 ipa 文件是 AcmeApp.ipa,您的权利文件是 entitlements.plist,您的配置文件是 provProvile.mobileprovision;所有文件都位于桌面文件夹 (Mac OSX) 中, S836XXACME 是您的团队标识符):
创建一个新的 entitlements.plist 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
<key>get-task-allow</key>
<false/>
</dict>
</plist>
解压ipa:
cd ~/Desktop
unzip AcmeApp.ipa
删除代码签名:
rm -r Payload/AcmeApp.app/_CodeSignature/
复制 mobileprovision 文件:
cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision
协同设计:
codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
将其压缩为已退出的 ipa:
zip -qr AcmeApp_resigned.ipa Payload/
您还需要根据之前的“ALREADY”签名部分修改manifest.plist文件:
<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>