ios - 重新签署包含框架的 IPA

标签 ios code-signing ipa codesign

我正在重新签署一个 iOS 应用程序(使用 iResign),以便将其上传到 App Store;作为其中的一部分,我正在更改包 ID。 我只有 IPA(没有源代码)。

该应用包含第三方框架。

辞职似乎很顺利;但是当我使用 Application Loader 上传时,出现以下错误:

ERROR ITMS-90046: "Invalid Code Signing Entitlements. Your application bundle's signature 
contains code signing entitlements that are not supported on iOS. 
Specifically, value 'XXXXXXXXXX.COM.X.Y.Z.A' for key 'application-identifier' in 
'Payload/APPNAME.app/Frameworks/FRAMEWORKNAME.framework/FRAMEWORKNAME' is not supported. 
This value should be a string starting with your TEAMID, followed by a dot '.', followed by
the bundle identifier."

(显然我已经更改了大写显示的值)

我假设问题是我的 entitlements.plist 中的应用程序标识符与我的应用程序中的 Bundle 标识符匹配,但与框架中的 Bundle 标识符不匹配。

为了排除这种情况,我在框架和应用程序上设置了相同的 Bundle 标识符。这确实允许我上传到应用程序商店;但是当我尝试将应用程序安装到 iPad 时失败并出现错误。

我是否需要为框架提供单独的授权文件? 我该如何解决这个问题?

更新:为了排除这种可能性,我尝试使用通配符配置文件和权利 plist;但这给出了同样的错误

最佳答案

您也必须重新签署框架。

只要打开你的.ipa,找到下面用到的框架

有效载荷/MyApp.app/Frameworks

尝试用下面的命令签名

/usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*

之后重新压缩它。

此外,许多人使用 AirSign 获得了不错的效果。

关于ios - 重新签署包含框架的 IPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078983/

相关文章:

iphone - 使用 CCTMXLayer 处理大型 map

ios - tableView.reloadData() 添加了一个它不应该做的 UIView

android - .apk 文件如何签名

macos - Codesign 说 "no identity found"但是身份在钥匙串(keychain)上

android - 如何使用 Android Studio 在 Flutter 中构建 .apk 和 .ipa?

ios - 应用商店分发过程中存档验证失败并出现错误

iOS 应用程序仅在 TestFlight 构建时崩溃

iphone - 在 Release模式下运行时,拇指查看器中出现奇怪的 three20 图形错误

ios - 在没有临时配置文件的情况下部署应用程序

iOS - 在设备上安装未签名的 .ipa