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.6k stars 2.19k forks source link

πŸ”₯ [Android] PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING 100% Crash for all Android Users #2790

Closed luskin closed 4 years ago

luskin commented 4 years ago

Issue

100% of our android users are crashing with the following error:

No field PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in class Lcom/google/android/gms/dynamite/DynamiteModule; or its superclasses (declaration of 'com.google.android.gms.dynamite.DynamiteModule' appears in base.apk)

We were at nearly 99% crash free users and then upgraded our app to RN 0.59 and have since dropped to 0% crash free users.

Stacktrace:

com.google.android.gms.flags.FlagValueProvider.initialize (Unknown Source:7)
com.google.android.gms.flags.FlagRegistry.initialize (Unknown Source:4)
com.google.firebase.auth.internal.zzx.initialize (Unknown Source:3)
com.google.firebase.auth.internal.zzt.run (Unknown Source:14)
android.os.Handler.handleCallback (Handler.java:873)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loop (Looper.java:193)
android.os.HandlerThread.run (HandlerThread.java:65)

Project Files

iOS

Click To Expand

#### `ios/Podfile`: - [ ] I'm not using Pods - [x] I'm using Pods and my Podfile looks like: ```ruby # Uncomment the next line to define a global platform for your project platform :ios, '9.0' target 'Driver' do pod 'React', :path => '../node_modules/react-native', subspecs: [ # Comment out any unneeded subspecs to reduce bundle size. 'Core', 'DevSupport', 'RCTActionSheet', 'RCTAnimation', 'RCTBlob', 'RCTCameraRoll', 'RCTGeolocation', 'RCTImage', 'RCTNetwork', 'RCTPushNotification', 'RCTSettings', 'RCTTest', 'RCTText', 'RCTVibration', 'RCTWebSocket', 'RCTLinkingIOS' ] pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga' # Uncomment the next line if you're using Swift or would like to use dynamic frameworks # use_frameworks! # Pods for Driver # Required by RNFirebase pod 'Firebase/Core', '~> 5.3.0' # [OPTIONAL PODS] - comment out pods for firebase products you won't be using. # pod 'Firebase/AdMob' pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/DynamicLinks' pod 'Firebase/Performance' # pod 'Firebase/Firestore' pod 'Firebase/Messaging' pod 'Firebase/RemoteConfig' # pod 'Firebase/Storage' # Stripe pod 'Stripe', '~> 14.0.0' # Location Manager pod 'INTULocationManager' pod 'Fabric', '~> 1.7.9' pod 'Crashlytics', '~> 3.10.5' pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info' pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions' pod 'RNBackgroundGeolocation', :path => '../node_modules/react-native-background-geolocation' pod 'RNBackgroundFetch', :path => '../node_modules/react-native-background-fetch' pod 'CodePush', :path => '../node_modules/react-native-code-push' pod 'react-native-pdf', :path => '../node_modules/react-native-pdf' pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker' pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' pod 'react-native-intercom', :path => '../node_modules/react-native-intercom' pod 'tipsi-stripe', :path => '../node_modules/tipsi-stripe' pod 'react-native-mapbox-gl', :path => '../node_modules/@react-native-mapbox-gl/maps' pod 'RNDefaultPreference', :path => '../node_modules/react-native-default-preference' pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' end #post_install do |installer| # installer.pods_project.targets.each do |target| # if target.name == "React" # target.remove_from_project # end # end #end post_install do |installer| installer.pods_project.targets.each do |target| # The following is needed to ensure the "archive" step works in XCode. # It removes React & Yoga from the Pods project, as it is already included in the main project. # Without this, you'd see errors when you archive like: # "Multiple commands produce ... libReact.a" # "Multiple commands produce ... libyoga.a" targets_to_ignore = %w(React yoga) if targets_to_ignore.include? target.name target.remove_from_project end 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 = "28.0.3" minSdkVersion = 18 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0" googlePlayServicesVersion = "16.+" googlePlayServicesLocationVersion = "16.0.0" } repositories { maven { url 'https://maven.google.com/' name 'Google' } maven { url 'https://maven.fabric.io/public' } mavenLocal() mavenCentral() jcenter() google() } dependencies { classpath 'com.android.tools.build:gradle:3.4.1' classpath 'com.google.gms:google-services:4.2.0' classpath 'com.google.firebase:firebase-plugins:1.1.1' classpath 'io.fabric.tools:gradle:1.25.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { // Add jitpack repository (added by tipsi-stripe) maven { url "https://jitpack.io" } mavenLocal() mavenCentral() google() jcenter() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } maven { url 'https://maven.google.com/' name 'Google' } maven { url "$rootDir/../node_modules/react-native-background-fetch/android/libs" } maven { url "$rootDir/../node_modules/react-native-background-geolocation/android/libs" } } } // subprojects { subproject -> // afterEvaluate { // if ((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) { // android { // variantFilter { variant -> // def names = variant.flavors*.name // if ( names.contains("reactNative51") // || names.contains("reactNative55") // || names.contains("reactNative56") // || (names.contains("reactNative57") && !names.contains("57_5")) ) { // setIgnore(true) // } // } // } // } // } // } ``` #### `android/app/build.gradle`: ```groovy apply plugin: "com.android.application" apply plugin: "io.fabric" apply plugin: "com.google.firebase.firebase-perf" import com.android.build.OutputFile /** * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets * and bundleReleaseJsAndAssets). * These basically call `react-native bundle` with the correct arguments during the Android build * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the * bundle directly from the development server. Below you can see all the possible configurations * and their defaults. If you decide to add a configuration block, make sure to add it before the * `apply from: "../../node_modules/react-native/react.gradle"` line. * * project.ext.react = [ * // the name of the generated asset file containing your JS bundle * bundleAssetName: "index.android.bundle", * * // the entry file for bundle generation * entryFile: "index.android.js", * * // whether to bundle JS and assets in debug mode * bundleInDebug: false, * * // whether to bundle JS and assets in release mode * bundleInRelease: true, * * // whether to bundle JS and assets in another build variant (if configured). * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants * // The configuration property can be in the following formats * // 'bundleIn${productFlavor}${buildType}' * // 'bundleIn${buildType}' * // bundleInFreeDebug: true, * // bundleInPaidRelease: true, * // bundleInBeta: true, * * // whether to disable dev mode in custom build variants (by default only disabled in release) * // for example: to disable dev mode in the staging build type (if configured) * devDisabledInStaging: true, * // The configuration property can be in the following formats * // 'devDisabledIn${productFlavor}${buildType}' * // 'devDisabledIn${buildType}' * * // the root of your project, i.e. where "package.json" lives * root: "../../", * * // where to put the JS bundle asset in debug mode * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", * * // where to put the JS bundle asset in release mode * jsBundleDirRelease: "$buildDir/intermediates/assets/release", * * // where to put drawable resources / React Native assets, e.g. the ones you use via * // require('./image.png')), in debug mode * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", * * // where to put drawable resources / React Native assets, e.g. the ones you use via * // require('./image.png')), in release mode * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", * * // by default the gradle tasks are skipped if none of the JS files or assets change; this means * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to * // date; if you have any other folders that you want to ignore for performance reasons (gradle * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ * // for example, you might want to remove it from here. * inputExcludes: ["android/**", "ios/**"], * * // override which node gets called and with what additional arguments * nodeExecutableAndArgs: ["node"], * * // supply additional arguments to the packager * extraPackagerArgs: [] * ] */ project.ext.react = [ entryFile: "index.js" ] apply from: "../../node_modules/react-native/react.gradle" apply from: "../../node_modules/react-native-code-push/android/codepush.gradle" apply from: "../../node_modules/react-native-sentry/sentry.gradle" /** * Set this to true to create two separate APKs instead of one: * - An APK that only works on ARM devices * - An APK that only works on x86 devices * The advantage is the size of the APK is reduced by about 4MB. * Upload all the APKs to the Play Store and people will download * the correct one based on the CPU architecture of their device. */ def enableSeparateBuildPerCPUArchitecture = false /** * Run Proguard to shrink the Java bytecode in release builds. */ def enableProguardInReleaseBuilds = false android { lintOptions { disable 'GradleCompatible' disable 'InvalidPackage' } // because of firestore: dexOptions { javaMaxHeapSize "4g" } compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { applicationId "REMOVED FOR PRIVACY" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 88 versionName "2.1.1" missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57_5" multiDexEnabled true ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' } signingConfigs { release { if (project.hasProperty('RELEASE_STORE_FILE')) { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_STORE_PASSWORD storeFile file('**********REMOVED FOR PRIVACY***********') storePassword RELEASE_STORE_PASSWORD } } buildTypes { debug { applicationIdSuffix ".staging" buildConfigField "String", "CODEPUSH_KEY", CODE_PUSH_KEY_STAGING buildConfigField "String", "INTERCOM_API_KEY", INTERCOM_API_KEY_STAGING buildConfigField "String", "INTERCOM_APP_ID", INTERCOM_APP_ID_STAGING buildConfigField "String", "STRIPE_PUBLISHABLE_KEY", STRIPE_PUBLISHABLE_KEY_STAGING } release { buildConfigField "String", "CODEPUSH_KEY", CODE_PUSH_KEY_PRODUCTION buildConfigField "String", "INTERCOM_API_KEY", INTERCOM_API_KEY_PRODUCTION buildConfigField "String", "INTERCOM_APP_ID", INTERCOM_APP_ID_PRODUCTION buildConfigField "String", "STRIPE_PUBLISHABLE_KEY", STRIPE_PUBLISHABLE_KEY_PRODUCTION minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release // debuggable false } } packagingOptions { pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/x86_64/libjsc.so' pickFirst 'lib/arm64-v8a/libjsc.so' pickFirst 'lib/arm64-v8a/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' } splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false // If true, also generate a universal APK include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } } buildTypes { release { minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } // applicationVariants are e.g. debug, release applicationVariants.all { variant -> variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = versionCodes.get(abi) * 1048576 + defaultConfig.versionCode } } } } dependencies { implementation project(':react-native-splash-screen') // Geolocation implementation project(':react-native-background-geolocation') implementation project(':react-native-background-fetch') // Crashlytics implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') { transitive = true } // RNFirebase required dependencies implementation "com.google.firebase:firebase-core:16.0.1" implementation "com.google.android.gms:play-services-base:${rootProject.ext.googlePlayServicesVersion}" implementation(project(':react-native-firebase')) { transitive = false } // RNFirebase optional dependencies implementation "com.google.firebase:firebase-auth:16.0.2" implementation "com.google.firebase:firebase-config:16.0.0" implementation "com.google.firebase:firebase-database:16.0.1" implementation "com.google.firebase:firebase-messaging:17.1.0" implementation "com.google.firebase:firebase-perf:16.0.0" implementation "com.google.firebase:firebase-invites:16.0.1" // Navigation implementation project(':react-native-navigation') // Mapbox implementation project(':@react-native-mapbox-gl_maps') // Other implementation project(':react-native-default-preference') implementation project(':tipsi-stripe') implementation project(':react-native-intercom') implementation project(':react-native-vector-icons') implementation project(':react-native-image-picker') implementation project(':react-native-code-push') implementation project(':react-native-text-input-mask') implementation project(':react-native-signature-capture') implementation project(':react-native-pdf') implementation project(':rn-fetch-blob') implementation project(':react-native-sentry') implementation project(':react-native-awesome-card-io') implementation project(':react-native-device-info') implementation project(':react-native-open-settings') implementation project(':@react-native-community_async-storage') // React Native implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" implementation "com.android.support:support-annotations:${rootProject.ext.supportLibVersion}" implementation "com.facebook.react:react-native:+" // From node_modules implementation 'io.intercom.android:intercom-sdk:5.+' } // Run this once to be able to run the application with BUCK // puts all compile dependencies into folder libs for BUCK to use task copyDownloadableDepsToLibs(type: Copy) { from configurations.compile into 'libs' } apply plugin: 'com.google.gms.google-services' com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true ``` #### `android/settings.gradle`: ```groovy rootProject.name = 'Driver' include ':react-native-splash-screen' project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android') include ':react-native-open-settings' project(':react-native-open-settings').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-open-settings/android') include ':react-native-background-geolocation' project(':react-native-background-geolocation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-geolocation/android') include ':react-native-background-fetch' project(':react-native-background-fetch').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-fetch/android') include ':react-native-default-preference' project(':react-native-default-preference').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-default-preference/android') include ':tipsi-stripe' project(':tipsi-stripe').projectDir = new File(rootProject.projectDir, '../node_modules/tipsi-stripe/android') include ':react-native-intercom' project(':react-native-intercom').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-intercom/android') include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') include ':react-native-image-picker' project(':react-native-image-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-picker/android') include ':react-native-code-push' project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app') include ':react-native-text-input-mask' project(':react-native-text-input-mask').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-text-input-mask/android') include ':react-native-signature-capture' project(':react-native-signature-capture').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-signature-capture/android') include ':react-native-pdf' project(':react-native-pdf').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-pdf/android') include ':rn-fetch-blob' project(':rn-fetch-blob').projectDir = new File(rootProject.projectDir, '../node_modules/rn-fetch-blob/android') include ':react-native-sentry' project(':react-native-sentry').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sentry/android') include ':react-native-awesome-card-io' project(':react-native-awesome-card-io').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-awesome-card-io/android') include ':react-native-device-info' project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android') include ':react-native-firebase' project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android') include ':react-native-navigation' project(':react-native-navigation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-navigation/lib/android/app/') include ':@react-native-mapbox-gl_maps' project(':@react-native-mapbox-gl_maps').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-mapbox-gl/maps/android/rctmgl') include ':@react-native-community_async-storage' project(':@react-native-community_async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/async-storage/android') include ':app' ``` #### `MainApplication.java`: ```java package REMOVED; import android.support.annotation.Nullable; import com.bolt.carrier.BuildConfig; import com.facebook.react.ReactInstanceManager; import com.facebook.soloader.SoLoader; import com.microsoft.codepush.react.ReactInstanceHolder; import com.opensettings.OpenSettingsPackage; import com.reactnativenavigation.NavigationApplication; import com.kevinresol.react_native_default_preference.RNDefaultPreferencePackage; import com.gettipsi.stripe.StripeReactPackage; import com.reactnativenavigation.react.NavigationReactNativeHost; import com.robinpowered.react.Intercom.IntercomPackage; import io.intercom.android.sdk.Intercom; import com.oblador.vectoricons.VectorIconsPackage; import com.imagepicker.ImagePickerPackage; import com.microsoft.codepush.react.CodePush; import com.RNTextInputMask.RNTextInputMaskPackage; import com.rssignaturecapture.RSSignatureCapturePackage; import org.wonday.pdf.RCTPdfView; import com.RNFetchBlob.RNFetchBlobPackage; import com.mapbox.rctmgl.RCTMGLPackage; import org.devio.rn.splashscreen.SplashScreenReactPackage; import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage; import io.invertase.firebase.auth.RNFirebaseAuthPackage; import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage; import io.invertase.firebase.database.RNFirebaseDatabasePackage; import io.invertase.firebase.fabric.crashlytics.RNFirebaseCrashlyticsPackage; import io.invertase.firebase.messaging.RNFirebaseMessagingPackage; import io.invertase.firebase.perf.RNFirebasePerformancePackage; import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage; import io.invertase.firebase.links.RNFirebaseLinksPackage; import io.sentry.RNSentryPackage; import com.cardio.RNCardIOPackage; import com.learnium.RNDeviceInfo.RNDeviceInfo; import io.invertase.firebase.RNFirebasePackage; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.transistorsoft.rnbackgroundfetch.RNBackgroundFetchPackage; import com.transistorsoft.rnbackgroundgeolocation.RNBackgroundGeolocation; import com.reactnativecommunity.asyncstorage.AsyncStoragePackage; import java.util.Arrays; import java.util.List; public class MainApplication extends NavigationApplication implements ReactInstanceHolder { @Override public boolean isDebug() { return BuildConfig.DEBUG; } @Override public List createAdditionalReactPackages() { return Arrays.asList( new MainReactPackage(), new SplashScreenReactPackage(), new RNBackgroundGeolocation(), new RNBackgroundFetchPackage(), new RNDefaultPreferencePackage(), new StripeReactPackage(), new IntercomPackage(), new VectorIconsPackage(), new ImagePickerPackage(), new CodePush(BuildConfig.CODEPUSH_KEY, getApplicationContext(), BuildConfig.DEBUG), new RNTextInputMaskPackage(), new RSSignatureCapturePackage(), new RCTPdfView(), new RNFetchBlobPackage(), new RNSentryPackage(), new RNCardIOPackage(), new RNDeviceInfo(), new RCTMGLPackage(), new OpenSettingsPackage(), // Firebase new RNFirebasePackage(), new RNFirebaseDatabasePackage(), new RNFirebaseCrashlyticsPackage(), new RNFirebaseAnalyticsPackage(), new RNFirebaseRemoteConfigPackage(), new RNFirebaseMessagingPackage(), new RNFirebaseAuthPackage(), new RNFirebasePerformancePackage(), new RNFirebaseNotificationsPackage(), new RNFirebaseLinksPackage(), new AsyncStoragePackage() ); } @Override public ReactInstanceManager getReactInstanceManager() { return getReactNativeHost().getReactInstanceManager(); } @Override protected ReactNativeHost createReactNativeHost() { return new NavigationReactNativeHost(this) { @Override protected String getJSMainModuleName() { return "index"; } @Nullable public String getJSBundleFile() { return CodePush.getJSBundleFile(); } }; } @Override public void onCreate() { super.onCreate(); System.out.println("----- START ANDROID APP -----"); SoLoader.init(this, false); Intercom.initialize(this, BuildConfig.INTERCOM_API_KEY, BuildConfig.INTERCOM_APP_ID); Intercom.client().registerUnidentifiedUser(); } } ``` #### `AndroidManifest.xml`: ```xml ```


