迁移到 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

Mac M1移植YoloV5到ios运行

Mac M1移植YoloV5到ios运行

在 Mac M1 上 React Native ios 构建失败

Mac 系统快速迁移记录(M1 Max)

Mac 系统快速迁移记录(M1 Max)