【问题标题】:Observing "App needs to be updated" message when launching app on iOS 15在 iOS 15 上启动应用程序时观察“应用程序需要更新”消息
【发布时间】:2021-09-09 22:09:54
【问题描述】:

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

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

【问题讨论】:

  • 我们在使用企业开发者帐户签署的几乎所有应用程序中都看到了这一点。有人知道为什么会这样吗?此论坛帖子developer.apple.com/forums/thread/681792 有一系列类似的事件,但没有补救措施甚至根本原因。
  • 还看到带有企业证书的“应用程序需要更新”。
  • 我的问题仍然存在

标签: swift deployment swift3 itunes ios15


【解决方案1】:

我的企业应用也遇到了同样的问题,幸运的是我已经解决了。

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

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


第一个原因

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

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

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


第二个原因

另一个可能的原因(Apple 未记录)有点棘手,您可能是 need to re-sign your app including the 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 了! ?

【讨论】:

  • 成功了!谢谢
  • 这确实有效——向 AnthoPak 致敬!
  • 这是一个真正令人惊叹的答案。你怎么知道的?
  • 谢谢,你的回答拯救了我的一天。问候
  • “从钥匙串签名身份名称”(步骤 2)与“您的代码设计身份”(步骤 1)不同吗?只有第 1 步对我不起作用,但对第 1 步的 -s 参数使用相同值的第 2 步对我不起作用,导致“无法安装此应用程序,因为无法验证其完整性”对于第 1 步我用过:security find-identity -v -p codesigning
【解决方案2】:

我已通过以下配置解决了该问题: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

【讨论】:

  • 这个“答案”中有一些错误:Big Sur 是 11.x。 TestFlight 不是对该问题的有效测试,因为根据链接“对于您通过 App Store 或 TestFlight 分发的应用程序,App Store Connect 首先验证您的签名,然后使用 Apple 身份重新签署应用程序,然后再制作可供下载的应用程序。通过这些渠道提供的应用程序已经具有新的签名格式。"
  • 我不确定哪个步骤实际上修复了签名。我在更新 iOS(2021 年 9 月)后看到了这个问题。我试图从应用商店下载版本,但没有帮助。该版本已于2021年4月上传。但执行上述步骤后已修复。
  • 这应该是第 1 步。正如我所说,在 TestFlight 中进行测试并不能证明问题已得到解决。只有上传到企业站点并从那里安装,才能正确测试此问题。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多