27

我们正在尝试在 iOS 15 上测试应用程序,发现我们收到此消息 App需要更新。

谁能告诉我这条消息背后的原因?现有用户必须删除该应用程序并重新安装才能摆脱此警报。

4

4 回答 4

36

我的企业应用程序也遇到了同样的问题,幸运的是我设法解决了这个问题。

如果您使用企业帐户部署应用程序,实际上有两个原因可能导致 iOS 15 上出现此问题。该问题的根密钥是一种新的签名格式,这是 iOS 15 所必需的。通过 App Store 发布的应用程序会自动退出,因此它们不受该问题的影响。

另外,请注意,造成这种情况的主要原因是使用较旧的 MacOS 版本构建 IPA。如果您更新到最新的 Big Sur,您应该能够生成正确签名的 IPA。如果您不想更新,请阅读以下解决方案。


第一个原因

Apple 在此处记录的第一个原因是您的 IPA 必须使用新的签名格式。如果 IPA 是用 MacOS 10.14 或更高版本构建的,应该很好。为确保您的 IPA 具有正确的签名,请使用以下步骤:

  • 将 MyApp.ipa 重命名为 MyApp.zip 并解压缩(您将获得一个包含 MyApp.app 的 Payload 文件夹)
  • 在终端中,运行codesign -dv /path/to/MyApp.app
  • 在输出中查看 旁边的值CodeDirectory。如果你看到v=20500v=20400,你很好。如果您看到低于 20400 的值,则需要使用以下命令对您的应用程序进行签名:(codesign -s "Your Codesign Identity" -f --preserve-metadata /path/to/MyApp.app确保您使用 MacOS >= 10.14 执行此操作,然后重新运行codesign -dv /path/to/MyApp.app以确保您现在得到v=20400v=20500
  • 压缩 Payload 文件夹并将其重命名为 MyApp.ipa

尝试重新安装此 IPA,它应该可以工作。如果没有,请阅读下面的第二个原因。


第二个原因

另一个可能的原因(Apple 未记录)有点棘手,即您可能需要重新签署您的应用程序,包括 DER entitlements。要检查您是否需要这样做,请执行以下操作:

  • 在终端中,运行codesign -dvvvvv /path/to/MyApp.app
  • 查看下的输出Page size,您应该会看到如下内容:
    -7=4ade7be00e0a7b6db853edc4843e7ece1eea646f6f13d1809f78fc50d8db461f //If this line doesn't exist or contains only 000..., you need to include DER entitlements
    -6=0000000000000000000000000000000000000000000000000000000000000000
    -5=1dfa58bd8ac3c4fb42142c1c4d28c436128b3a7460186a44526194fb690112bc
    -4=0000000000000000000000000000000000000000000000000000000000000000
    -3=ef08dbe5a7c355336e1fb571604b683ce1c54536cb59a6155a1d18387fd23f6e
    -2=5b730fa46ffd405fd88da9606d82eda9af7f460f6049047afc176163326f5a7f
  • 如上块所述,如果-7不存在或仅包含000...,那么这就是 IPA 无法正确安装的原因。要解决此问题,请执行下一步
  • 运行codesign -s "Your Codesign Identity" -f --preserve-metadata --generate-entitlement-der /path/to/MyApp.app以退出您的应用程序,包括 DER 权利。重新运行codesign -dvvvvv /path/to/MyApp.app以确保该-7值现在正确。
  • 压缩 Payload 文件夹并将其重命名为 MyApp.ipa

您现在应该可以安装 IPA 了!

于 2021-09-22T16:01:18.287 回答
4

我已通过以下配置解决了该问题:MacOS Big Sur(macOS 11.14) 和 Xcode 12.5.1。

  1. 我用上面提到的配置重建了包。
  2. 我将包上传到 TestFlight。
  3. 我在 iOS 15 设备上进行了测试。一切都按预期工作。没有弹出窗口。

据我了解,失败的原因是更新了签名格式。在 iOS 15 中,新格式是强制性的,而在 iOS 14 中,它只会发出警告。

有关签名的更多信息可以在这里找到: https ://developer.apple.com/documentation/xcode/using-the-latest-code-signature-format

于 2021-08-20T16:07:49.017 回答
1

如果您在 12 月使用 Xcode 12.4 或 13 和 MacOS 10.15.4 或更高版本,那么创建一个新的 Provisioning 配置文件并使用它进行配置就足够了。供应配置文件中必须包含 DER 权利。请参阅 https://developer.apple.com/forums/thread/682775,了解检查您的配置文件是否具有 DER 权利的方法。

于 2021-12-18T03:44:29.307 回答
0

我遇到了上述同样的问题,任何尝试上述所有解决方案但都不起作用。一旦我更改以下设置而不是之后它将起作用。

构建设置

将排除的架构“Any SDK”更改为“Any iOS Simulator SDK”并设置 arm64

在此处输入图像描述

于 2022-02-24T10:52:31.127 回答