Environment

Click To Expand

**`react-native info` output:** ``` React Native Environment Info: System: OS: macOS 10.14.5 CPU: (12) x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz Memory: 11.48 GB / 32.00 GB Shell: 3.2.57 - /bin/bash Binaries: Node: 8.12.0 - ~/.nvm/versions/node/v8.12.0/bin/node Yarn: 1.9.4 - ~/.nvm/versions/node/v8.12.0/bin/yarn npm: 6.5.0 - ~/.nvm/versions/node/v8.12.0/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman SDKs: iOS SDK: Platforms: iOS 13.1, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0 IDEs: Android Studio: 3.4 AI-183.6156.11.34.5692245 Xcode: 11.1/11A1027 - /usr/bin/xcodebuild npmPackages: react: 16.8.3 => 16.8.3 react-native: 0.59.9 => 0.59.9 npmGlobalPackages: react-native-cli: 2.0.1 react-native-git-upgrade: 0.2.7 ``` - **Platform that you're experiencing the issue on**: - [ ] iOS - [ ] Android - [ ] **iOS** but have not tested behavior on Android - [ ] **Android** but have not tested behavior on iOS - [x] Both - **`react-native-firebase` version you're using that has this issue:** - `4.3.6` - **`Firebase` module(s) you're using that has the issue:** - `e.g. auth` - **Are you using `TypeScript`?** - `N`


