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

时间:2019-02-15 10:02:49

标签: android firebase android-studio crashlytics google-fabric

我们已经对Android应用进行了编程,并尝试对我们的应用实施Crashlytics。

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

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

插件: Android Studio v4.3.0的结构

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

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.

因此,我们禁用了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。

第二个问题:

在gradle中; 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

当我们搜索它时,此错误与新的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]

    }

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仍然没有得到任何Debug Crash报告吗?我们期待您的解决方案。

13 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:6)

我设法解决了这个问题,而没有在android.debug.obsoleteApi=true中添加gradle.properties

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

与我的gradle文件相比,您的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控制台。

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

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

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

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

答案 2 :(得分:5)

只需在您的build.gradle(应用程序)中设置// Runner to grab data from all the functions that affect SiB contact fields function sendinblue_runner($data) { global $wpdb; $table = "imp_customer_log"; $wpdb->insert( $table, $data ); }

答案 3 :(得分:4)

今天,我从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'
}

一般build.gradle:

buildscript {

repositories {

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

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

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

  

Crashlytics内部版本ID丢失。当Crashlytics发生这种情况   应用的构建配置中缺少工具。请查阅   Crashlytics入门指南,并确保您有效   Crashlytics帐户。

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

buildTypes {

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

ext.enableCrashlytics = false 当然,这是一种引用旧Fabric的方法,因此我删除了此行,一切正常!我希望可以帮助某人

答案 4 :(得分:2)

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

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

答案 5 :(得分:2)

只需将这一行添加到您的build.gradle(项目)中即可:

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

以及此插件在您的构建Gradle(应用程序)中:

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

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

我修复了与Fabric插件相关的槽。创建一个帐户并将我的应用程序链接到它。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

如果您从 Fabric 迁移到 Firebase ,请确保已致电:

FirebaseApp.initializeApp(this)

在您的 Application onCreate()

不再需要与织物有任何关系,只需遵循以下指导即可:

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

答案 11 :(得分:0)

就我而言,我错过了这一行:apply plugin:'com.google.gms.google-services' Apply the Firebase Crashlytics Plugin to your app

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

答案 12 :(得分:0)

我在这里遇到了同样的问题,我通过将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
    }