1、首先准备好待签名的ipa (此ipa 为非299$的开发账号签名后的ipa),企业版发布证书,embedded.mobileprovision配置文件,entitlements.plist 文件。证书配置与创建配置文件这里不做赘述。 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>AAAAAA.com.test.test</string>
<key>com.apple.developer.team-identifier</key>
<string>AAAAAA</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>AAAAAA.com.test.test</string>
</array>
</dict>
</plist>
AAAAAA.com.test.test 可在开发账号中获取,如果嫌麻烦可以直接使用 iResign 工具直接签名后,解压签名后得ipa也可以得到该文件。
2、将embedded.mobileprovision配置文件,entitlements.plist,ipa 放到同一个文件夹下。方便操作。
a、解压ipa
$ unzip Your.ipa
b、删除原先的签名信息文件
$ rm -rf Payload/Your.app/_CodeSignature/
c、删除动态库的签名信息文件(这一步在很多重签名文字很少提及,但是又非常重要,动态库没有重签名会导致ipa可以安装,但是打开会闪退。由于我使用了七牛播放器所以删除签名信息,以下以PLPlayerKit.framework为例,大家使用别的动态库请自行删除)
$ rm -rf Payload/Your.app/Frameworks/PLPlayerKit.framework//_CodeSignature/
d、动态库重新签名 (如果没有其他动态库可以跳过,多个就逐个签吧)
$ codesign -f -s "iPhone Distribution: *******" Payload/Your.app/Frameworks/PLPlayerKit.framework/
e、app重签名
$codesign -f -s "iPhone Distribution: *******." -- entitlements entitlements.plist Payload/Your.app
f、打包ipa
$zip -r Your.app Payload
3、如果包名改不改无所谓可以直接使用工具重签名,方便快捷。如果需要保持包名不变。可以按以上操作打包。
网友评论