错误:在 iOS 上运行 Flutter 时找不到“Flutter/Flutter.h”文件

Raf*_*.C. 60 ios cocoapods flutter flutter-ios flutter-ios-build

我不知道为什么,但我无法在我的新 Macbook 中构建或运行该应用程序,我在另一台 Mac 或我的 Windows 计算机上运行相同的文件夹并完美运行。在这里,当我运行 flutter clean 时,我必须运行 pub get 来解决问题,这正常吗?

如果我新建一个项目,我可以正常运行flutter run,所以我想可能那里我认为可能与插件有关。

你知道我该如何解决这个问题吗?谢谢

Flutter Doctor
[?] Flutter (Channel master, 1.24.0-8.0.pre.343, on macOS 11.0.1 20B29 darwin-x64, locale es-419)
    • Flutter version 1.24.0-8.0.pre.343 at /Users/leo/tools/flutter
    • Framework revision cf6c33e58a (2 days ago), 2020-11-21 14:04:01 -0800
    • Engine revision 23a8e027db
    • Dart version 2.12.0 (build 2.12.0-62.0.dev)

[?] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/leo/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[?] Xcode - develop for iOS and macOS (Xcode 12.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.2, Build version 12B45b
    • CocoaPods version 1.9.3

[?] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[?] Connected device (2 available)
    • sdk gphone x86 arm (mobile) • emulator-5554                        • android-x86 • Android 11 (API
      30) (emulator)
    • iPhone 12 Pro Max (mobile)  • F768139D-7B87-4D9E-93B8-14C7D63786B0 • ios         •
      com.apple.CoreSimulator.SimRuntime.iOS-14-2 (simulator)

• No issues found!




Launching lib/main.dart on iPhone 12 Pro Max in debug mode...
Running Xcode build...                                                  
Xcode build done.                                           11.4s
Failed to build iOS app
Error output from Xcode build:
?
    ** BUILD FAILED **


Xcode's output:
?
    <module-includes>:1:9: note: in file included from <module-includes>:1:
    #import "Headers/vibration-umbrella.h"
            ^
    /Users/leo/Apps/previate_esta/ios/Pods/Target Support Files/vibration/vibration-umbrella.h:13:9: note:
    in file included from /Users/leo/Apps/previate_esta/ios/Pods/Target Support
    Files/vibration/vibration-umbrella.h:13:
    #import "VibrationPlugin.h"
            ^
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/vibration-1.4.0/ios/Classes/VibrationPlugin.h:1:9: error:
    'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^
    <unknown>:0: error: could not build Objective-C module 'vibration'
    In file included from
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.5.3/ios/Classes/FLTURLLauncherPlugin.m:7:
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.5.3/ios/Classes/FLTURLLauncherPlugin.h:5:9
    : fatal error: 'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    In file included from
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.10/ios/Classes/FLTSharedPreference
    sPlugin.m:5:
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.10/ios/Classes/FLTSharedPreference
    sPlugin.h:5:9: fatal error: 'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    In file included from
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/share-0.6.5/ios/Classes/FLTSharePlugin.m:5:
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/share-0.6.5/ios/Classes/FLTSharePlugin.h:5:9: fatal
    error: 'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    In file included from
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/sensors-0.4.2+4/ios/Classes/FLTSensorsPlugin.m:5:
    /Users/leo/.pub-cache/hosted/pub.dartlang.org/sensors-0.4.2+4/ios/Classes/FLTSensorsPlugin.h:5:9: fatal
    error: 'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

Could not build the application for the simulator.
Error launching application on iPhone 12 Pro Max.
Run Code Online (Sandbox Code Playgroud)

And*_*eev 67

一种更简单的解决方案:

  1. 删除ios/Flutter/Flutter.podspecrm ios/Flutter/Flutter.podspec
  2. flutter clean
  3. 再次运行您的应用程序。

取自这里

  • 对我不起作用:致命错误:找不到“Flutter/Flutter.h”文件。在具有构建风格的通道主控上运行。 (15认同)
  • 我在第一步后尝试使用“rm podfile.lock”。并清理android studio中的缓存,恢复它。所以在我的例子中错误消失了。谢谢。这是一条很好的捷径。 (2认同)

Raf*_*.C. 55

我找到了解决办法!

  1. 备份ios/Runner文件夹。

  2. 删除ios文件夹。

  3. 运行flutter create (your project name)。在您拥有项目的上一个文件夹中(cd users/user/"projects_folder")(这将重新创建您的ios文件夹)。

  4. 将您的 Runner 备份粘贴到ios文件夹中(到项目中)。

  5. 打开Runner.xcworkspace(进入ios文件夹),然后检查版本、捆绑 ID 和所有信息。

  6. (如果您有 Firebase,则必须再次将 Google 复制并粘贴Service-Info.PlistRunner文件夹中(始终通过 Xcode)(如果您手动执行此操作,则不起作用)。

最后,flutter run应该工作!

如果flutter run失败:

  1. cd ios
  2. pod install
  3. cd ..
  4. flutter run

  • 必须有比这更好的解决方案,我对我的 iOS 项目做了太多自定义更改,删除整个项目对我来说不是一个选择。 (4认同)
  • 我尝试了这个,但只删除了“ios/Flutter”,而不是整个“ios”文件夹,并且它起作用了。先把它备份一下! (3认同)
  • 这只是对我有用的解决方案,谢谢! (2认同)
  • 由于编辑队列已满。如果您创建了启动屏幕,请不要忘记覆盖“Assets.xcassets”文件夹以及“Main.storyboard”和“LaunchScreen.storyboard”。(重要提示:您必须手动拖放到 Xcode,而不是简单地在 Finder 中覆盖它。)此外,复制 `info.plist` 的内容。 (2认同)
  • 嗨@RaffaelliL.C。我有一个问题,你将备份的 iOS 项目粘贴到哪里?当我运行 flutter create foo_bar 时,它在我已经存在的项目中为我创建了一个全新的 flutter 项目,名为 foo_bar 。这个新项目有一个 ios/ 文件夹,因此对于将新文件夹粘贴到哪里有点混乱。谢谢! (2认同)

Par*_*iya 33

这是由于从master/dev切换回beta/stable 引起的

这里总结了两种解决方案

这是 flutter 和 pod install 的错误。Flutter在做pod install安装依赖时,Flutter中框架文件同步导致框架文件丢失。一旦卡主丢失一次,只需执行 pod install 命令即可。可以安装用户指定的依赖,但不能在 Flutter 中同步框架文件

因为ios/Flutter/Flutter.podspecCocoaPods 链接逻辑被移到了 flutter 工具中。但是,当您切换回 beta/stable 时,那个伪造的 podspec 仍然存在,但 flutter 工具链接逻辑已恢复。

1 解决方案

以下命令修复了此行为:

  1. cd ios 用于转到 flutter 应用程序的 iOS 目录
  2. pod deintegrate
  3. rm Flutter/Flutter.podspec
  4. rm podfile.lock
  5. flutter clean
  6. flutter run

2 解决方案

如果上述解决方案不起作用,请尝试将频道从 Master 切换到稳定版。

要切换频道,请在终端中运行:

  1. flutter channel stable

  2. flutter clean

  3. flutter run


Edg*_*zar 23

编辑:刚刚为 Flutter 2 发布了新版本的 Crashlytics。只需升级您的 pubspec.yml:

firebase_crashlytics: ^2.0.0
Run Code Online (Sandbox Code Playgroud)

下面是我以前的回答。

对于 Flutter 2,您可以按照此 GitHub 评论中的说明进行操作。粘贴的文字如下:

Flutter 2.0.4 的解决方法是使用来自 git 而不是 pub.dev 的 firebase_crashlytics。这似乎有效(参考当前最新的提交):

  firebase_crashlytics:
    git:
      url: git://github.com/FirebaseExtended/flutterfire.git
      path: packages/firebase_crashlytics/firebase_crashlytics
      ref: 200b8ca8f1c452e4249fb791e53cc55e786ac768
Run Code Online (Sandbox Code Playgroud)

  • 他们已经发布了 `firebase_crashlytics` v2.0.0,错误已修复 (2认同)

Cha*_*ghe 18

就我而言,我已经解决了这个问题

运行器 --> 构建阶段 ---> 取消勾选仅安装在此输入图像描述


小智 17

解决方案1

\n
    \n
  1. 将 ios 文件夹中的 Runner 文件夹备份到安全位置。

    \n
  2. \n
  3. 删除ios文件夹:

    \n
  4. \n
\n

在此输入图像描述

\n
    \n
  1. 仍然在根目录中,运行以下命令(包括空格和句点):
  2. \n
\n

flutter create .

\n

您的项目中将生成一个新的 ios 文件夹。

\n
    \n
  1. 将之前备份的Runner文件夹复制粘贴到新的ios文件夹中:
  2. \n
\n

在此输入图像描述

\n

将出现一个对话框。单击“替换”按钮继续。

\n
    \n
  1. 如果您的项目未使用 Firebase,您可以忽略此步骤并继续下一步。否则,您需要重新添加 GoogleService-Info.plist 文件,方法是使用 Xcode 打开 ios 文件夹,右键单击 Runner,从下拉列表中选择 Add Files to \xe2\x80\x9cRunner\xe2\x80\x9d菜单,然后选择与您的项目关联的 GoogleService-Info.plist 文件。
  2. \n
\n

在此输入图像描述

\n
    \n
  1. 导航到您的 ios 文件夹并运行:
  2. \n
\n

pod install

\n

你可能会陷入这样的境地:

\n

在此输入图像描述

\n

# Uncomment this line to define a global platform for your project\nplatform :ios, \'11.0\'

\n

现在再次运行 pod install,它应该可以工作(可能会出现一些警告,但我们不关心它们)。

\n
    \n
  1. 最后,返回根目录并正常运行项目(不要忘记先启动 iOS 模拟器):
  2. \n
\n

cd ..\nflutter run

\n

如果仍然出现错误,请执行以下命令清除 Flutter\xe2\x80\x99s 构建缓存:

\n

flutter clean

\n

并更新 .pub-cache 中的依赖项:

\n

flutter pub cache repair

\n

然后再次运行您的项目。

\n

解决方案2

\n

有时,错误是由一个简单的原因引起的:您当前位于主通道而不是稳定通道。根据 Flutter 维基:

\n

主通道:当前的树尖,绝对最新的前沿构建。通常功能正常,但有时会意外损坏。\n稳定通道:强烈建议将此通道用于所有生产应用版本。\n您现在需要做的是切换到稳定通道:

\n

flutter channel stable

\n

然后:

\n

flutter clean

\n

最后:

\n

flutter run

\n

解决方案3

\n

如果上面的两种方法都不能解决问题,你可以尝试一下。

\n
    \n
  1. 转到 /ios 文件夹并删除以下内容:
  2. \n
\n

Flutter/Flutter.podspec 文件\nPods 文件夹\nPodfile.lock 文件

\n
    \n
  1. 还是在ios文件夹中,执行以下命令:
  2. \n
\n

pod install --repo-update

\n
    \n
  1. 导航到项目的根目录并通过运行以下命令清理项目:
  2. \n
\n

flutter clean

\n
    \n
  1. 运行:
  2. \n
\n

flutter run

\n

希望这会有所帮助......信用: A Goodman

\n

  • 运行 flutter create 后遇到问题。它说“PROJECT NAME”不是有效的 Dart 包名称。请参阅 https://dart.dev/tools/pub/pubspec#name 了解更多信息” (3认同)

p0w*_*0wl 14

这个解决方案对我有用:

从以下位置更改 PodFile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
    config.build_settings['ENABLE_BITCODE'] = 'NO'
    config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

post_install do |installer|
  installer.pods_project.targets.each do |target| 
    flutter_additional_ios_build_settings(target)
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 据我了解,`flutter_additional_ios_build_settings(target)` 是从 Flutter 2.0 自动添加的。我在 Flutter 1.0 版本中创建了我的项目,该项目在 PodFile 中不包含这一行。那是我的问题。 (2认同)

Mat*_*out 10

如果Flutter的permission_handler相关

如果您刚刚将flutter的permission_handler集成到您的应用程序中,并按照说明修改ios podfile以添加所需的权限,则使用提供的说明可能会遇到此错误。

fatal error: 'Flutter/Flutter.h' file not found修改 podfile 后我开始收到错误。

解决方案

解决方案是更改 podfile 修改的方式,以便flutter_additional_ios_build_settings(target)正确并包含该修改,并为target.build_configurations.each...数组提供正确的嵌套。

Podfile 修改示例

post_install do |installer|
  installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
        target.build_configurations.each do |config|
            # You can enable the permissions needed here. For example to enable camera
            # permission, just remove the `#` character in front so it looks like this:
            #
            # ## dart: PermissionGroup.camera
            # 'PERMISSION_CAMERA=1'
            #
            # When enabled here, corresponding metadata should be added to info.plist
            config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
                '$(inherited)',

                ## dart: PermissionGroup.calendar
                # 'PERMISSION_EVENTS=1',

                ## dart: PermissionGroup.reminders
                # 'PERMISSION_REMINDERS=1',

                ## dart: PermissionGroup.contacts
                # 'PERMISSION_CONTACTS=1',

                ## dart: PermissionGroup.camera
                # 'PERMISSION_CAMERA=1',

                ## dart: PermissionGroup.microphone
                # 'PERMISSION_MICROPHONE=1',

                ## dart: PermissionGroup.speech
                # 'PERMISSION_SPEECH_RECOGNIZER=1',

                ## dart: PermissionGroup.photos
                # 'PERMISSION_PHOTOS=1',

                ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
                # 'PERMISSION_LOCATION=1',

                ## dart: PermissionGroup.notification
                # 'PERMISSION_NOTIFICATIONS=1',

                ## dart: PermissionGroup.mediaLibrary
                # 'PERMISSION_MEDIA_LIBRARY=1',

                ## dart: PermissionGroup.sensors
                # 'PERMISSION_SENSORS=1',

                ## dart: PermissionGroup.bluetooth
                # 'PERMISSION_BLUETOOTH=1',

                ## dart: PermissionGroup.appTrackingTransparency
                # 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',

                ## dart: PermissionGroup.criticalAlerts
                # 'PERMISSION_CRITICAL_ALERTS=1'
            ]
        end
    end
end
Run Code Online (Sandbox Code Playgroud)


Mic*_*ski 9

可能会发生特定的 iOS POD 依赖项没有 Flutter 依赖项。

就我而言,它是 firebase_crashlytics: ^1.0.0

不幸的是,由维护者提供工作解决方案。您可以删除位于以下位置的缓存版本:

/Users/user/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_crashlytics-1.0.0/ios/firebase_crashlytics.podspec
Run Code Online (Sandbox Code Playgroud)

请访问此问题以供参考。

特定 3rd 方库的 .podspec 应具有:

s.dependency 'Flutter'
Run Code Online (Sandbox Code Playgroud)

Pod::Spec.new do |s|
   ...
Run Code Online (Sandbox Code Playgroud)

然后,pod installios目录中调用,以反映更改。

最后,安排您的构建。


Ily*_*cko 9

如果您曾经在 xcode 中更改过构建阶段脚本,请验证 Run script(/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build) 是否位于编译源之前在此输入图像描述


Dha*_*ara 7

我尝试了上述所有解决方案,但最终重新创建了 ios 目录。

rm -rf ios
flutter create -i swift .
Run Code Online (Sandbox Code Playgroud)

注意:执行上述步骤将丢失所有本机 ios 设置。就我而言,我在执行此操作的演示项目中遇到了此错误。


小智 6

在您的终端中使用此命令:

flutter pub cache repair
Run Code Online (Sandbox Code Playgroud)


Huy*_*wer 6

原因可能是Podfile conflict(例如:合并源代码.vv后)

这是easy wayre-install Pod file

要完全清理(删除所有链接点)并创建升级到新的(也卸载并再次安装),

写入以下命令:

flutter clean

rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
Run Code Online (Sandbox Code Playgroud)

然后按照以下命令重现 Podfile

rm ios/Podfile
Run Code Online (Sandbox Code Playgroud)

最后,您的项目已准备就绪,可以开始使用了

flutter run
Run Code Online (Sandbox Code Playgroud)


ast*_*k12 5

对我有用的东西:

我的 pubspec 中的一些依赖项已经过时(具体来说,我使用的是 crashalytics 1.0.0 和 Flutter 2.0.5,它们不兼容,因此抛出了这个错误)。

将 crashalytics 升级到 2.0.0 为我修复了它。

我会查看抛出此错误的任何包,并查看是否有可用的升级。如果这不起作用,请尝试降级您的 flutter 版本。


SeP*_*läm 5

还有另一种方法...

如果您在使用Firebase的Flutter项目中偶然发现此问题,并且上述步骤均不起作用,请尝试以下操作:

  1. 备份您的项目(以防万一)。
  2. 删除 Flutter 项目内的整个 ios 文件夹。
  3. 调用flutter 项目的父文件夹flutter create <projectname>(即上面的一个文件夹)。这将重新创建 ios 文件夹。
  4. GoogleService-Info.plist文件移至Xcode 中的项目。
  5. 现在到重要部分:当您按照Firebase 控制台中将 firebase 添加到您的 iOS 应用程序”下的说明进行操作时,请跳过步骤 3(添加 Firebase SDK)并跳过步骤 4(添加初始化代码)。换句话说:不打电话pod init也不打电话pod install。也保持AppDelegate 不变!相反,只需调用flutter run,它会处理 Pod 的设置。
  6. ios/Podfile:取消注释该行platform :ios, '8'并设置 iOS 版本(在撰写本文时 12.1 似乎很合适)。PROJECT -> Runner -> Deployment Target -> iOS Deployment Target在 Xcode 中的和 (也在 Xcode 中)下设置相同的版本TARGETS -> Runner -> Deployment Info
  7. 致电flutter cleanflutter run

运气好的话,你就能让它恢复运行了。


Ali*_*lli 5

这是我解决问题的方法:

  1. 在你的终端上运行flutter packages upgrade
  2. 在项目上创建“iOS”文件夹的备份。
  3. 从项目中删除“iOS”文件夹。
  4. 跑步flutter clean
  5. 跑步flutter pub get
  6. flutter create .在您的项目根目录上运行
  7. 这将在存储库中创建一个“ios”文件夹。将 Info.plist、Podfile 和任何其他配置文件(例如 GoogleServices.plist)从备份“ios”文件夹复制到新创建的“ios”文件夹。

尝试再次运行您的项目。现在应该可以工作了:)