迁移到 M1 Mac 后在 iOS 上运行 Flutter App 时出错
Posted
技术标签:
【中文标题】迁移到 M1 Mac 后在 iOS 上运行 Flutter App 时出错【英文标题】:Error Running Flutter App on iOS after moving to M1 Mac 【发布时间】:2021-04-23 09:17:33 【问题描述】:我最近将我的项目转移到了我的 M1 MacBook Pro。但在 iPhone 12 Pro Max Simulator 上运行 flutter run
时出现以下错误。
Resolving dependencies of `Podfile`
――― MARKDOWN TEMPLATE
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
### Command
```
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/bin/pod install --verbose
```
### Report
* What did you do?
* What did you expect to happen?
* What happened instead?
### Stack
```
CocoaPods : 1.10.1
Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580)
[universal.x86_64-darwin20]
RubyGems : 3.0.3
Host : macOS 11.1 (20C69)
Xcode : 12.3 (12C33)
Git : git version 2.24.3 (Apple Git-128)
Ruby lib dir :
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories :
```
### Plugins
```
cocoapods-deintegrate : 1.0.4
cocoapods-plugins : 1.0.0
cocoapods-search : 1.0.0
cocoapods-trunk : 1.5.0
cocoapods-try : 1.2.0
```
### Podfile
```ruby
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter
build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner',
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..',
'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#generated_xcode_build_settings_path must exist. If you're
running pod install manually, make sure flutter pub get is executed
first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #generated_xcode_build_settings_path.
Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin',
'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
```
### Error
```
LoadError - dlsym(0x7f84b630ab40, Init_ffi_c): symbol not found -
/Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi_c.bundle
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi.rb:6:in `rescue in <top
(required)>'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi.rb:3:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ethon-0.12.0/lib/ethon.rb:2:in `<top
(required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `<top
(required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/ru
bygems/core_ext/kernel_require.rb:54:in `require'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/sources_manager.rb:74:in `cdn_url?'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/sources_manager.rb:36:in `create_source_with_url'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/sources_manager.rb:21:in `find_or_create_source_with_url'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer/analyzer.rb:178:in `block in sources'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer/analyzer.rb:177:in `map'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer/analyzer.rb:177:in `sources'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer/analyzer.rb:1073:in `block in resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/user_interface.rb:64:in `section'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer/analyzer.rb:1072:in `resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer/analyzer.rb:124:in `analyze'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer.rb:414:in `analyze'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer.rb:239:in `block in resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/user_interface.rb:64:in `section'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer.rb:238:in `resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/installer.rb:160:in `install!'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in
`run'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/coco
apods/command.rb:52:in `run'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/bin/pod:
55:in `<top (required)>'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/bin/pod:23:in `load'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/bin/pod:23:in `<main>'
```
Error output from CocoaPods:
↳
[!] 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. See
`https://guides.cocoapods.org/syntax/podfile.html#platform`.
我尝试创建一个新的 Flutter 应用并运行它,它运行良好,但是当我将我的依赖项添加到 pubspec.yaml
时,它再次显示相同的错误。
我的依赖列表
国际:^0.16.1 firebase_core:^0.5.0+1 firebase_analytics:^6.0.2 firebase_crashlytics:^0.2.1+1 firebase_auth:^0.18.1+2 firebase_database:^4.1.1 firebase_messaging:^7.0.3 cloud_firestore:^0.14.1+3 firebase_storage:^4.0.1 firebase_ml_vision:^0.9.7 firebase_dynamic_links:^0.6.0+2 firebase_remote_config: ^0.4.0+2 阅读更多:^1.0.0 like_button: ^1.0.1 时间之前:^2.0.26 eyro_toast:^0.1.0 quick_actions:^0.4.0+10 振动:^1.4.0 receive_sharing_intent: ^1.4.0+2 cached_network_image: ^2.2.0+1 全屏图像:^1.0.2 flutter_native_image: ^0.0.5+2 image_picker:^0.6.7+4 image_cropper:^1.2.3 flutter_blurhash:^0.5.0 链接:^2.1.0 liquid_progress_indicator:^0.3.2 material_tag_editor:^0.0.2 carousel_slider:^2.2.1 liquid_pull_to_refresh:^2.0.0 animated_splash_screen: ^1.0.0+1 可扩展:^4.1.4 flutter_linkify:^3.1.3 flutter_parsed_text:^1.2.4 url_launcher: ^5.5.0 octo_image: ^0.2.1 smooth_page_indicator: ^0.2.0 微光:^1.1.1 分页视图:^1.0.3+2 scrollable_positioned_list:^0.1.7 地理编码器:^0.2.1 位置:^3.0.2 inview_notifier_list:^1.0.0 分享:^0.6.5+2 visibility_detector:^0.1.5 动画:^1.1.2 native_state: ^1.1.1 故事视图:^0.12.3 file_picker:^1.13.3 哑剧:^0.9.7 flutter_colorpicker:^0.3.4 视频播放器:^0.10.12+2 dotted_border: ^1.0.6 step_progress_indicator:^0.2.4+7 timer_count_down:^1.0.4+1 flutter_staggered_grid_view: ^0.3.2 flutter_local_notifications:^1.4.4+4 app_settings: ^4.0.4 flutter_svg: ^0.19.0 flutter_slidable:^0.5.7 preload_page_view:^0.1.4 custom_navigation_bar: ^0.3.2 page_transition:^1.1.7+2 cube_transition:^1.0.2 提供者:^4.3.2+2 延迟显示:^1.0.3 增压:^1.10.0 图片:^2.1.18 path_provider:^1.6.18 元:^1.1.6 位图:^0.0.6 号码选择器:^1.2.1 image_gallery_saver:^1.6.0 permission_handler: ^5.0.1+1 音频:^3.0.10 device_preview:^0.4.8 image_editor:^0.7.3 扩展图像:^1.3.0 flutter_credit_card:^0.1.3 stripe_payment:^1.0.8 charts_flutter:^0.9.0 flutter_native_admob:^2.1.0+3 mask_text_input_formatter:^1.1.0 shared_preferences:^0.5.12+4 flutter_icons: ^1.1.0 introduction_screen:^1.0.9 property_change_notifier:^0.2.0 截图:^0.2.0 auto_size_text: ^2.1.0 responsive_flutter:^0.0.4 cupertino_icons: ^1.0.0在 MacBook Pro 上运行(M1)
【问题讨论】:
【参考方案1】:您需要手动安装ffi
依赖项。这是 GitHub 上的相同问题:https://github.com/flutter/flutter/issues/70796。此外,如果您在 M1 上构建或运行您的应用时遇到问题,请访问 Wiki page on GitHub 使用指南和 this issue 以跟踪新 Mac 的当前支持阶段。
【讨论】:
以上是关于迁移到 M1 Mac 后在 iOS 上运行 Flutter App 时出错的主要内容,如果未能解决你的问题,请参考以下文章
PlayCover for Mac(Mac上运行iOS应用程序)适配原神仅兼容M1