FirebaseInitProvider:FirebaseApp 初始化不成功
Posted
技术标签:
【中文标题】FirebaseInitProvider:FirebaseApp 初始化不成功【英文标题】:FirebaseInitProvider: FirebaseApp initialization unsuccessful 【发布时间】:2016-09-16 05:53:41 【问题描述】:我们已关注Add Firebase to your android Project,但在 Firebase 控制台中看不到应用接收数据。 当我们启动应用程序时,日志显示:
FirebaseInitProvider: FirebaseApp initialization unsuccessful
这是什么意思?我们做错了什么? 我在文档中找不到此错误,在 *** 中也找不到。
【问题讨论】:
同样的问题。 Firebase 一直在应用旁边显示一个微调器,当您点击它时,分析和崩溃都会引发错误。从谷歌控制台导入的项目会发生这种情况,新项目似乎工作正常...... 我尝试在firebase中创建一个新项目,但问题仍然存在。 【参考方案1】:这是什么意思?我们做错了什么?
假设身份验证没有成功。
a) 项目级别的buildscript
repositories
和dependencies
build.gradle
:
buildscript
repositories
google()
jcenter()
dependencies
// Android Gradle Plugin
classpath "com.android.tools.build:gradle:3.3.2"
// Google Services Plugin
classpath "com.google.gms:google-services:4.2.0"
b) 模块级别的dependencies
app/build.gradle
(Android Intel x86 映像可能仍安装了以前版本的 Google Play 服务,例如,10.2.0
在当前的x86
模拟器,而例如11.8.0
在我的物理ARM
设备上运行)。引用 play-services
和 firebase-core
将包括它们的 所有 模块,除非不包括它们。 更新:现在必须单独引用所有库。引用 com.google.android.gms:play‐services
和 com.google.firebase:firebase-core
不再起作用,因为 15.0.0
。
android
...
buildTypes
debug
// suffixing the package name for debug builds,
// in order to partially mute the crash-reporting
// is an *optional* configuration (see below):
applicationIdSuffix ".debug"
dependencies
// Google Play Services
// https://developers.google.com/android/guides/releases
implementation "com.google.android.gms:play-services-base:15.0.1"
implementation "com.google.android.gms:play-services-auth:16.0.0"
implementation "com.google.android.gms:play-services-identity:15.0.1"
// Google Firebase
// https://firebase.google.com/support/release-notes/android
implementation "com.google.firebase:firebase-core:16.0.1"
implementation "com.google.firebase:firebase-auth:16.0.3"
implementation "com.google.firebase:firebase-config:16.0.0"
implementation "com.google.firebase:firebase-storage:16.0.1"
implementation "com.google.firebase:firebase-database:16.0.1"
implementation "com.google.firebase:firebase-messaging:17.3.0"
implementation "com.google.firebase:firebase-appindexing:16.0.1"
implementation "com.google.firebase:firebase-functions:16.1.0"
implementation "com.google.firebase:firebase-invites:16.0.1"
// implementation "com.google.firebase:firebase-crash:16.0.1"
implementation "com.google.firebase:firebase-ads:15.0.1"
implementation "com.google.firebase:firebase-firestore:17.0.4"
implementation "com.google.firebase:firebase-perf:16.0.0"
// the inapp messaging may cause dependency conflicts:
// implementation "com.google.firebase:firebase-inappmessaging:17.0.0"
// implementation "com.google.firebase:firebase-inappmessaging-display:17.0.0"
c) mobile/build.gradle
的底线应该是:
// apply the Google Services Plugin
apply plugin: "com.google.gms.google-services"
d) 确保在app/google-services.json
上提供(下载的)凭据;在 Firebase 控制台上,必须添加 both SHA1(或 SHA256)哈希,调试 和 发布密钥,以使两个构建都能正确验证;一旦全部匹配,它应该报告:
I/FirebaseInitProvider: FirebaseApp initialization successful
这一切都有据可查,只需查看Setup Google Play Services、Firebase Quickstart 或Crash Reporting;虽然我发现 Firebase 博客上的这篇文章非常有用:Organizing your Firebase-enabled Android app builds,因为它解释了如何部分静音崩溃报告。 release notes 总是宣布更新和更改。
【讨论】:
我想问一下为什么我们需要 classpath 'com.google.gms:google-services:3.0.0' 因为最新版本是:9.4.0? @Dharvikshah 因为只有一个com.google.gms:google-services:3.0.0
。一个打包为 Gradle 插件,另一个打包为库。 google-services
!= play-services
。上面还加了一些cmets。
这导致我的案例出现问题:“错误:任务':app:transformClassesWithDexForDebug'的执行失败。> com.android.build.api.transform.TransformException: com.android.ide.common .process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: 方法 ID 不在 [0, 0xffff]: 65536" 中。这是什么问题,我该如何解决?
@androiddeveloper 你可能会超过 64K dex 限制,multiDexEnabled true
应该会有所帮助 - 而在 Android > 5.0 上,这应该是默认设置。见developer.android.com/studio/build/multidex.html(这不是Firebase的问题)
@syslogic 不可能。这是一个非常小的项目。【参考方案2】:
当您的app/build.gradle
中没有apply plugin: 'com.google.gms.google-services'
时会发生这种情况。尝试添加它。
还要确保您在 Android SDK 管理器中安装了 Google Play 服务 SDK。
【讨论】:
【参考方案3】:我建议您检查的第一件事是:
1) 您是否已将 <uses-permission android:name="android.permission.INTERNET" />
包含在您的清单中?
【讨论】:
好一个!有时会发生【参考方案4】:确保您已将此行添加到 App 级别的 build.gradle
文件中
apply plugin: 'com.google.gms.google-services'
【讨论】:
【参考方案5】:我也遇到了类似的问题。我已将我的 Google 开发人员项目导入 Firebase,并按照 Android Studio 应用程序和 Firebase 控制台中的说明完成了所有步骤,即添加依赖项、google-services.json 文件并再次构建。
它仍然不会向 Firebase 控制台发送数据。因此,在通过 logcat 时,Firebase 无法初始化,因为 google_app_id 似乎丢失了。
经过反复试验,我不得不在我的res/values/strings.xml
文件中添加一个新的字符串资源。
<string name="google_app_id">YOUR_GOOGLE_APP_ID</string>
Google App ID 位于您从 Firebase 控制台下载的 google_services.json 文件中,标题为 mobilesdk_app_id
。
"client": [
"client_info":
"mobilesdk_app_id": "SOMETHING"
.
.
.
复制mobilesdk_app_id
并将其粘贴到res/values/strings.xml
文件中名为google_app_id
的字符串资源中。
重建代码,它应该可以工作。 :)
【讨论】:
【参考方案6】:整个问题的发生有两个原因:
1.您没有在 mainfest 中获得许可
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
[在此处输入图片描述][1]
2。您的 gradle 构建版本有错误- 项目级依赖
classpath 'com.google.gms:google-services:4.1.0'
替换为
classpath 'com.google.gms:google-services:4.0.1'
【讨论】:
【参考方案7】:就我而言,我在 Gradle 中做的所有事情都是正确的。即使它显示FirebaseApp initialization unsuccessful
我在清单中添加了com.google.android.c2dm.permission.RECEIVE permission
,这解决了我的问题。
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
【讨论】:
【参考方案8】:就我而言,我试图选择性地编译 Google Play 服务。 而不是使用
compile 'com.google.android.gms:play-services:9.4.0'
如所述:https://developers.google.com/android/guides/setup#ensure_devices_have_the_google_play_services_apk
我从 Google Play 服务中手动添加了地图和其他一些依赖模块
compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-places:9.4.0'
不幸的是,Firebase 在此之后停止工作。
结果我不得不回滚并返回使用
compile 'com.google.android.gms:play-services:9.4.0'
而不是选择性地。
【讨论】:
【参考方案9】:我得到了相同的 Logcat 输出。
通过在我的 app/build.gradle 中将我的 Google Play Services
依赖项更新为 9.0.0 来修复它
和更新
buildScript
//...
dependencies
//...
classpath 'com.google.gms:google-services:3.0.0'
在我的项目 build.gradle 到 3.0.0
【讨论】:
【参考方案10】:在build.gradle(项目级别)
改变
classpath 'com.google.gms:google-services:4.1.0'
到这里
classpath 'com.google.gms:google-services:4.0.1'
【讨论】:
以上是关于FirebaseInitProvider:FirebaseApp 初始化不成功的主要内容,如果未能解决你的问题,请参考以下文章
在 android 中找不到 FirebaseInitProvider
没有找到“com.google.firebase.provider.FirebaseInitProvider”类?
找不到类“com.google.firebase.provider.FirebaseInitProvider”
“无法获取提供程序 com.google.firebase.provider.FirebaseInitProvider”错误路径 Android
.ClassNotFoundException:在路径上找不到类“com.google.firebase.provider.FirebaseInitProvider”:DexPathList
没有找到类“com.google.firebase.provider.FirebaseInitProvider,在使用工作室构建从 Eclipse 升级 apk 时