Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter.h not found error

I've lost the ability to build Flutter applications for iOS since a few days back. I updated my iPad to 11.4 which forced me to update xCode to 9.4 and I think there was a new release of Flutter thrown in the mix too. In my infinite wisdom I updated them all and now can't test my projects any more.

With deadlines approaching quickly I am looking for advice on how to get moving again. I'm not that familiar with Apple products so don't really know my way around xCode etc yet.

This is a fresh 'FLUTTER CREATE testproject' project, no changes have been made to it whatsoever.

FLUTTER RUN log:

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).

and verbose FLUTTER DOCTOR:

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!
like image 294
trvo Avatar asked Jun 03 '18 21:06

trvo


3 Answers

I guess this problem is caused by interrupting cocoapods install. Here's fix:

  • Remove ios/Flutter/Flutter.framework from your project
  • Run pod install in ios directory. Flutter.framework should be generated, including Headers/Flutter.h file
  • Run build. Everything should be working now

While switching to a different Flutter might work, it doesn't really solves a broken cache problem. Keep in mind that master and beta branches of Flutter are not suitable for production release.

like image 155
Igor Kharakhordin Avatar answered Nov 14 '22 14:11

Igor Kharakhordin


For Anyone that comes here is 2021

Replace your pod file with this one

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

And Run

flutter pub get
cd ios
pod install

EDIT

if it doesn't work then

pod update
flutter clean
flutter run

@Credit Latalus

like image 21
Taha Malik Avatar answered Nov 14 '22 14:11

Taha Malik


Do this

rm ios/Flutter/Flutter.podspec
flutter clean

then run

flutter pub get

and

pod install
like image 4
Willio Jeanvilma Avatar answered Nov 14 '22 13:11

Willio Jeanvilma