React-native-firebase: RNFirebase core module was not found natively on Android, ensure you have correctly added the RNFirebase and Firebase gradle dependencies to your `android/app/build.gradle` file

Created on 22 Nov 2019  路  12Comments  路  Source: invertase/react-native-firebase

RNFirebase

file android/app/build.gradle
apply plugin: "com.android.application"
apply from: "./versionCode.gradle"

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"

/**

  • 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 {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion '28.0.3'

defaultConfig {
    applicationId "io.shadowfactory.shadowfactoryapp.android"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    multiDexEnabled true  // needed for firestore:
    versionCode Integer.parseInt(VERSION_CODE)
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
signingConfigs {
    release {
        if (project.hasProperty('SFAPP_RELEASE_STORE_FILE')) {
            storeFile file(SFAPP_RELEASE_STORE_FILE)
            storePassword SFAPP_RELEASE_STORE_PASSWORD
            keyAlias SFAPP_RELEASE_KEY_ALIAS
            keyPassword SFAPP_RELEASE_KEY_PASSWORD
        }
    }
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86"
    }
}
packagingOptions{
    doNotStrip '*/mips/*.so'
    doNotStrip '*/mips64/*.so'
}
flavorDimensions "2.10.0"
productFlavors {
    ar {
        resValue 'string', 'app_name', 'ShadowFactory-ar'
        buildConfigField 'String', 'VR_PLATFORM', '"GVR"' //default to GVR
    }
    gvr {
        resValue 'string', 'app_name', 'ShadowFactory-gvr'
        buildConfigField 'String', 'VR_PLATFORM', '"GVR"'
    }
}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        signingConfig signingConfigs.release
        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]
        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 fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.facebook.android:facebook-android-sdk:4.34.0'
implementation project(':react-native-fbsdk')
implementation project(':react-native-firebase')
implementation project(':arcore_client') // remove this if AR not required
implementation project(':gvr_common')
implementation project(path: ':viro_renderer')
implementation project(path: ':react_viro')
implementation 'com.google.android.exoplayer:exoplayer:2.7.3'
implementation 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7'
implementation 'com.amazonaws:aws-android-sdk-core:2.2.+'
implementation 'com.amazonaws:aws-android-sdk-ddb:2.2.+'
implementation 'com.amazonaws:aws-android-sdk-ddb-mapper:2.2.+'
implementation 'com.amazonaws:aws-android-sdk-cognito:2.2.+'
implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.2.+'
implementation project(':react-native-languages')
implementation project(':react-native-view-shot')
implementation project(':react-native-vector-icons')
implementation "com.google.android.gms:play-services-base:16.0.1"
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.google.firebase:firebase-auth:16.0.4'
implementation "com.google.firebase:firebase-config:16.0.1"
implementation "com.google.firebase:firebase-messaging:17.3.3"
implementation "com.google.firebase:firebase-storage:16.0.2"
implementation "com.google.firebase:firebase-firestore:17.1.0"
implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
// <-- Add this line if you wish to use badge on Android
implementation(project(":react-native-google-signin")) {
exclude group: "com.google.android.gms" // very important
}
implementation project(':react-native-maps')
implementation project(':react-native-svg')
implementation project(':react-native-video')
implementation project(':react-native-orientation')
implementation project(':react-native-share')
implementation project(':react-native-gesture-handler')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation project(':react-native-linear-gradient')
}

// 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

file android/build.gradle
buildscript {
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 23
compileSdkVersion = 27
targetSdkVersion = 25
supportLibVersion = "27.1.1"
}
repositories {
google()
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:4.1.0' // google-services plugin
}

}

allprojects {
repositories {
mavenLocal()
google()
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'
}
jcenter()
}
}

subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
}
configurations.all {
resolutionStrategy {
force 'com.google.android.gms:play-services-gcm:16.1.0'
force 'com.google.android.gms:play-services-location:16.0.1'
force 'com.google.android.gms:play-services-basement:16.2.0'
force 'com.google.android.gms:play-services-auth:16.0.1'
force 'com.google.android.gms:play-services-stats:16.0.1'
force 'com.google.android.gms:play-services-base:16.0.1'
}
}
}
}
}

task wrapper(type: Wrapper) {
gradleVersion = '4.4'
distributionUrl = distributionUrl.replace("bin", "all")
}

"react": "16.8.3",
"react-native": "0.59.9",
"react-native-firebase": "^4.3.8",

Does anyone help me resolve it? i don't know why don't it work?

Stale

Most helpful comment

Same issue here

All 12 comments

Not sure why this isn't working for you but I would never use a version of the module that old (4.3.8). With react-native 0.59.x (but why 0.59.9 vs 0.59.10?) I would use 5.5.6, exactly like so: https://github.com/mikehardy/rnfbdemo/blob/master/make-demo-rn59.sh

5.5.6
i used [email protected] follow your suggestion but it's still this! i don't know that why don't it work?

How did the demo work out for you? Did the demo construction script run correctly in your environment and start? I will assume it did since I just re-tested make-demo-rn59.sh last night, which shows you have something going on in your project setup. The important part of the demo construction script is it shows the exact steps to integrate firebase in the correct order, with a functioning project at the end. There are a million ways it can go wrong so I can't spend much time finding each one, but the script demonstrates explicitly one way to do it right - I'd follow along the comments and compare each part of your project making it as similar as possible.

Same issue here

@mikehardy Strangely, this error only happens when I use the safari browser. Not in Chrome.

@meftunca I can't imagine how that is related to the original issue here. If you're having a problem please open a new issue carefully filling out the full template

Hi, like I said, it doesn't mean anything to me, Mike. I got this error in the Safari browser and it doesn't matter to me. Chrome is also working properly and I decided to use Chrome to avoid wasting time with these errors.

If you want detailed information, I can send the details.

After reading the getting started guide (an not only the one about app) I solved this issue. Don't forget to clean most caches lile ./gradlew clean

After reading the getting started guide (an not only the one about app) I solved this issue. Don't forget to clean most caches lile ./gradlew clean

Can you share me the getting startded guide?

@DucSilva

Start with: https://invertase.io/oss/react-native-firebase/quick-start/existing-project

Then follow each plateform instruction in the Next section. Don't forget to clean your android build and app/build folders first before rebuild.

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.

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

joecaraccio picture joecaraccio  路  3Comments

ODelibalta picture ODelibalta  路  3Comments

romreed picture romreed  路  3Comments

n-scope picture n-scope  路  3Comments

jgfidelis picture jgfidelis  路  3Comments