找不到类“com.google.firebase.provider.FirebaseInitProvider”。

11
之前,我的程序很好运行。但是当我刚刚更新了Android Studio到最新版本(2.2构建在2016年9月15日),我遇到了以下错误。当我构建它时,它说:已成功构建,但是当我运行程序时出现以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.androidtutorial, PID: 28293 java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.example.androidtutorial-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.androidtutorial-2/lib/x86, /system/lib, /vendor/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:5814) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5403) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.example.androidtutorial-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.androidtutorial-2/lib/x86, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.ActivityThread.installProvider(ActivityThread.java:5799) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5403)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342)  at android.app.ActivityThread.-wrap2(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6077)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

我已经查看了其他问题,但问题并不相同。 我做错了什么?请帮忙。


检查即时运行是否启用,如果是,则禁用即时运行。 - Prathap Badavath
只需按照这个答案,我认为它会解决你的问题 https://stackoverflow.com/a/44603205/6869491 - Amit Verma
8个回答

10
看起来您在使用超过64K个方法时遇到了问题,并尝试使用build.gradle(应用程序模块)中的multiDexEnabled true进行解决。但您需要添加更多内容:
  1. 在build.gradle的依赖项中添加:compile 'com.android.support:multidex:1.0.0'

  2. 将您的Application类扩展为MultiDexApplication,并在Application类的onCreated方法中添加MultiDex.install(this);

这样,您的问题就应该得到解决了。
参考链接:https://developer.android.com/studio/build/multidex.html

2

如果你要包含Google Play服务,请删除它的依赖项。我能够每次使用此方法来解决这个错误。如果您正在使用Google Maps或任何其他特定的Google服务,则只包括该特定服务的依赖项。另外,请尝试检查Google Play服务依赖项的版本。


2

app=>build.gradle

android {
.....
defaultConfig {
......
 multiDexEnabled true//add this line
}
......
dependencies{
 compile 'com.android.support:multidex:1.0.1'//add this line
}

在清单文件中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
....
<application
....
 android:name="android.support.multidex.MultiDexApplication" 
...>
 <activity   />
...

</application>

</manifest>

2
这个方法很好,只要在清单文件中添加multidex支持,每当我遇到问题时,就可以用这种方式解决,而且还能处理超过64K的情况。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

0

我遇到了同样的错误,并通过以下方式解决:

  1. 清理/重建项目。
  2. 重新启动Android Studio。
  3. 更新所有SDK工具和Android Studio。
  4. 清除设备上的缓存和数据。

0

我遇到了同样的错误。我通过以下方式解决了它:

1)在build.gradle中删除不必要的包。

2)禁用Firebase插件

3)将构建工具升级到最新版本


0
一个对我有效的简单解决方案是删除project\app\build\下的outputs文件夹,然后重新构建项目即可让它运行。

0
请在Manifest.xml文件中添加以下行:
 <application
    android:name="android.support.multidex.MultiDexApplication"

将以下内容添加到应用级别的 build.gradle 文件中

 defaultConfig {
    multiDexEnabled true
} 
      ......

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接