I am able to run the app in Debug mode in XCODE and simulator without any errors. But when I build for Release Mode the build fails with below 2 errors:
I have been trying different solutions available on Stackoverflow and gitHub over last 10 days but know seems to be working, below are the details.
FLUTTER DOCTOR :
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, v1.17.3, on Mac OS X 10.15.3 19D76, locale en-IN) [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0) [✓] Xcode - develop for iOS and macOS (Xcode 11.5) [✓] Android Studio (version 4.0) [✓] Connected device (2 available) • No issues found!
POD FILE :
# Uncomment this line to define a global platform for your project platform :ios, '9.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 parse_KV_file(file, separator='=') file_abs_path = File.expand_path(file) if !File.exists? file_abs_path return []; end generated_key_values = {} skip_line_start_symbols = ["#", "/"] File.foreach(file_abs_path) do |line| next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } plugin = line.split(pattern=separator) if plugin.length == 2 podname = plugin[0].strip() path = plugin[1].strip() podpath = File.expand_path("#{path}", file_abs_path) generated_key_values[podname] = podpath else puts "Invalid plugin specification: #{line}" end end generated_key_values end target 'Runner' do use_frameworks! use_modular_headers! # Flutter Pod copied_flutter_dir = File.join(__dir__, 'Flutter') copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') unless File.exist?(generated_xcode_build_settings_path) raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" end generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; unless File.exist?(copied_framework_path) FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) end unless File.exist?(copied_podspec_path) FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) end end # Keep pod path relative so it can be checked into Podfile.lock. pod 'Flutter', :path => 'Flutter' # Plugin Pods # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock # referring to absolute paths on developers' machines. system('rm -rf .symlinks') system('mkdir -p .symlinks/plugins') plugin_pods = parse_KV_file('../.flutter-plugins') plugin_pods.each do |name, path| symlink = File.join('.symlinks', 'plugins', name) File.symlink(path, symlink) pod name, :path => File.join(symlink, 'ios') end end post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' end end end
AppDelegate.swift (file) :
import UIKit import Flutter import Firebase @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { FirebaseApp.configure() GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
Firebase.h file (Path: Pods>Pods>Firebase>CoreOnly>Firebase.h) :
// Copyright 2019 Google // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #import <FirebaseCore/FirebaseCore.h> #if !defined(__has_include) #error "Firebase.h won't import anything if your compiler doesn't support __has_include. Please \ import the headers individually." #else #if __has_include(<FirebaseAnalytics/FirebaseAnalytics.h>) #import <FirebaseAnalytics/FirebaseAnalytics.h> #endif #if __has_include(<FirebaseAuth/FirebaseAuth.h>) #import <FirebaseAuth/FirebaseAuth.h> #endif #if __has_include(<FirebaseCrashlytics/FirebaseCrashlytics.h>) #import <FirebaseCrashlytics/FirebaseCrashlytics.h> #endif #if __has_include(<FirebaseDatabase/FirebaseDatabase.h>) #import <FirebaseDatabase/FirebaseDatabase.h> #endif #if __has_include(<FirebaseDynamicLinks/FirebaseDynamicLinks.h>) #import <FirebaseDynamicLinks/FirebaseDynamicLinks.h> #if !__has_include(<FirebaseAnalytics/FirebaseAnalytics.h>) #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #warning "FirebaseAnalytics.framework is not included in your target. Please add \ `Firebase/Analytics` to your Podfile or add FirebaseAnalytics.framework to your project to ensure \ Firebase Dynamic Links works as intended." #endif // #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #endif #endif #if __has_include(<FirebaseFirestore/FirebaseFirestore.h>) #import <FirebaseFirestore/FirebaseFirestore.h> #endif #if __has_include(<FirebaseFunctions/FirebaseFunctions.h>) #import <FirebaseFunctions/FirebaseFunctions.h> #endif #if __has_include(<FirebaseInAppMessaging/FirebaseInAppMessaging.h>) #import <FirebaseInAppMessaging/FirebaseInAppMessaging.h> #if !__has_include(<FirebaseAnalytics/FirebaseAnalytics.h>) #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #warning "FirebaseAnalytics.framework is not included in your target. Please add \ `Firebase/Analytics` to your Podfile or add FirebaseAnalytics.framework to your project to ensure \ Firebase In App Messaging works as intended." #endif // #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #endif #endif #if __has_include(<FirebaseInstanceID/FirebaseInstanceID.h>) #import <FirebaseInstanceID/FirebaseInstanceID.h> #endif #if __has_include(<FirebaseMessaging/FirebaseMessaging.h>) #import <FirebaseMessaging/FirebaseMessaging.h> #if !__has_include(<FirebaseAnalytics/FirebaseAnalytics.h>) #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #warning "FirebaseAnalytics.framework is not included in your target. Please add \ `Firebase/Analytics` to your Podfile or add FirebaseAnalytics.framework to your project to ensure \ Firebase Messaging works as intended." #endif // #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #endif #endif #if __has_include(<FirebaseMLCommon/FirebaseMLCommon.h>) #import <FirebaseMLCommon/FirebaseMLCommon.h> #endif #if __has_include(<FirebaseMLModelInterpreter/FirebaseMLModelInterpreter.h>) #import <FirebaseMLModelInterpreter/FirebaseMLModelInterpreter.h> #endif #if __has_include(<FirebaseMLNLLanguageID/FirebaseMLNLLanguageID.h>) #import <FirebaseMLNLLanguageID/FirebaseMLNLLanguageID.h> #endif #if __has_include(<FirebaseMLNLSmartReply/FirebaseMLNLSmartReply.h>) #import <FirebaseMLNLSmartReply/FirebaseMLNLSmartReply.h> #endif #if __has_include(<FirebaseMLNLTranslate/FirebaseMLNLTranslate.h>) #import <FirebaseMLNLTranslate/FirebaseMLNLTranslate.h> #endif #if __has_include(<FirebaseMLNaturalLanguage/FirebaseMLNaturalLanguage.h>) #import <FirebaseMLNaturalLanguage/FirebaseMLNaturalLanguage.h> #endif #if __has_include(<FirebaseMLVision/FirebaseMLVision.h>) #import <FirebaseMLVision/FirebaseMLVision.h> #endif #if __has_include(<FirebaseMLVisionAutoML/FirebaseMLVisionAutoML.h>) #import <FirebaseMLVisionAutoML/FirebaseMLVisionAutoML.h> #endif #if __has_include(<FirebaseMLVisionBarcodeModel/FirebaseMLVisionBarcodeModel.h>) #import <FirebaseMLVisionBarcodeModel/FirebaseMLVisionBarcodeModel.h> #endif #if __has_include(<FirebaseMLVisionFaceModel/FirebaseMLVisionFaceModel.h>) #import <FirebaseMLVisionFaceModel/FirebaseMLVisionFaceModel.h> #endif #if __has_include(<FirebaseMLVisionLabelModel/FirebaseMLVisionLabelModel.h>) #import <FirebaseMLVisionLabelModel/FirebaseMLVisionLabelModel.h> #endif #if __has_include(<FirebaseMLVisionObjectDetection/FirebaseMLVisionObjectDetection.h>) #import <FirebaseMLVisionObjectDetection/FirebaseMLVisionObjectDetection.h> #endif #if __has_include(<FirebaseMLVisionTextModel/FirebaseMLVisionTextModel.h>) #import <FirebaseMLVisionTextModel/FirebaseMLVisionTextModel.h> #endif #if __has_include(<FirebasePerformance/FirebasePerformance.h>) #import <FirebasePerformance/FirebasePerformance.h> #if !__has_include(<FirebaseAnalytics/FirebaseAnalytics.h>) #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #warning "FirebaseAnalytics.framework is not included in your target. Please add \ `Firebase/Analytics` to your Podfile or add FirebaseAnalytics.framework to your project to ensure \ Firebase Performance works as intended." #endif // #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #endif #endif #if __has_include(<FirebaseRemoteConfig/FirebaseRemoteConfig.h>) #import <FirebaseRemoteConfig/FirebaseRemoteConfig.h> #if !__has_include(<FirebaseAnalytics/FirebaseAnalytics.h>) #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #warning "FirebaseAnalytics.framework is not included in your target. Please add \ `Firebase/Analytics` to your Podfile or add FirebaseAnalytics.framework to your project to ensure \ Firebase Remote Config works as intended." #endif // #ifndef FIREBASE_ANALYTICS_SUPPRESS_WARNING #endif #endif #if __has_include(<FirebaseStorage/FirebaseStorage.h>) #import <FirebaseStorage/FirebaseStorage.h> #endif #if __has_include(<GoogleMobileAds/GoogleMobileAds.h>) #import <GoogleMobileAds/GoogleMobileAds.h> #endif #if __has_include(<Fabric/Fabric.h>) #import <Fabric/Fabric.h> #endif #if __has_include(<Crashlytics/Crashlytics.h>) #import <Crashlytics/Crashlytics.h> #endif #endif // defined(__has_include)
Firebase.h error
Could not build Objective-C module 'Firebase'
I was facing same issue, in my case Firebase pods version issue was there. I fixed that though following steps:-
Let me know if case if you still face an issue.
. Copy the project path and paste on terminal. Now type pod install, this will remove all the pods related with Firebase. Now open your podFile and uncomment all the pods related to Firebase.
This migration guide for react-native-firebase could be useful for your case:
https://rnfirebase.io/migrating-to-v6#removing-v5-from-javascript
I uninstalled version 5 and installed version 6, but it seems there was some extra work to do to get rid of older versions of firebase.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With