【问题标题】:Flutter iOS App on an iOS Simulator running on an M1 Mac在 M1 Mac 上运行的 iOS 模拟器上的 Flutter iOS App
【发布时间】:2021-06-27 09:44:48
【问题描述】:

在装有 Big Sur 11.2.2 和 Flutter 1.22.6 的 M1 Mac 上运行的 iOS 模拟器 (iPhone 12 Pro Max) 上的 Flutter iOS 应用程序是否存在问题?

你看,我的 Flutter iOS 应用程序(使用多个 Flutter 插件)是在基于 Intel 的、运行 Catalina (10.15.7) 和 Flutter 1.22.5 的 Mac 上开发的,它可以工作,但是当我转移到基于 M1 的 Mac 上运行时Big Sur 和 Flutter 1.22.6,我遇到了 Cocoapod 的错误:

[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile.

请注意,在这台 M1 mac 上,“flutter doctor”是成功的,我可以创建 Flutter 测试应用并在 iOS 模拟器上运行它,所以我认为它的设置正确。

我也尝试过过去有此症状的帖子建议的解决方案,但无济于事。我尝试了以下方法:

1- 我在我的 pods 文件中取消了“platform :ios, '9.0'' 行的注释。

2- 我在终端中运行了以下 CLI 命令:

flutter clean
rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
cd ios
pod install
cd ..
flutter build ios

尝试上述两个建议的结果是相同的“运行 pod install 时出错”错误,没有提及其他错误消息。

此时我唯一能想到的是,我在 M1 上的 iOS 模拟器中运行时使用的 Flutter 插件存在问题。同样,这些插件可以在运行 Catalina 的基于 Intel 的 Mac 上运行。如果是这样,不幸的是,错误并没有告诉我是哪一个。我使用的插件有:

dependencies:
  flutter:
    sdk: flutter
  provider: ^4.1.3
  sqflite: ^1.3.2+1
  googleapis: ^0.56.1
  googleapis_auth: ^0.2.12
  http: ^0.12.2
  url_launcher: ^5.7.2
  flutter_secure_storage: ^3.3.5
  tuple: ^1.0.3
  image_picker: ^0.6.7+12
  intl: ^0.16.1
  fraction: ^1.2.1
  archive: ^2.0.13
  path_provider: ^1.6.24
  path: ^1.7.0
  image_cropper: ^1.3.1
  flutter_image_compress: ^0.7.0

非常感谢所有帮助/建议。

【问题讨论】:

  • 你试过在物理设备上运行它吗?到目前为止发生的错误是在构建级别,并且仍然没有达到渲染或 M1 问题(如果有的话)。
  • @HuthaifaMuayyad,我还没有尝试在 M1 的物理设备上运行它。我尝试在运行 Catalina 的基于 Intel 的 Mac 上的物理设备(iOS 和 Android)上运行它,它运行良好。一旦我找到我的 iPhone,我会在 M1 上尝试这个。至于 Android 设备,我的 VSCODE 似乎无法识别该设备,这是我必须解决的另一个问题。
  • 你是否下载了android SDK,即使你在Mac上,也需要SDK,因为它包含了android调试所需的ADB管理器。我昨天在 bigSur 上遇到了一个问题,但不是 M1,模拟器不支持运行发布版本。您是否从 iOS 文件夹中运行 pod install ?不仅仅是父项目文件夹?尝试 cd 进入 ios 或 ios/runner.
  • 谢谢,胡塔尔法。我现在正在下载 Android Studio,以便我可以在 Android 设备上运行它,看看是否可行。
  • 不客气,请随时更新,我个人对此很感兴趣。此外,如果问题出在依赖项中, pod install 肯定会惹恼你,但似乎你的环境中正在发生的其他事情也没有达到那个水平

标签: ios flutter ios-simulator apple-m1


【解决方案1】:

我也遇到过这个问题。

在 podfile 中将 iOS 版本更新到 10.0。

它对我有用。

【讨论】:

  • 感谢您的建议。我已经将版本更改为 14.1 无济于事。我也按照您的建议尝试了 10.0 也无济于事。我开始认为我可能必须注释掉我的每个依赖项,看看是否会消失 'Error running pod install' 错误。
  • 您是否取消了该行的注释?
  • 还没有。相反,我正在寻求首先在 Android 设备上运行该应用程序的路线。使用该路由,我能够构建 apk,但是在部署时,我遇到了奇怪的 java 运行时异常,这是我在 Flutter 开发 2 年中从未遇到过的。敬请期待……
【解决方案2】:

尚不支持(即将推出this PR

Flutter 已禁用在 ARM 架构上运行的模拟器上运行。他们这样做是因为 Flutter 依赖项(iOS 引擎 Flutter.framework)没有 arm64 slices。在 M1 mac (arm64) 上添加对 iOS 模拟器的支持有一个开放的拉取请求:https://github.com/flutter/flutter/pull/85059

我最初试图让这个为自己工作,但问题是Generated.xcconfig 包含禁用模拟器的 arm64 架构的代码,并且该文件是由 Flutter 在内部生成的。一旦您手动更改它,它仍然会失败。如果您尝试使用 Xcode 构建,您可能会在链接过程中收到以下错误消息:

Undefined symbol: _OBJC_CLASS_$_ClassName

还有更多。如果您没有看到足够的日志或信息来调试构建过程,我建议您使用 Xcode 构建。


Automatically assigning platform 不是错误

Automatically assigning platform iOS 实际上并不是一个错误,它只是告诉你它默认为 iOS 平台。然后它失败了,所以在这种情况下,你应该提供更多的错误信息。

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2012-01-01
    相关资源
    最近更新 更多