Xcode 12 打包的ipa文件不能安装到iOS 15手机上的解决方案
如果mac os 系统是 11 之前的机器,可以使用命令行工具进行重签名解决问题,步骤如下:
Apple 建议:
只有从命令行重新签名应用程序,作为更新代码签名以包含DER权限的最后手段。iOS、iPadOS、watchOS和tvOS不支持通过命令行重新签名应用程序。建议您尽快使用macOS 11或更高版本的应用程序签名。
- 进入到ipa包文件目录
// 使用命令解压ipa文件,得到Payload文件夹
-> unzip -q xxx.ipa
- 进入payload文件夹
// 使用命令查看app包是否需要重签名, 如果CodeDirectory v=20400 值小于20400是就需要进行重签名
-> codesign -dv xxx.app
-> Executable=/Users//Desktop/xxxProject_build3/Payload/xxxProject.app/xxxProject
Identifier=com.xx.xx
Format=app bundle with Mach-O thin (arm64)
CodeDirectory v=20400 size=276437 flags=0x0(none) hashes=8630+5 location=embedded
Signature size=4824
Signed Time=Nov 5, 2021 at 10:39:22 AM
Info.plist entries=41
TeamIdentifier=3WZY2E383V
Sealed Resources version=2 rules=10 files=446
Internal requirements count=1 size=216
- 找到本机可以用于签名的证书
// 执行如下命令,终端会列出可以进行重签名的证书,找到对应的签名证书的Codesign Identity,即列表序号后面的哈希值
-> security find-identity -v -p codesigning
-> 示例:
1) JSDFJSD78SDFSJF78SDFJSKJFKS78SJFKFSDFSD "iPhone Distribution: xxxxxx Co., Ltd. (xxxx)"
2) ...
- 重签名
// 运行命令
// 参数1:签名证书id
// 参数2:签名的*.app 路径
-> codesign -s "Your Codesign Identity" -f --preserve-metadata --generate-entitlement-der /path/to/MyApp.app
// 示例
-> codesign -s "JSDFJSD78SDFSJF78SDFJSKJFKS78SJFKFSDFSD" -f --preserve-metadata --generate-entitlement-der /path/to/MyApp.app
-
将重签名后的Payload文件夹合成为新的ipa文件
// 运行命令,Payload 为原zip解压后的文件夹,里面有xx.app文件 -> zip -r {新ipa的文件名,例如:xxx.ipa} Payload -
安装新的ipa到ios15 手机上进行测试