首页 > 解决方案 > Fabric Debug Craslytic 报告:注册,缺少构建 ID,应用插件:io.fabric

问题描述

我们已经编写了一个 Android 应用程序并尝试在我们的应用程序中实现 Crashlytics。

我们有不同类型的问题。 我们使用的版本:Android Studio 版本:3.3

Gradle 版本: 类路径 'com.android.tools.build:gradle:3.3.1'

插件: Fabric for Android studio v4.3.0

实现: implementation('com.crashlytics.sdk.android:crashlytics:2.9.9') { transitive = true } implementation('io.fabric.sdk.android:fabric:1.4.0@aar') { transitive = true }

gradle-wrapper.properties:distributionUrl=https://services.gradle.org/distributions/gradle-5.2.1-all.zip _

第一个问题:

当我们实施 Crashlytics 时,您知道开发人员有 3 个步骤。我们不能跳过 2,3.steps。因为我们还没有编译我们的应用程序。我们有两个主要错误:

错误一:

这个应用程序依赖于 Crashlytics。请在https://fabric.io/sign_up注册访问,

错误 2:

E/CrashlyticsCore: 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.

因此,我们必须禁用“Debug Mod”才能完成 Crashlytic 的实现。

Crashlytics crashlyticsKit = new Crashlytics.Builder()
        .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
        .build();

Fabric.with(this, crashlyticsKit);  // Tod from Fabric suggested in stackoverflow

并完成了实施。

但我们不想这样做。因为,当我们发生崩溃时,它不会向 Crashlytics 或 Firebase 报告任何内容。我们还希望调试 mod 的崩溃。

当我们删除 -> ....disabled(BuildConfig.DEBUG) - 它再次显示:错误 1,错误 2。

第二个问题:

在毕业;应用插件:'io.fabric',我们做了评论行,当我们删除评论行时,我们有以下错误:

错误 3:

WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been replaced with 'variant.getExternalNativeBuildProviders()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variant.getExternalNativeBuildTasks(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.
Affected Modules: app

当我们搜索它时,这个错误与新的 android studio gradle 有关。所以我们需要再次添加注释行“apply plugin: fabric.io”。

对此没有好的解决方案。

要运行应用程序,我们不能删除:

new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build(): (由于 Error1 Error2)

所以我们尝试以不同的方式启用报告:

在此之前我们尝试添加什么?

1. 在 gradle 中启用:

buildTypes {
    debug {
        manifestPlaceholders = [crashlyticsEnabled: true]
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [crashlyticsEnabled: false]

    }

2.在清单中启用

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="true" />

3.在亚行启用

  adb shell setprop log.tag.Fabric DEBUG
  adb shell setprop log.tag.CrashlyticsCore DEBUG

但是,Crashlytics 或 Firebase 仍然没有收到任何调试崩溃报告。

我们期待您的解决方案。

标签: androidfirebaseandroid-studiocrashlyticsgoogle-fabric

解决方案


我设法在不android.debug.obsoleteApi=true添加gradle.properties.

我基本上Firebase使用适当的风味配置和提供的google-services.json文件将 3 种风味连接到不同的项目。

与我的相比,您的 gradle 文件缺少的是:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath "com.google.gms:google-services:$google_services_version" // google-services plugin

    classpath "io.fabric.tools:gradle:$fabric_tools_version"

}


apply plugin: "io.fabric"

最后:implementation "com.google.firebase:firebase-crash:16.2.1"

我知道Fabric今年会关闭,但是通过以这种方式运行应用程序,它们可以Firebase毫无问题地连接到控制台。

关于flavor配置,我下载了三个不同的json文件(我有3个flavor),并添加到每个flavor的根目录下。例如:

flavor1:
assets
java
res
AndroidManifest
google-services.json (for flavor1)

flavor2:
assets
java
res
AndroidManifest
google-services.json (for flavor2)

就是这样。希望这可以帮助某人。

编辑
因此,正如你们可能已经知道的那样,Fabric正在关闭并Firebase Crashlytics准备就绪,因此不推荐使用此答案。
请检查此处,以便您可以成功更新您的应用程序并避免奇怪的行为。


推荐阅读