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

Posted

技术标签:

【中文标题】找不到类“com.google.firebase.provider.FirebaseInitProvider”【英文标题】:Didn't find class "com.google.firebase.provider.FirebaseInitProvider" 【发布时间】:2017-02-10 06:34:14 【问题描述】:

之前,我的程序运行良好。但是当我刚刚将我的 android 工作室更新到最新版本(2.2 年 16 月 15 日构建)时,我遇到了以下错误。当我构建它时,它说:构建成功,但是当我运行我的程序时出现此错误:

E/AndroidRuntime:致命异常:主进程:com.example.androidtutorial,PID:28293 java.lang.RuntimeException:无法获取提供者 com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException:找不到类 路径上的“com.google.firebase.provider.FirebaseInitProvider”: DexPathList[[压缩文件 "/data/app/com.example.androidtutorial-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.androidtutorial-2/lib/x86, /system/lib, /vendor/lib]] 在 android.app.ActivityThread.installProvider(ActivityThread.java:5814) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:5403) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342) 在 android.app.ActivityThread.-wrap2(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6077) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 引起:java.lang.ClassNotFoundException:找不到类 路径上的“com.google.firebase.provider.FirebaseInitProvider”: DexPathList[[压缩文件 "/data/app/com.example.androidtutorial-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.androidtutorial-2/lib/x86, /system/lib, /vendor/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:380) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 android.app.ActivityThread.installProvider(ActivityThread.java:5799) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:5403) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342) 在 android.app.ActivityThread.-wrap2(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6077) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

我已经看过其他问题,但问题不一样。 我究竟做错了什么?请帮忙

【问题讨论】:

检查即时运行启用,如果是,则禁用即时运行。 只要按照这个答案,我想它会解决你的问题***.com/a/44603205/6869491 【参考方案1】:

在应用模块build.gradle

android 
   ...
   defaultConfig 
      multiDexEnabled true
      ...
   


dependencies 
  // add dependency 
  compile 'com.android.support:multidex:1.0.1'

AndroidManifest.xml 中更改名称

<application
   ....
  android:name=".MyApplication">

 // ...
</application>

创建一个 MyApplication.java 文件

public class MyApplication extends Application 

    @Override
    protected void attachBaseContext(Context base) 
        super.attachBaseContext(base);
        MultiDex.install(this);
    


更多详情可以查看link。

【讨论】:

【参考方案2】:

您似乎对 Over 64K Methods 有问题,然后尝试在 build.gradle(应用程序模块)中使用 multiDexEnabled true 解决它。但是你需要添加更多:

    在 build.gradle 的依赖项中添加:compile 'com.android.support:multidex:1.0.0'

    将您的应用程序类扩展到 MultiDexApplication。并在Application类的onCreated方法中添加MultiDex.install(this);

您的问题应该得到解决

参考链接:https://developer.android.com/studio/build/multidex.html

【讨论】:

【参考方案3】:

这很有效,您可以在清单中添加多索引支持,当我遇到问题时,我会以这种方式修复超过 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>

【讨论】:

【参考方案4】:

如果您包含它,只需删除 google play 服务依赖项。每次使用它我都能修复这个错误。如果您使用的是谷歌地图或任何其他特定的谷歌服务,则仅包含该特定服务的依赖项。也尝试检查 google play 服务依赖的版本。

【讨论】:

【参考方案5】:

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>

【讨论】:

【参考方案6】:

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

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

2) 禁用 Firebase 插件

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

【讨论】:

【参考方案7】:

我遇到了同样的错误并使用以下方法解决了它:

    清理/重建您的项目。 重启 Android Studio。 更新所有 SDK 工具和 Android Studio。 清除缓存并清除设备上的数据。

【讨论】:

【参考方案8】:

在尝试所有这些解决方案后对我有用的一个简单解决方案是删除 project\app\build\ 下的 outputs 文件夹,然后重建项目将让它运行状态。

【讨论】:

【参考方案9】:

将以下行添加到 Manifest.xml

 <application
    android:name="android.support.multidex.MultiDexApplication"

添加这个 sn App 级 build.gradle 文件

 defaultConfig 
    multiDexEnabled true
 
      ......

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

【讨论】:

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

找不到 com.google.android.gms.internal.zzbgl 的类文件

错误:找不到 com.google.firebase:firebase-plugins:1.1.5

错误:找不到参数 [com.google.firebase:firebase-bom:29.0.1] 的方法平台()

找不到 com.google.firebase:firebase-analytics-ktx:。要求:项目:app

Flutter 错误:找不到符号导入 com.google.firebase.firestore.LoadBundleTaskProgress;

在我的 android studio 项目中找不到符号类 FirebaseInstanceId