为什么我可以在 iOS 14.1 而不是 14.2 上安装我的应用程序?

Why can I install my app on iOS 14.1 but not 14.2?

自从安装 Xcode 12.2 后,我无法在模拟器 运行 iOS 14.2 上安装我们的应用程序。我下载了 14.1 和模拟器 运行 14.1 安装应用程序就好了。值得注意的是,我的同事没有这个问题,即使他 运行 与 Xcode 的版本相同,所以我的设置似乎有问题。

我试过卸载 Xcode 并重新安装。我删除了 derivedData 文件夹。似乎没有任何帮助。

该应用程序构建得很好,但是当它在模拟器上安装时 运行 iOS 14.2,我得到这个弹出窗口:

当我点击“详细信息”按钮时,我得到以下信息:

Details

“Cozi” Needs To Be Updated Domain: IXUserPresentableErrorDomain Code: 4 Failure Reason: This app needs to be updated by the developer to work on this version of iOS. Recovery Suggestion: Failed to find matching arch for input file: /Users/j.r.willett/Library/Developer/CoreSimulator/Devices/662A1CB0-4E54-4DEC-8F4B-E2CA5FCB0DE8/data/Library/Caches/com.apple.mobile.installd.staging/temp.o8dPqi/extracted/iCozi-Free.app/PlugIns/NotificationService.appex/NotificationService -- Failed to find matching arch for input file: /Users/j.r.willett/Library/Developer/CoreSimulator/Devices/662A1CB0-4E54-4DEC-8F4B-E2CA5FCB0DE8/data/Library/Caches/com.apple.mobile.installd.staging/temp.o8dPqi/extracted/iCozi-Free.app/PlugIns/NotificationService.appex/NotificationService Domain: MIInstallerErrorDomain Code: 15 User Info: { FunctionName = MIMachOFileMatchesMyArchitecture; LegacyErrorString = IncorrectArchitecture; SourceFileLine = 51; } --

System Information

macOS Version 10.15.7 (Build 19H15) Xcode 12.2 (17535) (Build 12B45b) Timestamp: 2020-11-20T13:33:05-08:00

我在 Whosebug 上没有看到其他人报告此错误,所以我似乎偶然发现了一些独特的东西。非常感谢任何指点!!

编辑 2020 年 11 月 30 日:尽管创建了赏金,但我仍然没有找到解决此问题的方法。我目前的计划是等待或 iOS 14.3,希望能以某种方式解决问题。

编辑 2020 年 12 月 16 日:iOS14.3 没有帮助,但出现了更多答案,这使我找到了解决方案,您可以在下面看到。谢谢!!

如果您仔细查看错误,您会发现它抱怨架构不正确的地方:

检查您的项目架构设置,然后尝试将目标上的“仅构建活动架构”更改为,如下所示:

这是我更新到 Xcode 12.x 后遇到的一个值得注意的错误。如果问题仍然存在,您可以开始缩小导致问题的特定依赖项的范围。

我在尝试在 Xcode 12.2 上为 iOS 14.2 构建消息扩展时遇到了同样的问题。

我是这样解决这个问题的:

  1. 尝试设置 Legacy 构建系统(文件 -> 工作区设置... -> 构建系统 -> Legacy 构建系统)。它以更好的方式显示错误。
  2. 我有这样的东西:
  1. 从我的扩展目标中删除了 VALID_ARCHS 设置

如果还不算太晚,这可能会对某人有所帮助。我的问题是在我添加 NotificationService 之后引起的 步骤: Select 您的项目 -> 目标 -> NotificationService(或您选择的任何名称)。 Select 构建设置 -> 搜索 VALID_ARCHS 并添加值 $(ARCHS_STANDARD)

希望这对遇到同样问题的人有所帮助。

@Nadzeya 和@Sawib 的建议让我找到了适合我的情况的解决方法!!

在我的例子中,我需要编辑我的项目文件并为我的新扩展添加一些 VALID_ARCHS 参数,这些参数由于某种原因丢失了。这是我的 github 桌面 diff 的样子:

我终于可以为 iOS 14.2 和 14.3 再次编译了。谢谢@Nadzeya 和@Saqib!!

我认为@Saqib 的答案与我最接近,所以我将他们的答案标记为正确答案。