Fabric Debug Craslytic 报告:注册,缺少构建 ID,应用插件:io.fabric

Fabric Debug Craslytic Reports : Signup, build Id missing, apply plugin : io.fabric

我们正在编写一个 Android 应用程序,并尝试在我们的应用程序中实施 Crashlytics。

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

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

插件: Fabric for Android studio v4.3.0

实施: 实现('com.crashlytics.sdk.android:crashlytics:2.9.9'){传递=真} 实施('io.fabric.sdk.android:fabric:1.4.0@aar'){传递=真}

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

第一个问题:

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

错误 1:

此应用依赖于 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 Whosebug

并已完成实施。

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

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

第二个问题:

在gradle;应用插件:‘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 工作室 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.Enable 亚行

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

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

我们期待您的解决方案。

我在 gradle.properties.

中没有添加 android.debug.obsoleteApi=true 就设法解决了这个问题

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

与我的相比,你的 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 已准备就绪,因此不推荐使用此答案。
请检查 here 以便您可以成功更新您的应用并避免奇怪的行为。

我的应用程序 (Android Studio 3.4.1) 遇到了同样的问题

我修复了连接到 Fabric 插件的问题。创建一个帐户并将我的应用程序链接到它。

如果您为构建变体设置 ext.enableCrashlytics = false 但仍尝试在应用初始化代码中调用 Fabric.with(context, Crashlytics()),也会发生这种情况。 ext.enableCrashlytics = false 禁用构建插件(我为使调试构建速度更快而进行的优化)但是当然构建 ID 将丢失。

就我而言,我只是将 implementation 'com.google.firebase:firebase-core:16.0.9' 更新为 implementation 'com.google.firebase:firebase-core:17.0.1' 并将 apply plugin: 'io.fabric' 添加到我的应用级别 gradle。这为我解决了 错误 2

只需在您的 build.gradle(应用程序)

中设置 apply plugin: 'io.fabric'

今天我从 Fabric Crashlytics 迁移到 Firebase Crashlytics 并遇到了一个致命错误,该错误并没有让我继续前进。我所做的是: 在应用程序中-> build.gradle:

apply plugin: 'io.fabric'
dependencies {
 implementation "com.google.firebase:firebase-core:17.2.0"
// Add dependency
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
}

一般build.gradle:

buildscript {

repositories {

    maven {
        url 'https://maven.fabric.io/public'
    }
}
dependencies {
    classpath 'io.fabric.tools:gradle:1.31.2'  // Crashlytics plugin
}

当然还有从 Firebase 下载 json 文件并将其插入应用程序文件夹。

完成这些简单的步骤后,我在启动应用程序时收到此错误

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.

我去检查没有任何代码可以调用旧的 Fabric 方法,事实上我发现在 app-> build.gradle 我有这个:

buildTypes {

    debug {
        minifyEnabled false
        debuggable true
        **ext.enableCrashlytics = false**
        ext.alwaysUpdateBuildId = false
    }    
}

ext.enableCrashlytics = false 当然这是一种引用旧 Fabric 的方法,所以我删除了这一行并且一切正常!我希望能帮助别人

就我而言,我缺少 Crashlytics 插件:

apply plugin: 'com.google.firebase.crashlytics'

将该行放在模块 build.gradle 文件的顶部,例如

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'

就我而言,我有两个使用不同版本的 FireBase Crashlytics 的模块。

我在从 Fabric Crashlytics 迁移到 Firebase Crashlytics 时遇到了同样的问题,按照以下步骤解决了我的问题

  • Clean 你的项目
  • 更新google-services.json文件

如果您从 Fabric 迁移到 Firebase,请确保您已调用:

FirebaseApp.initializeApp(this)

在您的 Application onCreate().

不再需要与 Fabric 有任何关系,只需遵循以下指南:

https://firebase.google.com/docs/crashlytics/get-started?platform=android

就我而言,我错过了这一行:应用插件:'com.google.gms.google-services'

供参考,https://rnfirebase.io/crashlytics/android-setup

只需在您的 build.gradle(项目)中添加此行:

 classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'

你构建中的这个插件 Gradle (app):

apply plugin: 'com.google.firebase.crashlytics'

我在这里遇到了同样的问题,我通过将 Fabric 添加到 Gradle

来修复它

这是我的项目 Gradle 文件:

        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        maven { url 'https://maven.fabric.io/public' }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'io.fabric.tools:gradle:1.+'
        classpath 'com.google.gms:google-services:4.3.3'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }