【发布时间】:2019-03-06 08:29:59
【问题描述】:
我正在尝试将 Firebase Crashlytics 添加到一个新的 Android 应用(单个模块,没有风味)。由于 IDE 助手插件中缺少 Crashlytics,我正在使用来自 https://firebase.google.com/docs/crashlytics/get-started 的设置步骤:
- 添加 gradle 依赖项
- 下载 google-services.json 并放在 /app 根目录下
Crashlytics 仅针对发布构建进行初始化,如下所示:
class MyApplication: Application() {
fun onCreate() {
super.onCreate()
Fabric.with(
this,
Crashlytics.Builder()
.core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build()
)
}
}
问题#1:应用在初始化时崩溃
java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
添加
<meta-data
android:name="io.fabric.ApiKey"
android:value="{blah-blah-key}" />
到 AndroidManifest.xml 解决了这个问题(我在 firebase 控制台中看到了崩溃),但现在我得到了
问题 #2:运行单元测试 (gradle test) 失败并显示
> Task :app:fabricGenerateResourcesRelease FAILED
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics found an invalid API key: blah-blah-key
TL;DR - 如果清单中存在 Fabric api 密钥,则 gradle 无法运行单元测试,如果不存在,则应用程序在运行时崩溃。我怀疑我做错了什么,但不确定到底是什么:(
【问题讨论】:
-
您解决了吗?我有同样的错误
-
不:(我认为为调试和发布构建类型引入单独的应用程序类(仅在发布时使用 crashlytics 配置)应该可以解决问题,但我还没有尝试过
标签: android firebase crashlytics google-fabric