在 iOS 15 上启动应用程序时观察到“应用程序需要更新”消息

Ank*_*wan 7 deployment itunes swift swift3 ios15

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

任何人都可以让我知道这条消息背后的原因吗?现有用户必须删除该应用程序并重新安装才能摆脱此警报。

Ant*_*Pak 37

我的企业应用程序遇到了同样的问题,幸运的是我已经成功解决了它。

如果您使用企业帐户部署应用程序,实际上有两个原因可能会导致 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 权利。要检查您是否需要执行此操作,请执行以下操作:

  • 在终端中,运行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
Run Code Online (Sandbox Code Playgroud)
  • 正如上面块中所评论的,如果-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 了!

  • 这确实有效——向 AnthoPak 致敬! (3认同)

Dim*_*ima 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