问题描述
我们正在尝试在iOS 15上测试应用程序,发现收到此消息:应用程序需要更新。
谁能让我知道这条消息背后的原因?现有用户必须删除该应用程序并重新安装才能消除此警报。
推荐答案
我的企业应用程序遇到了同样的问题,幸运的是我已经设法解决了它。
如果您使用企业帐户部署应用程序,则实际上有两个原因可能会在iOS 15上导致此问题。问题的根密钥是iOS 15上需要的新签名格式。通过应用商店发布的应用程序会自动辞职,因此它们不会受到该问题的影响。 还请注意,出现这种情况的主要原因是使用较旧的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
或v=20500
)
压缩PayLoad文件夹并将其重命名为MyApp.ipa
尝试重新安装此IPA,它应该可以工作。如果没有,请阅读下面的第二个原因。
第二个原因
苹果没有记录的另一个可能的原因是,您可能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了!