istornz / flutter_live_activities

A Flutter plugin to use iOS 16.1+ Live Activities โ›น๏ธ & iPhone Dynamic Island ๐Ÿ๏ธ features
https://dimitridessus.fr/
MIT License
161 stars 48 forks source link

'Flutter/Flutter.h' file not found after adding new Target #37

Closed kvenn closed 1 year ago

kvenn commented 1 year ago

The full error I'm receiving:

Error (Xcode): 'Flutter/Flutter.h' file not found
/Users/kylevenn/Development/sodality/flutter-app/ios/Runner/GeneratedPluginRegistrant.h:9:8

Error (Xcode): failed to emit precompiled header '/Users/kylevenn/Library/Developer/Xcode/DerivedData/Runner-gicqxyvdiyyhztgsiqtndvolixjg/Build/Intermediates.noindex/PrecompiledHeaders/Runner-Bridging-Header-swift_2CP1RV8U38IC2-clang_2GJ38KA54ZL8I.pch' for bridging header '/Users/kylevenn/Development/sodality/flutter-app/ios/Runner/Runner-Bridging-Header.h'

Uncategorized (Xcode): Command SwiftCompile failed with a nonzero exit code

I followed the guide exactly and have double-checked multiple times.

I have a somewhat non-conventional Flutter setup with many dependencies, a modified podfile, and extensive support for build flavors (which has led to the creation of multiple scripts).

The error occurred only after adding the new target. Would love any suggestions! Thank you ๐Ÿ™ ๐Ÿ™ ๐Ÿ™ ๐Ÿ™

My full podfile:

$FirebaseAnalyticsWithoutAdIdSupport = true

# Uncomment this line to define a global platform for your project
platform :ios, '12.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

# target 'PingFriendsWidgetExtension' 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)
    target.build_configurations.each do |config|
      # When we added Snapkit, it broke running on the simulator.
      # More details here: https://github.com/TimmyRB/snapkit/issues/35#issuecomment-1269026957
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"

      if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
        config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
      end

      # config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'

      # Uncomment relevant line if we ask for permission
      # Preprocessor definitions can be found in: https://github.com/Baseflow/flutter-permission-handler/blob/master/permission_handler/ios/Classes/PermissionHandlerEnums.h
      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
kvenn commented 1 year ago

โœ… Fixed it.

This solution got me part of the way there: https://github.com/istornz/flutter_live_activities/issues/6#issuecomment-1380387612

Then I hit another error which made me realize I need to uncomment the forcing of the ios version. File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a https://stackoverflow.com/a/75729977/1759443

Then got an error saying the embedded app needed the same bundle ID prefix (which I hit because I have many flavors). I had to update that to point to my bundle id xcode build variable.

Suggestion: Add this error message (and that one from the issue I linked) to a "Troubleshooting" section in the README.