Think react-native-firebase is great? Please consider supporting all of the project maintainers and contributors by donating via our Open Collective where all contributors can submit expenses. [Learn More]

mikehardy commented 4 years ago

Looks like an incompatible versions thing https://rnfirebase.io/docs/v5.x.x/getting-started#Supported-versions---React-Native-/-Firebase

For react-native-0.59 I'd reference this as the canonical method to build a react-native project https://github.com/mikehardy/rnfbdemo specifically https://github.com/mikehardy/rnfbdemo/blob/master/make-demo-rn59.sh along with all the tricks in PodfileRN59

invites is almost completely gone on google's side and no longer exists in react-native-firebase v5.5.x to match it

All of the software versions shown in the demo work though, with the exception that if you are also using code-push I think you need to disableStrictVersionChecking in the google play services gradle plugin because of this https://github.com/google/play-services-plugins/issues/107 / https://github.com/google/play-services-plugins/pull/95 / https://github.com/invertase/react-native-firebase/issues/1676

stale[bot] commented 4 years ago

Hello πŸ‘‹, to help manage issues we automatically close stale issues. This issue has been automatically marked as stale because it has not had activity for quite some time. Has this issue been fixed, or does it still require the community's attention?

This issue will be closed in 15 days if no further activity occurs. Thank you for your contributions.

stale[bot] commented 4 years ago

Closing this issue after a prolonged period of inactivity. If this is still present in the latest release, please feel free to create a new issue with up-to-date information.