Intro
由于跨区合作,新买的设备无法及时的添加进账户,可又当天需要展示,只好使用个人账号对已交付的ipa重签名。
具体实现步骤
签名打包使用了iResign,还需要:证书,provision文件和entitlement。另外,还需要修改app的bundle identifier。
provision文件需要包含待测试的设备,这里主要说明下entitlements.plist文件的生成。一个打包好的ipa中,本身包含了这种信息,我们可以使用工具导出:
/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i ./Payload/Mobile\ Site\ Solutions.app/embedded.mobileprovision) > entitlements.plist
修改后,需要将com.apple.developer.team-identifier
值修改为你自己证书的信息。
还有一个需要修改的地方是:get-task-allow
需要设置为 false
,意为不允许其他进程依附程序(一般情况,adhoc和release版,该值或为空或为true)。
接下来,就使用iResign,依次选择相应的文件即可。安装重签名ipa失败时,设备在身边的话,可以查看console信息,一般情况下都有说明。常见的错误就是provision和entitlement之间的验证信息匹配失败。
参考
顺便学习了下签名知识,摘取了几个重要命令:
//查看证书信息
security find-identity -v -p codesigning
//查看app签名信息
codesign -vv -d Payload/yourApp.app/
验证签名信息
codesign --verify Example.app
//查看已签名app的entitlements信息,即app开启的capability的能力信息
codesign -d --entitlements - Payload/yourApp.app/
//查看provision 配置文件的信息
security cms -D -i Payload/yourApp.app/embedded.mobileprovision
Comments