在装有 Big Sur 11.2.2 和 Flutter 1.22.6 的 M1 Mac 上运行的 iOS 模拟器(iPhone 12 Pro Max)上的 Flutter iOS 应用程序是否存在问题?
你看,我的 Flutter iOS 应用程序(使用多个 Flutter 插件)是在运行 Catalina (10.15.7) 和 Flutter 1.22.5 的基于 Intel 的 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
尝试上述两种建议的结果是相同的“Error running 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
非常感谢所有帮助/建议。
答案 0 :(得分:0)
我也遇到过这个问题。
在 podfile 中将 iOS 版本更新到 10.0。
它对我有用。
答案 1 :(得分:0)
Flutter 已禁用在 ARM 架构上运行的模拟器上运行。他们这样做是因为 Flutter 依赖项(iOS 引擎 Flutter.framework)没有 arm64 切片。有一个在 M1 macs (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 平台。然后它失败了,因此在这种情况下,您应该提供更多错误信息。