This is React Native project. I have an error after successful build in Android Studio Emulator:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp
My files:
package.json:
...
"react-native": "^0.55.3",
"react-native-camera": "1.1.2",
"react-native-check-box": "^2.1.0",
"react-native-extended-stylesheet": "^0.8.1",
"react-native-firebase": "^4.2.0",
"react-native-geocoder": "^0.5.0",
"react-native-git-upgrade": "^0.2.7",
"react-native-htmlview": "^0.12.1",
"react-native-image-picker": "^0.26.10",
"react-native-linear-gradient": "^2.4.0",
"react-native-local-storage": "^1.5.2",
"react-native-maps": "^0.21.0",
"react-native-modal": "^5.4.0",
"react-native-modal-dropdown": "^0.6.1",
"react-native-read-more-text": "^1.0.0",
"react-native-router-flux": "^4.0.0-beta.27",
"react-native-svg-image": "^2.0.1",
"react-native-text-input-mask": "^0.7.0",
...
android/app/build.gradle:
...
android {
compileSdkVersion 27
buildToolsVersion "27.0.1"
defaultConfig {
applicationId "com.something.anything"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
multiDexEnabled true
}
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
}
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
buildTypes {
release {
signingConfig signingConfigs.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]
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 {
compile(project(':react-native-firebase')) {
transitive = false
}
compile project(':react-native-geocoder')
compile(project(':react-native-maps')) {
exclude group: 'com.google.android.gms', module: 'play-services-base'
exclude group: 'com.google.android.gms', module: 'play-services-maps'
exclude group: 'com.google.android.gms', module: 'play-services-location'
}
compile 'com.google.android.gms:play-services-base:15.+'
compile 'com.google.android.gms:play-services-maps:15.+'
compile 'com.google.android.gms:play-services-location:15.+'
compile (project(':react-native-camera')) {
exclude group: "com.google.android.gms"
compile 'com.android.support:exifinterface:25.+'
compile ('com.google.android.gms:play-services-vision:12.0.1') {
force = true
}
}
compile project(':react-native-text-input-mask')
compile project(':react-native-linear-gradient')
compile project(':react-native-image-picker')
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
}
allprojects {
repositories {
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
}
}
// 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'
}
android/build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex')
) {
details.useVersion "27.1.0"
}
}
}
}
I've tried a lot of solutions but nothing helped.
Faced the same issue. Then I found out that I missed an important set of instructions to integrate Firebase with Android project: https://firebase.google.com/docs/android/setup#add_firebase_to_your_app
Here is the summary of the steps in that documentation that helped in my case:
google-services.json
and put it to your android/app/
directory.classpath 'com.google.gms:google-services:4.1.0'
to buildscript -> dependencies
section of your root-level build.gradle
config; add google()
to allprogects -> repositories
section of the same file.implementation 'com.google.firebase:firebase-core:16.0.3'
to dependencies
section of your app module's build.gradle
file; add apply plugin: 'com.google.gms.google-services'
at the very bottom of the same file.On your android/app/build.gradle
add one more implementation on dependeces:
...
dependencies {
implementation "com.google.firebase:firebase-auth:17.0.0"
...
}
There is probably some problem with the dependencies involved.
In my case, making the following changes worked perfectly in the app level build.gradle
dependencies{
implementation 'com.google.firebase:firebase-auth:17.0.0'
implementation 'com.firebaseui:firebase-ui-database:6.0.2'
...
}
changed latest firebase-messaging google dependencies and modified other dependencies also in a same version in app gradle file. working fine now
dependencies version detail you can refer here
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
implementation 'com.google.firebase:firebase-auth:17.0.0'
implementation 'com.google.firebase:firebase-messaging:18.0.0'
}
In my case I forgot to comment Database Package in MainApplication.java
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new AsyncStoragePackage(),
new RNCameraPackage(),
new VectorIconsPackage(),
new RNGestureHandlerPackage(),
new RNFirebasePackage(),
// add/remove these packages as appropriate
//new RNFirebaseAdMobPackage(),
new RNFirebaseAnalyticsPackage(),
//new RNFirebaseAuthPackage(),
// new RNFirebaseRemoteConfigPackage(),
new RNFirebaseCrashlyticsPackage(),
// new RNFirebaseDatabasePackage(), <==== Comment this package
// new RNFirebaseFirestorePackage(),
// new RNFirebaseFunctionsPackage(),
new RNFirebaseInstanceIdPackage(),
// new RNFirebaseInvitesPackage(),
new RNFirebaseLinksPackage(),
new RNFirebaseMessagingPackage(),
new RNFirebaseNotificationsPackage(),
new RNFirebasePerformancePackage()
// new RNFirebaseStoragePackage()
);
}
I have faced the same issues. You have to change the react-native-firebase version in pakage.json file. I found the solution from here
If your are facing this issue in Flutter, Add this dependency in your android/app/build.gradle. And run your main.dart. No need to add any type of controller in ListView. If you are using listview on that page. If you are using Firebase please add this in depencdencies.
implementation "com.google.firebase:firebase-auth:19.3.0"
implementation("com.google.firebase:firebase-iid")
Solution 1:
Add one more implementation on dependeces in your android/app/build.gradle
file.
dependencies {
implementation "com.google.firebase:firebase-auth:17.0.0"
...
}
Solution 2:
Generate google-services.json
and put it to your android/app/
directory.
Add classpath 'com.google.gms:google-services:4.1.0'
to buildscript -> dependencies section of your root-level build.gradle config and add google()
as first entry to allprogects -> repositories section of the same file.
buildscript { repositories { google() jcenter() } dependencies { ... classpath 'com.google.gms:google-services:4.1.0' } } allprojects { repositories { google() ... } }
Add implementation 'com.google.firebase:firebase-core:16.0.3'
to dependencies section of your app module's build.gradle
file and add apply plugin: 'com.google.gms.google-services'
at the very bottom of the same file.
dependencies { ... implementation 'com.google.firebase:firebase-core:16.0.3' } apply plugin: 'com.google.gms.google-services'
Sync and rebuild.
UPDATE YOUR FIREBASE LIBRARIES!!!!
Eg. if your app uses firebase auth, Google for it, in its documentation they provide with the latest version, paste it to your build.gradle
The libraries added by your Firebase Assistant in Android Studio are usually old.
In the gradle.properties file, try adding::
android.enableJetifier = true
android.useAndroidX = true
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.