Flutter.h找不到错误

时间:2018-06-03 21:50:45

标签: ios xcode dart flutter

几天前我就失去了为iOS构建Flutter应用程序的能力。我将我的iPad更新为11.4,迫使我将xCode更新为9.4,我认为Flutter的新版本也在混合中。在我无限的智慧中,我更新了所有内容,现在无法再测试我的项目了。

随着最后期限的临近,我正在寻找有关如何再次行动的建议。我对Apple产品并不熟悉,所以我还没有真正了解xCode等。

这是一个全新的FLUTTER CREATE测试项目'项目,没有任何改变。

FLUTTER RUN日志:

Launching lib/main.dart on iPad Pro (12.9-inch) (2nd generation) in debug mode...
Starting Xcode build...
Xcode build done.
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **

Xcode's output:
↳
    === BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug ===
    cp: /Users/trevburley/FlutterSDK/flutter/bin/cache/artifacts/engine/ios/Flutter.framework: No such file or directory
    find: /Users/trevburley/IdeaProjects/testproject/ios/Flutter/Flutter.framework: No such file or directory
    Project /Users/trevburley/IdeaProjects/testproject built and packaged successfully.
    Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure
    In file included from /Users/trevburley/IdeaProjects/testproject/ios/Runner/GeneratedPluginRegistrant.m:5:
    /Users/trevburley/IdeaProjects/testproject/ios/Runner/GeneratedPluginRegistrant.h:8:9: fatal error: 'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^~~~~~~~~~~~~~~~~~~
    1 error generated.
Could not build the application for the simulator.
Error launching application on iPad Pro (12.9-inch) (2nd generation).

和详细的FLUTTER医生:

Trevs-MBP:testproject trevburley$ flutter doctor -v
[✓] Flutter (Channel beta, v0.4.4, on Mac OS X 10.13.5 17F77, locale en-GB)
    • Flutter version 0.4.4 at /Users/trevburley/FlutterSDK/flutter
    • Framework revision f9bb4289e9 (3 weeks ago), 2018-05-11 21:44:54 -0700
    • Engine revision 06afdfe54e
    • Dart version 2.0.0-dev.54.0.flutter-46ab040e58

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at /Users/trevburley/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 27.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 9.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 9.4, Build version 9F1027a
    • ios-deploy 1.9.2
    • CocoaPods version 1.5.3

[✓] Android Studio (version 3.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 25.0.1
    • Dart plugin version 173.4700
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)

[✓] IntelliJ IDEA Community Edition (version 2018.1.4)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 25.0.2
    • Dart plugin version 181.4892.1

[✓] VS Code (version 1.23.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Dart Code extension version 2.13.0

[✓] Connected devices (1 available)
    • iPad Pro (12.9-inch) (2nd generation) • D8D24435-C465-4403-B74F-E8DD32DDD30A • ios • iOS 11.4 (simulator)

• No issues found!

9 个答案:

答案 0 :(得分:44)

我猜这个问题是由于中断cocoapods安装造成的。解决方法:

  • 从项目中删除 ios / Flutter / Flutter.framework
  • 在ios目录中运行pod install。应该生成Flutter.framework,包括 Headers / Flutter.h 文件
  • 运行构建。现在一切都应该正常工作

虽然切换到其他Flutter可能会起作用,但实际上并不能解决缓存中断问题。请记住,Flutter的主分支和Beta分支不适合正式发布。

答案 1 :(得分:6)

对于任何来到这里的人来说都是 2021 年

用这个替换你的 pod 文件

platform :ios, '12.0'

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

def flutter_install_ios_plugin_pods(ios_application_path = nil)
  ios_application_path ||= File.dirname(defined_in_file.realpath) if self.respond_to?(:defined_in_file)
  raise 'Could not find iOS application path' unless ios_application_path

  symlink_dir = File.expand_path('.symlinks', ios_application_path)
  system('rm', '-rf', symlink_dir) # Avoid the complication of dependencies like FileUtils.

  symlink_plugins_dir = File.expand_path('plugins', symlink_dir)
  system('mkdir', '-p', symlink_plugins_dir)

  plugins_file = File.join(ios_application_path, '..', '.flutter-plugins-dependencies')
  plugin_pods = flutter_parse_plugins_file(plugins_file)
  plugin_pods.each do |plugin_hash|
    plugin_name = plugin_hash['name']
    plugin_path = plugin_hash['path']
    if (plugin_name && plugin_path)
      symlink = File.join(symlink_plugins_dir, plugin_name)
      File.symlink(plugin_path, symlink)

      if plugin_name == 'flutter_ffmpeg'
          pod 'flutter_ffmpeg/full-lts', :path => File.join('.symlinks', 'plugins', plugin_name, 'ios')
      else
          pod plugin_name, :path => File.join('.symlinks', 'plugins', plugin_name, 'ios')
      end
    end
  end
end

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

然后运行

flutter pub get
cd ios
pod install

编辑

如果它不起作用

pod update
flutter clean
flutter run

@Credit Latalus

答案 2 :(得分:4)

不用担心 - 我一整天都在寻找答案,并最终找到了一个有效的解决方案 - &#39;颤振频道大师&#39;然后是'颤动清洁&#39;并且&#39; flutter run&#39;

我认为这只是一个颤抖的错误/不兼容性,但还没有进入主要渠道。

答案 3 :(得分:3)

这样做

$rm ios/Flutter/Flutter.podspec
$flutter clean

然后运行

flutter pub get

pod install

答案 4 :(得分:2)

我也遇到了同样的问题,花了大约 2 天的时间通过在互联网上尝试多种解决方案来解决它,但最终的解决方案对我有用: Flutter fatal error: ‘Flutter/Flutter.h’ file not found

答案 5 :(得分:1)

对我有用的东西正在改变:

#include "Flutter.h"

#include <Flutter/Flutter.h>

答案 6 :(得分:0)

几个星期前我遇到了同样的问题,我刚刚删除了flutter文件夹并从同一个存储库中克隆它,它对我有效。

答案 7 :(得分:0)

当我尝试在flutter项目中添加共享按钮时遇到了这个问题。我为我解决。您应该按照以下步骤操作:

  1. 检查您的“ pubspec.yalm”文件。
  2. 您应该确定自己的pod文件和cocoapods。为此,您应该在终端机上执行以下步骤:Cannot Install Cocoapods - No podfile found in the project directory
  3. 完成。

答案 8 :(得分:0)

  1. flutter 运行 [new project],然后将 iOS 文件夹替换为现有项目。 (您需要备份现有项目的 iOS 文件夹。)

  2. 将现有项目中的 ios/Runner 替换为新的 iOS 文件夹。

  3. Xcode 设置与现有项目相同。

如果出现iOS版本问题,修改Podfile。

deployment_target = '11.0'
        post_install do |installer|
        installer.generated_projects.each do |project|
            project.targets.each do |target|
                target.build_configurations.each do |config|
                    config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
                end
            end
            project.build_configurations.each do |config|
                config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
            end
        end
    end
  1. 然后,cd ios,pod install。

  2. 颤动运行。