找不到类“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;