.ClassNotFoundException:在路径上找不到类“com.google.firebase.provider.FirebaseInitProvider”:DexPathList

Posted

技术标签:

【中文标题】.ClassNotFoundException:在路径上找不到类“com.google.firebase.provider.FirebaseInitProvider”:DexPathList【英文标题】:.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList 【发布时间】:2017-10-21 01:13:23 【问题描述】:

当我将我的应用程序分享给其他人时,我的应用程序崩溃了,但是当我直接从工作室运行我的应用程序时,应用程序运行正常,但我已经看到了所有解决方案,但对我没有任何效果。

java.lang.RuntimeException: 无法获取提供者 com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException:找不到类 路径上的“com.google.firebase.provider.FirebaseInitProvider”: DexPathList[[压缩文件 "/data/app/com.example.amit.workoutdocent-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.amit.workoutdocent-1/lib/arm, /vendor/lib, /system/lib]] 在 android.app.ActivityThread.installProvider(ActivityThread.java:6948) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:6540) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:6480) 在 android.app.ActivityThread.access$1800(ActivityThread.java:230) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1888) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:7409) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 引起:java.lang.ClassNotFoundException:找不到类 路径上的“com.google.firebase.provider.FirebaseInitProvider”: DexPathList[[压缩文件 "/data/app/com.example.amit.workoutdocent-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.amit.workoutdocent-1/lib/arm, /vendor/lib, /system/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:511) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在 android.app.ActivityThread.installProvider(ActivityThread.java:6933) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:6540) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:6480) 在 android.app.ActivityThread.access$1800(ActivityThread.java:230) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1888) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:7409) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

【问题讨论】:

【参考方案1】:

如果你的 minSdkVersion 设置为 20 或更低,那么你必须使用 multidex 支持库:

module-level.gradle ---

android 
defaultConfig 
    ...
    minSdkVersion 15 
    targetSdkVersion 26
    multiDexEnabled true

...


dependencies 
 compile 'com.android.support:multidex:1.0.1'

在你的应用程序类中

public class MyApplication extends SomeOtherApplication 
@Override
protected void attachBaseContext(Context base) 
 super.attachBaseContext(base);
 MultiDex.install(this);


【讨论】:

太棒了!我的MultiDex.install(this);onCreate(),移动到attachBaseContext(),应用就像魅力一样工作【参考方案2】:

在 build.gradle 文件中将我的 gradle 版本从 2.3.3 降低到 2.3.0,清理并构建项目。现在工作正常。

【讨论】:

【参考方案3】:

通过在 Android Studio 中禁用 Instant Run 来解决此问题

设置 → 构建、执行、部署 → 即时运行并取消选中启用即时运行

【讨论】:

【参考方案4】:

确保您的 build.gradle 中的 google play 服务和 Firebase 依赖项的版本相同。然后,在 Android Studio 中使用无效缓存和重启选项

【讨论】:

以上是关于.ClassNotFoundException:在路径上找不到类“com.google.firebase.provider.FirebaseInitProvider”:DexPathList的主要内容,如果未能解决你的问题,请参考以下文章

ClassNotFoundException:在路径上找不到类:DexPathList

在加载 Android 应用程序时获取 ClassNotFoundException

Xamarin 自定义视图 ClassNotFoundException

Eclipse 中的 JUNIT 测试类 - java.lang.ClassNotFoundException

在 Pax Exam 测试方法中使用匿名类时出现 ClassNotFoundException

Worklight 应用程序 ClassNotFoundException