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

Mel*_*e D 13 android firebase crashlytics android-studio google-fabric

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

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

Gradle版本: classpath'com.android.tools.build:gradle : 3.3.1'

插件: Android Studio v4.3.0的Fabric

实现: 实现('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。步骤,因为我们没有编译我们的应用程序。我们得到两个主要错误:

错误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.
Run Code Online (Sandbox Code Playgroud)

因此,我们禁用了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
Run Code Online (Sandbox Code Playgroud)

并实现完成。

但是我们不想这样做。因为当我们崩溃时,它不会向Crashlytics或Firebase报告。我们还希望获得调试mod的崩溃信息。

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

第二个问题:

摇摇欲坠; Apply插件:'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
Run Code Online (Sandbox Code Playgroud)

当我们搜索它时,此错误与新的android studio gradle有关。因此,我们需要评论“应用插件: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]

    }
Run Code Online (Sandbox Code Playgroud)

2.在清单中启用

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="true" />
Run Code Online (Sandbox Code Playgroud)

3.在亚行启用

  adb shell setprop log.tag.Fabric DEBUG
  adb shell setprop log.tag.CrashlyticsCore DEBUG
Run Code Online (Sandbox Code Playgroud)

但是Crashlytics或Firebase仍然没有得到任何Debug Crash报告吗?我们期待您的解决方案。

Ale*_*Pad 18

今天,我从 Fabric Crashlytics 迁移到 Firebase Crashlytics,但遇到了一个让我无法继续前进的致命错误。我所做的是:在 app-> 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'
}
Run Code Online (Sandbox Code Playgroud)

一般来说,build.gradle:

buildscript {

repositories {

    maven {
        url 'https://maven.fabric.io/public'
    }
}
dependencies {
    classpath 'io.fabric.tools:gradle:1.31.2'  // Crashlytics plugin
}
Run Code Online (Sandbox Code Playgroud)

当然,从 Firebase 下载 json 文件并将其插入到 app 文件夹中。

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

缺少 Crashlytics 构建 ID。当您的应用程序的构建配置中缺少 Crashlytics 工具时,就会发生这种情况。请查看 Crashlytics 入门说明并确保您拥有有效的 Crashlytics 帐户。

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

buildTypes {

    debug {
        minifyEnabled false
        debuggable true
        **ext.enableCrashlytics = false**
        ext.alwaysUpdateBuildId = false
    }    
}
Run Code Online (Sandbox Code Playgroud)

ext.enableCrashlytics = false当然这是一种引用旧 Fabric 的方法,所以我删除了这一行,一切都完美无缺!我希望能帮助别人解决这个问题


tom*_*ozb 10

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

apply plugin: 'com.google.firebase.crashlytics'
Run Code Online (Sandbox Code Playgroud)

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

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'
Run Code Online (Sandbox Code Playgroud)


pam*_*609 9

我设法得到这个固定无需添加android.debug.obsoleteApi=truegradle.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"

}
Run Code Online (Sandbox Code Playgroud)


apply plugin: "io.fabric"

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

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

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

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

flavor2:
assets
java
res
AndroidManifest
google-services.json (for flavor2)
Run Code Online (Sandbox Code Playgroud)

就是这样。希望这对某人有帮助。


Fab*_*tel 8

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


san*_*adi 5

只需apply plugin: 'io.fabric'在ur build.gradle中设置(应用)