invertase / react-native-firebase

🔥 A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.
https://rnfirebase.io
Other
11.63k stars 2.2k forks source link

[🐛] Undefined symbols _SKANErrorDomain #7594

Closed JeremyBradshaw7 closed 7 months ago

JeremyBradshaw7 commented 7 months ago

Issue

Compile error in moving to the latest version of RN (0.73.2) and firebase analytics (18.8.0).

Undefined symbols for architecture x86_64:
  "_SKANErrorDomain", referenced from:
      -[APMMeasurement(SKAN) handleSKANUpdatePostbackCompletion:error:] in GoogleAppMeasurement(APMMeasurement+SKAN.o)
  "_SKAdNetworkCoarseConversionValueMedium", referenced from:
      -[APMMeasurement(SKAN) convertCoarseConversionValueFromProtoValue:] in GoogleAppMeasurement(APMMeasurement+SKAN.o)
  "_SKAdNetworkCoarseConversionValueLow", referenced from:
      -[APMMeasurement(SKAN) convertCoarseConversionValueFromProtoValue:] in GoogleAppMeasurement(APMMeasurement+SKAN.o)
  "_SKAdNetworkCoarseConversionValueHigh", referenced from:
      -[APMMeasurement(SKAN) convertCoarseConversionValueFromProtoValue:] in GoogleAppMeasurement(APMMeasurement+SKAN.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I'm pretty sure this has something to do with firebase analytics.


Project Files

Javascript

Click To Expand

#### `package.json`: ```json { "name": "ccf", "version": "0.0.1", "private": true, "scripts": { "go": "./go.sh", "start": "react-native start", "cleanstart": "watchman watch-del-all && npm start -- --reset-cache", "test": "jest --maxWorkers=4 --silent", "vtest": "jest --maxWorkers=4", "testci": "jest --ci", "tsc": "tsc", "w": "npm run tsc -- --watch", "clean": "rimraf build", "build": "npm run clean", "tf": "./build-android.sh t && ./build-ios.sh t", "lint": "eslint src --ext .ts,.tsx", "lintfix": "eslint src --ext .ts,.tsx --fix", "ios": "react-native run-ios", "ilist": "xcrun simctl list", "ipad": "react-native run-ios --simulator \"iPad Pro (12.9-inch) (6th generation)\"", "ipad9": "react-native run-ios --simulator \"iPad Pro (9.7-inch)\"", "iphone11": "react-native run-ios --simulator \"iPhone11\"", "air": "react-native run-ios --simulator \"iPad Air\"", "mini4": "react-native run-ios --simulator \"iPad mini 4\"", "mini": "react-native run-ios --simulator \"iPad mini (6th generation)\"", "device": "react-native run-ios --device", "ix": "react-native run-ios --simulator \"iPhone X\"", "imax": "react-native run-ios --simulator \"iPhone 11 Pro Max\"", "ios-prod": "react-native run-ios --configuration Release", "android": "react-native run-android --active-arch-only --appId com.innovedlearning.ccf", "android-prod": "react-native run-android --active-arch-only --appId com.innovedlearning.ccf --variant=release", "alist": "emulator -list-avds", "lollipop": "nohup emulator -avd Nexus_7_API_21 -gpu host &", "pie": "nohup emulator -avd Nexus_6P_API_28 -gpu host &", "tiramisu": "nohup emulator -avd Nexus_10_API_33 -gpu host &", "emu-writable": "nohup emulator -avd Nexus_6P_API_28 -writable-system &", "emu2-writable": "nohup emulator -avd Nexus_10_API_33 -writable-system &", "emu-hosts": "npm run emu-writable && sleep 30 && adb remount && adb push /etc/hosts /etc/hosts", "emu2-hosts": "npm run emu2-writable && sleep 30 && adb remount && adb push /etc/hosts /etc/hosts", "galaxy": "nohup emulator -avd Galaxy_S8_API_28 -gpu host &", "all": "react-native run-ios' 'react-native run-android --active-arch-only --appId com.innovedlearning.ccf", "debug": "open \"rndebugger://set-debugger-loc?host=localhost&port=8081\"", "pod": "cd ios && pod install && cd ..", "podupdate": "cd ios && pod update && cd ..", "ver": "react-native --version", "abuild": "cd android && ./gradlew clean && cd .. && react-native run-android --active-arch-only --appId com.innovedlearning.ccf", "analyze-ios": "react-native-bundle-visualizer --platform ios --reset-cache", "analyze-android": "react-native-bundle-visualizer --platform android --reset-cache", "analyze": "visualize-bundle", "rnuc": "$(npm bin)/rnuc", "postinstall": "npx rnuc .env && patch-package", "ls": "npm ls --depth=0", "lsg": "npm ls -global --depth=0" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/pro-duotone-svg-icons": "^6.2.1", "@fortawesome/pro-light-svg-icons": "^6.2.1", "@fortawesome/pro-regular-svg-icons": "^6.2.1", "@fortawesome/pro-solid-svg-icons": "^6.2.1", "@fortawesome/pro-thin-svg-icons": "^6.2.1", "@fortawesome/react-native-fontawesome": "^0.3.0", "@fortawesome/sharp-solid-svg-icons": "^6.2.1", "@notifee/react-native": "^5.7.0", "@ptomasroos/react-native-multi-slider": "^2.2.2", "@react-native-community/art": "^1.2.0", "@react-native-community/async-storage": "^1.11.0", "@react-native-community/datetimepicker": "^3.0.2", "@react-native-community/hooks": "^3.0.0", "@react-native-community/netinfo": "^5.9.5", "@react-native-firebase/analytics": "^18.8.0", "@react-native-firebase/app": "^18.8.0", "@react-native-firebase/messaging": "^18.8.0", "@react-native-picker/picker": "^2.4.1", "@react-native-voice/voice": "^3.2.4", "@react-navigation/drawer": "^6.4.1", "@react-navigation/native": "^6.0.10", "@react-navigation/stack": "^6.2.1", "@sentry/react-native": "^3.1.1", "axios": "0.21.0", "axios-retry": "3.1.9", "deep-object-diff": "^1.1.7", "deprecated-react-native-prop-types": "^2.3.0", "dot-prop-immutable": "^1.5.0", "email-validator": "^2.0.4", "he": "^1.2.0", "lodash": "^4.17.19", "moment": "^2.27.0", "native-base": "2.15.2", "papaparse": "^5.2.0", "patch-package": "^6.4.7", "postinstall-postinstall": "^2.1.0", "react": "18.2.0", "react-native": "0.73.2", "react-native-animatable": "^1.3.3", "react-native-app-link": "^1.0.0", "react-native-audio-recorder-player": "^3.5.1", "react-native-circular-progress": "^1.3.6", "react-native-color-matrix-image-filters": "^5.2.10", "react-native-color-picker": "^0.4.2", "react-native-device-info": "^8.0.5", "react-native-devsettings": "^1.0.5", "react-native-document-picker": "^3.5.3", "react-native-event-listeners": "^1.0.7", "react-native-exception-handler": "^2.10.9", "react-native-fast-image": "^7.0.2", "react-native-file-viewer": "^2.1.1", "react-native-fs": "^2.16.6", "react-native-gesture-handler": "^1.10.3", "react-native-i18n": "^2.0.15", "react-native-image-picker": "^4.0.6", "react-native-input-scroll-view": "^1.11.0", "react-native-iphone-x-helper": "^1.2.1", "react-native-keyboard-listener": "^1.1.0", "react-native-keyboard-manager": "^4.0.13-15", "react-native-keyboard-spacer": "^0.4.1", "react-native-linear-gradient": "^2.5.6", "react-native-modal": "^13.0.0", "react-native-modal-datetime-picker": "^13.0.1", "react-native-month-picker": "^1.0.1", "react-native-offline": "^5.7.0", "react-native-orientation-locker": "^1.1.8", "react-native-path": "0.0.5", "react-native-permissions": "^3.6.0", "react-native-pie": "^1.1.2", "react-native-progress-circle": "^2.1.0", "react-native-radio-buttons": "^1.0.0", "react-native-reanimated": "^3.6.2", "react-native-safe-area-context": "^4.4.1", "react-native-screens": "^3.29.0", "react-native-sensitive-info": "^6.0.0-alpha.9", "react-native-simple-radio-button": "^2.7.4", "react-native-slider": "^0.11.0", "react-native-spinkit": "^1.5.1", "react-native-splash-screen": "^3.3.0", "react-native-store-version": "^1.4.0", "react-native-svg": "^13.7.0", "react-native-swipe-gestures": "^1.0.5", "react-native-ultimate-config": "^6.0.1", "react-native-video": "^5.2.1", "react-native-view-pdf": "^0.14.0", "react-native-webview": "^13.6.3", "react-query": "^3.16.0", "react-redux": "^7.2.0", "redux": "^4.0.5", "redux-logger": "^3.0.6", "redux-persist": "^6.0.0", "redux-persist-sensitive-storage": "^1.0.0", "redux-persist-transform-filter": "0.0.20", "redux-thunk": "^2.3.0", "reselect": "^4.0.0", "rn-material-ui-textfield": "^1.0.7", "sanitize-html": "^2.10.0", "semver": "^7.3.8", "showdown": "^1.9.1", "string-hash-64": "^1.0.3", "tinycolor2": "^1.4.1", "ts-deferred": "^1.0.4", "validate.js": "^0.13.1" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/plugin-transform-runtime": "^7.10.5", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native-community/eslint-config": "^2.0.0", "@react-native/babel-preset": "^0.73.19", "@react-native/eslint-config": "^0.73.2", "@react-native/metro-config": "^0.73.3", "@react-native/typescript-config": "^0.73.1", "@testing-library/jest-dom": "^5.16.2", "@testing-library/jest-native": "^4.0.4", "@testing-library/react-hooks": "^7.0.2", "@testing-library/react-native": "^9.0.0", "@types/he": "^1.2.0", "@types/jest": "^27.4.0", "@types/lodash": "^4.14.157", "@types/react": "^17", "@types/react-native": "^0.70.13", "@types/react-test-renderer": "^18.0.0", "@types/redux-testkit": "^1.0.5", "@typescript-eslint/eslint-plugin": "^4.22.1", "@typescript-eslint/eslint-plugin-tslint": "^4.22.1", "@typescript-eslint/parser": "^4.22.1", "babel-jest": "^29.6.3", "babel-plugin-module-resolver": "^4.0.0", "babel-plugin-transform-remove-console": "^6.9.4", "eslint": "^8.19.0", "eslint-config-prettier": "^7.2.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-jsdoc": "^31.6.1", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-native": "^3.11.0", "eslint-plugin-unused-imports": "^1.1.5", "jest": "^29.6.3", "jest-mock-axios": "^4.5.0", "jetifier": "^1.6.7", "metro-react-native-babel-preset": "^0.72.4", "react-native-bundle-visualizer": "^3.0.0", "react-native-mock-render": "^0.1.9", "react-test-renderer": "18.2.0", "redux-mock-store": "^1.5.4", "redux-testkit": "^1.0.6", "rimraf": "^3.0.2", "ts-jest": "^27.1.3", "tslint": "^6.1.3", "typescript": "^5.0.4", "visualize-bundle": "^1.4.0" }, "engines": { "node": ">=18" }, "resolutions": { "graceful-fs": "4.2.4", "@types/react": "^17" } } ``` #### `firebase.json` for react-native-firebase v6: ```json { "react-native": { "messaging_android_notification_channel_id": "high-priority", "messaging_android_notification_color": "@color/hotpink" } } ```

iOS

Click To Expand

#### `ios/Podfile`: - [ ] I'm not using Pods - [x] I'm using Pods and my Podfile looks like: ```ruby # Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( "react-native/scripts/react_native_pods.rb", {paths: [process.argv[1]]}, )', __dir__]).strip platform :ios, min_ios_version_supported prepare_react_native_project! # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded # # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` # ```js # module.exports = { # dependencies: { # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), # ``` # flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled linkage = ENV['USE_FRAMEWORKS'] if linkage != nil Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! :linkage => linkage.to_sym end target 'ccf' do config = use_native_modules! use_frameworks! :linkage => :static $RNFirebaseAsStaticFramework = true # $RNFirebaseAnalyticsWithoutAdIdSupport = true permissions_path = '../node_modules/react-native-permissions/ios' pod 'Permission-Camera', :path => "#{permissions_path}/Camera" pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary" pod 'Permission-Microphone', :path => "#{permissions_path}/Microphone" pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary" pod 'Permission-SpeechRecognition', :path => "#{permissions_path}/SpeechRecognition" # Flags change depending on the env values. flags = get_default_flags() use_react_native!( :path => config[:reactNativePath], # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. # :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) post_install do |installer| react_native_post_install( installer, config[:reactNativePath], :mac_catalyst_enabled => false ) end end ``` #### `AppDelegate.m`: ```objc // N/A ```


Android

Click To Expand

#### Have you converted to AndroidX? - [ ] my application is an AndroidX application? - [ ] I am using `android/gradle.settings` `jetifier=true` for Android compatibility? - [ ] I am using the NPM package `jetifier` for react-native compatibility? #### `android/build.gradle`: ```groovy // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { buildToolsVersion = "34.0.0" minSdkVersion = 21 // lollipop compileSdkVersion = 34 // Android 14, should be latest version with features I need targetSdkVersion = 34 // Android 14 (should be latest). Updated to 33 to avoid Play Store complaining after 31/8/23. ndkVersion = "25.1.8937393" kotlinVersion = '1.8.0' // https://github.com/hyochan/react-native-audio-recorder-player (1.5) but 1.8 after RN 0.73 Upg androidXAnnotation = "1.1.0" androidXBrowser = "1.0.0" androidXCore = "1.5.0" } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath 'com.google.gms:google-services:4.4.0' // firebase classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") // std RN 0.73 } } allprojects { repositories { maven { url "https://www.jitpack.io" } jcenter() // dropped from base RN but still required until all 3rd party packages use maven } } apply plugin: "com.facebook.react.rootproject" ``` #### `android/app/build.gradle`: ```groovy apply plugin: "com.android.application" apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" apply plugin: 'com.google.gms.google-services' // firebase apply from: "../../node_modules/@sentry/react-native/sentry.gradle" // sentry apply from: "../../node_modules/react-native-ultimate-config/android/rnuc.gradle" // react-native-ultimate-config apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" // native-base /** * This is the configuration block to customize your React Native Android app. * By default you don't need to apply any configuration, just uncomment the lines you need. */ react { } /** * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ def enableProguardInReleaseBuilds = false /** * The preferred build flavor of JavaScriptCore (JSC) * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+' android { ndkVersion rootProject.ext.ndkVersion buildToolsVersion rootProject.ext.buildToolsVersion compileSdk rootProject.ext.compileSdkVersion namespace "com.innovedlearning.ccf" // replace in MASTER with "com.theeducationoffice.ccf" !! defaultConfig { applicationId "com.innovedlearning.ccf" // replaced in MASTER with "com.theeducationoffice.ccf" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode project.config.get("APP_BUILD").toInteger() versionName project.config.get("APP_VERSION") multiDexEnabled true // Needed to support API<21 } signingConfigs { release { if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { storeFile file(MYAPP_RELEASE_STORE_FILE) storePassword MYAPP_RELEASE_STORE_PASSWORD keyAlias MYAPP_RELEASE_KEY_ALIAS keyPassword MYAPP_RELEASE_KEY_PASSWORD } } } buildTypes { debug { signingConfig signingConfigs.debug } release { minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release } } lintOptions { checkReleaseBuilds false abortOnError false } } dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") // implementation("com.facebook.react:flipper-integration") // implementation 'androidx.appcompat:appcompat:1.1.0' // implementation 'com.facebook.react:react-native:+' // From node_modules // implementation 'com.android.support:multidex:1.0.3' // Needed to support API<21 if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) ``` #### `android/settings.gradle`: ```groovy rootProject.name = 'ccf' include ':react-native-video' project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android') include ':@react-native-firebase_app' project(':@react-native-firebase_app').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/app/android') apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') ``` #### `MainApplication.kt`: ```kt package com.ccf; import android.app.Application; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load; import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost; import com.facebook.react.defaults.DefaultReactNativeHost; import com.facebook.soloader.SoLoader; import com.reactnativeultimateconfig.UltimateConfigModule; // react-native-ultimate-config import org.devio.rn.splashscreen.SplashScreenReactPackage; // react-native-splash-screen class MainApplication : Application(), ReactApplication { override val reactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) { override fun getPackages(): List = PackageList(this).packages.apply { // Packages that cannot be autolinked yet can be added manually here, for example: // add(MyReactNativePackage()) } override fun getJSMainModuleName(): String = "index" override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED } override val reactHost: ReactHost get() = getDefaultReactHost(this.applicationContext, reactNativeHost) override fun onCreate() { super.onCreate() SoLoader.init(this, false) if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app. load() } // ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager) UltimateConfigModule.setBuildConfig(BuildConfig::class.java) // react-native-ultimate-config } } // Had these before 0.73 rename from java to kt, where should these go now? check the packages... // // react-native-reanimated // @Override // protected JSIModulePackage getJSIModulePackage() { // return new ReanimatedJSIModulePackage(); // } // @Override // public void onCreate() { // super.onCreate(); // UltimateConfigModule.setBuildConfig(BuildConfig.class); // react-native-ultimate-config - DONE // AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); // stop dark mode device setting bleeding into RN Alert, see https://github.com/facebook/react-native/issues/31345 // } ``` #### `AndroidManifest.xml`: ```xml ```


Environment

Click To Expand

**`react-native info` output:** ``` warn Package @sentry/react-native contains invalid configuration: "dependency.platforms.ios.sharedLibraries" is not allowed,"dependency.hooks" is not allowed. Please verify it's properly linked using "npx react-native config" command and contact the package maintainers about this. warn Package native-base contains invalid configuration: "dependency.assets" is not allowed. Please verify it's properly linked using "npx react-native config" command and contact the package maintainers about this. info Fetching system and libraries information... System: OS: macOS 11.6.5 CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz Memory: 1.57 GB / 16.00 GB Shell: version: 3.2.57 path: /bin/bash Binaries: Node: version: 18.0.0 path: /usr/local/bin/node Yarn: version: 1.22.19 path: ~/.yarn/bin/yarn npm: version: 8.6.0 path: /usr/local/bin/npm Watchman: version: 2022.03.21.00 path: /usr/local/bin/watchman Managers: CocoaPods: version: 1.14.3 path: /usr/local/bin/pod SDKs: iOS SDK: Platforms: - DriverKit 21.2 - iOS 15.2 - macOS 12.1 - tvOS 15.2 - watchOS 8.3 Android SDK: API Levels: - "23" - "28" - "29" - "30" - "31" - "32" - "33" - "34" Build Tools: - 23.0.1 - 23.0.2 - 25.0.0 - 25.0.1 - 25.0.2 - 26.0.2 - 26.0.3 - 27.0.0 - 27.0.3 - 28.0.2 - 28.0.3 - 29.0.2 - 29.0.3 - 30.0.0 - 30.0.1 - 30.0.2 - 30.0.3 - 31.0.0 - 32.0.0 - 33.0.0 - 33.0.1 - 34.0.0 System Images: - android-16 | Google APIs Intel x86 Atom - android-22 | Google APIs Intel x86 Atom - android-28 | Google APIs Intel x86 Atom - android-29 | Google APIs Intel x86 Atom - android-29 | Google APIs Intel x86 Atom_64 - android-30 | Android TV Intel x86 Atom Android NDK: Not Found IDEs: Android Studio: 2021.1 AI-211.7628.21.2111.8309675 Xcode: version: 13.2.1/13C100 path: /usr/bin/xcodebuild Languages: Java: version: 17.0.10 path: /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/bin/javac Ruby: Not Found npmPackages: "@react-native-community/cli": Not Found react: installed: 18.2.0 wanted: 18.2.0 react-native: installed: 0.73.2 wanted: 0.73.2 react-native-macos: Not Found npmGlobalPackages: "*react-native*": Not Found Android: hermesEnabled: true newArchEnabled: false iOS: hermesEnabled: true newArchEnabled: false ``` - **Platform that you're experiencing the issue on**: - [x] iOS - [ ] Android - [ ] **iOS** but have not tested behavior on Android - [ ] **Android** but have not tested behavior on iOS - [ ] Both - **`react-native-firebase` version you're using that has this issue:** - `18.8.0` - **`Firebase` module(s) you're using that has the issue:** - `analytics` - **Are you using `TypeScript`?** - `Yes`


mikehardy commented 7 months ago

https://stackoverflow.com/questions/76737353/xcode-14-failed-to-build-ios-app-xcode-undefined-symbol-skadnetwork

OS: macOS 11.6.5 Xcode: version: 13.2.1/13C100

You need new Xcode to build it, and likely transitively an updated macOS

JeremyBradshaw7 commented 7 months ago

Thanks @mikehardy - I was trying to build this on my older macbook since it needs more than just switching branches to experiment with upgrading RN (there are environmental changes needed as well like upgrading the JDK), so I wanted to isolate it completely from my main development machine. This older macbook won't upgrade to Monterrey.

Do you know the latest version of react-native-firebase which won't have this issue? I was trying to upgrade from 14.4.0 to the latest (18.8.0) due to other issues that I encountered, such as: image

mikehardy commented 7 months ago

You might like open core legacy patcher, I I use it successfully on an old MacBook pro and an old MacBook air. Running MacOS current flawlessly. Works really well. The changelog has notes about when the xcode dependency changed I believe

amoghj03 commented 6 months ago

@JeremyBradshaw7 , did u get the solution for the above issue, Now i am building my project in Mac M1 and still facing this issue,

Mac Version - 12.7.3 (Monterey) Xcode version - xed version 13.4.1 Could u please help me with the steps how to fix.

Screenshot 2024-02-26 at 5 16 06 PM
khiemthanhicario commented 6 months ago

I've identified the issue: it seems to stem from my use of Firebase Analytics, resulting in problems with the iOS build.

The reason on my machine is as follows: Please utilize Xcode 14.1 or a newer version for building purposes. To incorporate Firebase into your Apple project, ensure you're using Xcode 14.1 or later.

For further information, please refer to the link below: GitHub Issue #7594