Firebase 快速启动抛出 NoClassDefFoundError

Posted

技术标签:

【中文标题】Firebase 快速启动抛出 NoClassDefFoundError【英文标题】:Firebase quick start throws NoClassDefFoundError 【发布时间】:2018-01-02 19:24:58 【问题描述】:

我将应用添加到 Firebase 控制台,并将 google json 文件添加到应用文件夹。 然后,当我尝试启动应用程序时,它会崩溃并显示以下消息。

提前致谢。

错误:

07-27 13:18:21.000 26362-26362/? E/androidRuntime:致命异常: 主要的 进程:com.google.samples.quickstart.config,PID:26362 java.lang.NoClassDefFoundError:解析失败: Lcom/google/android/gms/R$string; 在 com.google.android.gms.common.internal.zzby.(未知来源) 在 com.google.firebase.FirebaseOptions.fromResource(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知 资源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1751) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1726) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知 资源) 在 android.app.ActivityThread.installProvider(ActivityThread.java:5855) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:5447) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5386) 在 android.app.ActivityThread.-wrap2(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1546) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6121) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 引起:java.lang.ClassNotFoundException:找不到类 路径上的“com.google.android.gms.R$string”:DexPathList[[zip 文件 “/data/app/com.google.samples.quickstart.config-1/base.apk”,压缩文件 "/data/app/com.google.samples.quickstart.config-1/split_lib_dependencies_apk.apk"],nativeLibraryDirectories=[/data/app/com.google.samples.quickstart.config-1/lib/arm64, /system/lib64, /vendor/lib64]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:380) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 com.google.android.gms.common.internal.zzby.(未知来源) 在 com.google.firebase.FirebaseOptions.fromResource(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知 资源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1751) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1726) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知 资源) 在 android.app.ActivityThread.installProvider(ActivityThread.java:5855) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:5447) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5386) 在 android.app.ActivityThread.-wrap2(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1546) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6121) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

分级

apply plugin: 'com.android.application'
check.dependsOn 'assembleDebugAndroidTest'

android 
    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    defaultConfig 
        applicationId "com.google.samples.quickstart.config"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    

    buildTypes 
        release 
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    


configurations.all 
    resolutionStrategy.force 'com.android.support:support-annotations:25.4.0'


dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.4.0'

    compile 'com.google.firebase:firebase-config:11.0.1'

    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:1.0.0'
    compile 'com.android.support:multidex:1.0.1'


apply plugin: 'com.google.gms.google-services'

清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.samples.quickstart.config" >

    <application
        android:allowBackup="true"
        android:name="android.support.multidex.MultiDexApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

【问题讨论】:

【参考方案1】:

它适用于 Android Studio 3 Beta 5,但不适用于 Android Studio 3 和预览版 3.1

【讨论】:

【参考方案2】:

尝试清理并重建您的项目。然后在没有即时运行的情况下启动它。

【讨论】:

@SaiKiran 您是否将 casspath 'com.google.gms:google-services:3.1.0' 放入*** gradle 构建文件的依赖项中? 当我在 Android Studio 2 .x 中打开同一个项目时,我使用的是 Android Studio 3。【参考方案3】:

我通过先添加multidex 然后清理项目并重建它来解决这个问题。

【讨论】:

以上是关于Firebase 快速启动抛出 NoClassDefFoundError的主要内容,如果未能解决你的问题,请参考以下文章

Firebase - getToken() 抛出不受支持的 MIME 类型

Flutter:FireBase 抛出的 PlatformException 不会被捕获

firebase 导入服务抛出错误

如果 firebase 文档不存在则抛出错误

Xamarin Firebase iOS Analytics 抛出 AOT MTOUCH ERROR MT3001 - Firebase.Analytics.dll

数据未插入 Firebase 实时数据库抛出 Android