.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