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

28

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

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


5
我们几乎在我们的企业开发者账户下注册的每一个应用程序中都看到了这种情况。有人知道为什么会发生这种情况吗?这个论坛帖子https://developer.apple.com/forums/thread/681792 中有一系列类似的情况,但没有解决方法甚至连根本原因都没有。 - MarkFromMars
同时,在使用企业证书时也可能看到“应用需要更新”的提示信息。 - Nostradamus
仍然存在问题在我的程序中。 - SANTOSH
4个回答

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
  • 如上方所述,如果-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了!


成功了!谢谢 - sfpx
3
确实有效,向AnthoPak致敬! - Michael
这是一个真正惊人的答案。你是怎么知道的? - Alex Nauda
我需要在这里提供“您的代码签名身份”吗? - Sanju
@Sanju 这是你用来签署应用程序的团队名称。您可以在钥匙串访问中检查您拥有的 iOS 分发证书,这可能会给您一些关于此名称的提示。 - AnthoPak
显示剩余9条评论

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

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

1
如果您在12.4或13版本的Xcode和10.15.4版本以上的MacOS中使用,那么在12月份创建一个新的配置文件并进行配置应该就足够了。配置文件必须具有DER权限。请参见https://developer.apple.com/forums/thread/682775 以了解如何检查您的配置文件是否具有DER权限。

0

我遇到了同样的问题,尝试了上面提供的所有解决方案,但都没有起作用。 只有在我更改以下设置后才能正常工作。

构建设置

将排除的架构“任何SDK”更改为“任何iOS模拟器SDK”,并将值设置为arm64。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接