iOS签名工具iOS App Signer解决TestFlight IPA包报错的问题
in 默认分类 with 0 comment

给客户提交一个TestFlight IPA包时,返回签名错误。
8edee79e2afb3ebdf6cbef1660189fb0.png

用开源工具App Signer重新签名。
工具下载地址
https://github.com/DanTheMan827/ios-app-signer/releases/tag/1.14

0AF149BD25D5A1B9940B694C63B941FC.png

重新提交,发现还是报错:
Validation failed (409)
CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value 'com.xxxxxxxx.cn' under the iOS application 'Runner.app'. (ID: xxxxxxx-fb15-4684-a360-xxxxxxx)

核心问题:
IPA 里,除了主 App,还有几十个第三方框架和隐私 Bundle,全都用了同一个 com.XXXXXXXX.cn,苹果不允许,必须把它们的 ID 全部改掉。

第一步:先解压 iOS App Signer 生成的 IPA
1.找到你用 iOS App Signer 生成的 *-signed.ipa 文件
2.把它的后缀改成 .zip,双击解压,得到 Payload 文件夹

第二步:修改所有冲突的 ID
1.打开「终端」,输入下面的命令,一次性修改所有冲突的 ID(不用你手动一个个改):

# 进入解压后的目录(把路径换成你自己的)

标题文字

cd /Users/sean/Downloads/Payload/Runner.app

批量修改所有子Bundle的ID,加随机后缀,彻底解决冲突 find . -name "Info.plist" -type f | while read plist; do

CURRENT_ID=$(/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "$plist" 2>/dev/null || true)
if [ "$CURRENT_ID" = "com.xxxxxxxxxxx.cn" ] && [[ "$plist" != "./Info.plist" ]]; then

NEW_ID="com.xxxxxxxxxxx.cn.$(uuidgen | cut -d- -f1)"
echo "修改 $plist 的 BundleID 为 $NEW_ID"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $NEW_ID" "$plist"

fi
done

执行完后,终端会打印所有被修改的文件,你会看到几十个框架和 Bundle 的 ID 都被改成了唯一的随机值。

第三步:重新打包并签名
1.回到 Payload 所在的上级目录,选择Payload目录和SwiftSupport, 右键「压缩 “Payload”」,得到 Payload.zip
2.把 Payload.zip 改名为 final.ipa
3.再次打开 iOS App Signer,按你之前的配置,重新对 final.ipa 签名一次(证书和描述文件和之前一样)


Warning: Undefined array key "permalink" in /www/wwwroot/www.sys0.cn/usr/themes/pinghsu/functions.php on line 255

Warning: Undefined array key "permalink" in /www/wwwroot/www.sys0.cn/usr/themes/pinghsu/functions.php on line 274
Responses