Java.lang.NoClassDefFoundError:解析失败:Lcom/google/firebase/FirebaseApp

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/50608169/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 23:42:43  来源:igfitidea点击:

Java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp

javaandroidfirebasereact-nativereact-native-firebase

提问by Alex Khanenya

Screenshot from Android Studio

Android Studio 截图

Google Play Services

谷歌播放服务

This is React Native project. I have an error after successful build in Android Studio Emulator:

这是 React Native 项目。在 Android Studio Emulator 中成功构建后出现错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp

java.lang.NoClassDefFoundError:解析失败:Lcom/google/firebase/FirebaseApp

My files:

我的文件:

package.json:

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

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.

我尝试了很多解决方案,但没有任何帮助。

回答by Alexey Grinko

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

面临同样的问题。然后我发现我错过了将 Firebase 与 Android 项目集成的一组重要说明: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:

以下是该文档中对我的案例有帮助的步骤的摘要:

  1. Generate google-services.jsonand put it to your android/app/directory.
  2. Add classpath 'com.google.gms:google-services:4.1.0'to buildscript -> dependenciessection of your root-level build.gradleconfig; add google()to allprogects -> repositoriessection of the same file.
  3. Add implementation 'com.google.firebase:firebase-core:16.0.3'to dependenciessection of your app module's build.gradlefile; add apply plugin: 'com.google.gms.google-services'at the very bottom of the same file.
  4. Sync and rebuild. Now it should work.
  1. 生成google-services.json并将其放入您的android/app/目录中。
  2. 添加classpath 'com.google.gms:google-services:4.1.0'buildscript -> dependencies根级build.gradle配置的部分;添加google()allprogects -> repositories同一文件的部分。
  3. 添加implementation 'com.google.firebase:firebase-core:16.0.3'dependencies应用模块build.gradle文件的部分;添加apply plugin: 'com.google.gms.google-services'在同一文件的最底部。
  4. 同步和重建。现在它应该可以工作了。

回答by Anand saga

changed latest firebase-messaging google dependencies and modified other dependencies also in a same version in app gradle file. working fine now

更改了最新的 firebase-messaging google 依赖项,并在应用程序 gradle 文件中的同一版本中修改了其他依赖项。现在工作正常

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'
}

回答by pritam_parker

In my case I forgot to comment Database Package in MainApplication.java

就我而言,我忘记在 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()
      );
    }

回答by Dulaj Madusanka

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

我也遇到过同样的问题。您必须在 pakage.json 文件中更改 react-native-firebase 版本。我从这里找到了解决方案

here

这里

回答by Tiago Gouvêa

On your android/app/build.gradleadd one more implementation on dependeces:

android/app/build.gradle依赖项上再添加一个实现:

...
dependencies {
    implementation "com.google.firebase:firebase-auth:17.0.0"
    ...
}

回答by Anubhav Mittal

There is probably some problem with the dependencies involved.

所涉及的依赖项可能存在一些问题。

In my case, making the following changes worked perfectly in the app level build.gradle

就我而言,进行以下更改在应用程序级别完美运行 build.gradle

dependencies{
     implementation 'com.google.firebase:firebase-auth:17.0.0'
     implementation 'com.firebaseui:firebase-ui-database:6.0.2'
     ...
}

回答by Tobias Arantes

In the gradle.properties file, try adding::

在 gradle.properties 文件中,尝试添加::

android.enableJetifier = true
android.useAndroidX = true

回答by developerSumit

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. Is you are using Firebase please add this in depencdencies.

如果您在 Flutter 中遇到此问题,请在您的 android/app/build.gradle 中添加此依赖项。然后运行你的 main.dart。无需在 ListView 中添加任何类型的控制器。如果您在该页面上使用列表视图。您是否正在使用 Firebase,请将其添加到依赖项中。

implementation "com.google.firebase:firebase-auth:19.3.0"

implementation "com.google.firebase:firebase-auth:19.3.0"