如果您遵循了我的previous two指南,现在可以在Macos Catalina上编译flutter应用程序(尽管有弹力限制,需要您升级MacOS版本)。但是,您可能仍会遇到一些汇编错误。
找不到豆荚
有时您会在XCode中遇到构建错误,抱怨Pods。您必须转到项目中的ios
文件夹,然后在终端运行pod install
。
阅读“ lib/main.dart”时错误
如果您的颤音入口点不是主要的(例如使用使用不同风味名称的项目模板),则需要指向“构建设置”中的入口点文件。在“构建设置”下,有“ flutter_target”,它应该指向您的入口点文件,例如lib/main_development.dart
。
属性'xxx'在类型'xxx *'的对象上找不到
由于Xcode 12.4附带iOS 14.4 SDK,因此为较新的SDK编写的代码假设iOS 15 API的可用性将无法编译。错误看起来如下:
Semantic Issue (Xcode): Property 'interruptionLevel' not found on object of type 'UNMutableNotificationContent *'
{Source File Path}:{Line Number}
如果您查看了有问题的源文件,您可能会看到iOS 15中引入的库API的用法。该调用应该已经用if (@available(iOS 15, tvOS 15, *))
包装了,如果应用程序在较低的iOS版本上运行,则将其防止运行时错误,但是,如果您使用iOS 14 SDK编译代码,则汇编错误仍然会发生。
尽管我努力从新的Xcode构建中复制SDK,但我无法获得Xcode 12.4来识别较新的iOS SDK。 (如果有人知道如何,请在评论中告诉我)
解决方法是简单地评论if (@available(iOS 15...))
块内部的整个块。这意味着无论iOS 15是否可用,我们都不会为iOS 15执行代码。这对于测试目的来说是可以的。但是我重申我的建议,使用虚拟机为您的生产构建正确构建该应用程序。