为啥 iOS 会显示警告“此应用程序需要由开发人员更新才能在此版本的 iOS 上运行”。对于我的反应原生应用程序?
Posted
技术标签:
【中文标题】为啥 iOS 会显示警告“此应用程序需要由开发人员更新才能在此版本的 iOS 上运行”。对于我的反应原生应用程序?【英文标题】:Why does iOS show an alert "This app needs to be updated by the developer to work on this version of iOS." for my react native app?为什么 iOS 会显示警告“此应用程序需要由开发人员更新才能在此版本的 iOS 上运行”。对于我的反应原生应用程序? 【发布时间】:2021-03-19 15:05:59 【问题描述】:我刚刚构建了我的 React Native 应用程序,在生成 .ipa
并将其安装到我的设备上进行测试后,我收到标题为 "MyApp - ios" Needs To Be Updated
和正文为 This app needs to be updated by the developer to work on this version of iOS
的警报。
在我的 ReactNative 项目中,我将 iOS 目标设置为 10.0,而手机上的 iOS 版本是 14.2,所以我不明白为什么它不起作用。我一直在努力通过谷歌搜索找到任何有用的资源。
【问题讨论】:
【参考方案1】: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)
尝试重新安装此 IPA,它应该可以工作。如果不是,请阅读下面的第二个原因。
Apple 未记录的另一个可能的原因是您可能需要重新签署您的应用程序,包括 DER 权利。要检查您是否需要这样做,请执行以下操作:
在终端中,运行 codesign -dvvvvv /path/to/MyApp.app
查看页面大小下的输出,您应该会看到如下内容:
-7=4ade7be00e0a7b6db853edc4843e7ece1eea646f6f13d1809f78fc50d8db461f //如果此行不存在或仅包含000...,则需要包含DER权利 -6=00000000000000000000000000000000000000000000000000000000000000000 -5=1dfa58bd8ac3c4fb42142c1c4d28c436128b3a7460186a44526194fb690112bc -4=00000000000000000000000000000000000000000000000000000000000000000 -3=ef08dbe5a7c355336e1fb571604b683ce1c54536cb59a6155a1d18387fd23f6e -2=5b730fa46ffd405fd88da9606d82eda9af7f460f6049047afc176163326f5a7f
如上块所述,如果 -7 不存在或仅包含 000...,那么这就是 IPA 无法正确安装的原因。要解决此问题,请执行下一步
运行 codesign -s "Signing Identity Name from Keychain" -f --preserve-metadata --generate-entitlement-der /path/to/MyApp.app 以退出您的应用程序,包括 DER 权利。重新运行 codesign -dvvvvv /path/to/MyApp.app 以确保 -7 值现在正确。
【讨论】:
感谢您添加此附加信息。【参考方案2】:我在“排除架构”中犯了一个错误。我已将所有 Excluded Architectures 设置为“arm64”,而我应该只为模拟器排除 arm64。
这些是有效的更新构建设置:
这是代码差异:
-希望这对其他人有帮助。
【讨论】:
【参考方案3】:我得到了解决方案,它对我有用。你可以申请这个,如果你有任何问题,请告诉我。
https://***.com/a/70739263/5746176
【讨论】:
以上是关于为啥 iOS 会显示警告“此应用程序需要由开发人员更新才能在此版本的 iOS 上运行”。对于我的反应原生应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 32 位架构的 iOS 13 上出现 iOS Sticker 应用警告? TMS-90747
为啥它显示警告:从不读取字段:`group`?是不是有一些选项可以解决此警告?
为啥flutter build ios --obfuscate --split-debug-info= 失败并出现警告,但flutter build ios 有效?
为啥我在 iOS13.2 中加载 WKWebView 时收到控制台警告:[Process] kill() 返回意外错误 1?