错误:在iOS上运行flutter run时找不到“Flutter/Flutter.h”文件
错误:在iOS上运行flutter run时找不到“Flutter/Flutter.h”文件
我不知道为什么,但我无法在我的新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版本1.24.0-8.0.pre.343,位于/Users/leo/tools/flutter
• 框架修订cf6c33e58a(两天前),2020-11-21 14:04:01 -0800
• 引擎修订23a8e027db
• Dart版本2.12.0(构建2.12.0-62.0.dev)
[✓] Android工具链 - 用于开发Android设备(Android SDK版本30.0.2)
• Android SDK位于/Users/leo/Library/Android/sdk
• 平台android-30,构建工具30.0.2
• Java二进制文件位置:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java版本OpenJDK Runtime Environment(build 1.8.0_242-release-1644-b3-6915495)
• 已接受所有Android许可证。
[✓] Xcode - 用于iOS和macOS的开发(Xcode 12.2)
• Xcode位于/Applications/Xcode.app/Contents/Developer
• Xcode 12.2,构建版本12B45b
• CocoaPods版本1.9.3
[✓] Android Studio(版本4.1)
• Android Studio位于/Applications/Android Studio.app/Contents
• Flutter插件可以从以下位置安装:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart插件可以从以下位置安装:
https://plugins.jetbrains.com/plugin/6351-dart
• Java版本OpenJDK Runtime Environment(build 1.8.0_242-release-1644-b3-6915495)
[✓] 已连接的设备(2个可用)
• sdk gphone x86 arm(移动设备)• emulator-5554• android-x86• Android 11(API
30)(模拟器)
• iPhone 12 Pro Max(移动设备)• F768139D-7B87-4D9E-93B8-14C7D63786B0• ios•
com.apple.CoreSimulator.SimRuntime.iOS-14-2(模拟器)
• 未发现问题!
在调试模式下启动lib/main.dart文件上的iPhone 12 Pro Max...
正在运行Xcode构建...
Xcode构建完成。 11.4秒
无法构建iOS应用程序
Xcode构建的错误输出:
↳
** BUILD FAILED **
Xcode的输出:
↳
#import "Headers/vibration-umbrella.h"
^
/Users/leo/Apps/previate_esta/ios/Pods/Target Support Files/vibration/vibration-umbrella.h:13:9: 注意:
从/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: 错误:
找不到'Flutter/Flutter.h'文件
#import
^
在
/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
: 致命错误:找不到'Flutter/Flutter.h'文件
#import
^~~~~~~~~~~~~~~~~~~
1个错误已生成。
在
/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: 致命错误:找不到'Flutter/Flutter.h'文件
#import
^~~~~~~~~~~~~~~~~~~
1个错误已生成。
在
/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: 致命
错误:找不到'Flutter/Flutter.h'文件
#import
^~~~~~~~~~~~~~~~~~~
1个错误已生成。
在
/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: 致命
错误:找不到'Flutter/Flutter.h'文件
#import
^~~~~~~~~~~~~~~~~~~
1个错误已生成。
注意:使用新的构建系统
注意:并行构建目标
注意:计划构建
注意:构建描述构造
无法为模拟器构建应用程序。
在iPhone 12 Pro Max上启动应用程序时出错。
问题的原因是在Flutter运行iOS时出现了'Flutter/Flutter.h'文件找不到的错误。这个问题的解决方法是修改PodFile文件中的内容。
具体来说,将原来的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
修改为:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end end
根据我理解的情况,flutter_additional_ios_build_settings(target)
是在Flutter 2.0中自动添加的。而我在Flutter 1.0中创建的项目中没有这一行代码。这就是导致问题的原因。我只有这一行代码config.build_settings['ENABLE_BITCODE'] = 'NO',所以我将其删除后,构建成功了。谢谢。
可能是缺少了这一行代码:flutter_additional_ios_build_settings(target)
。
Flutter在iOS上运行时出现'Flutter/Flutter.h'文件找不到的错误。解决方法是删除ios/Flutter/Flutter.podspec文件,然后运行flutter clean命令,最后重新运行应用程序即可。这个解决方法可以在这里找到。但是有些人反馈这个方法对他们不起作用,他们尝试了在第一步之后使用"rm podfile.lock"命令,然后在Android Studio中清除缓存并进行还原,这样可以解决错误。还有人表示,他们将Flutter版本从2.2.1切换到1.22.2也会出现这个错误。但是进行了上述操作后,又出现了新的错误:"在搜索路径中找不到'Generated.xcconfig'文件",这算是有进展了。
'Flutter/Flutter.h'文件未找到的错误出现的原因是在iOS上运行flutter run时,缺少了Flutter的头文件。解决方法是备份ios/Runner文件夹,然后删除ios文件夹。接着在之前保存项目的文件夹中运行flutter create (你的项目名),这将重新创建ios文件夹。将备份的Runner文件夹粘贴到ios文件夹中。打开ios文件夹中的Runner.xcworkspace,并检查版本、Bundle ID和其他信息。如果使用了Firebase,需要再次将Google Service-Info.Plist文件复制粘贴到Runner文件夹中。最后运行flutter run命令,问题应该会解决。如果运行flutter run失败,可以进入ios文件夹,运行pod install命令,然后返回上一级目录,再次运行flutter run命令。也可以只删除ios/Flutter而不是整个ios文件夹,然后进行备份。如果创建了启动画面,需要覆盖Assets.xcassets文件夹、Main.storyboard和LaunchScreen.storyboard,并拖放到Xcode中。此外,还需要复制info.plist文件的内容。