Отчеты Craslytic отладки Fabric: зарегистрируйтесь, Id сборки отсутствует, примените плагин: io.fabric

Мы программируем приложение для Android и пытаемся внедрить Crashlytics в наше приложение.

У нас проблемы разных типов. Версия, которую мы использовали: версия студии Android: 3.3

Версия Gradle: путь к классу 'com.android.tools.build:gradle:3.3.1'

Плагин: Fabric для Android studio v4.3.0

Реализация: реализация ('com.crashlytics.sdk.android:crashlytics:2.9.9') {transitive = true} реализация ('io.fabric.sdk.android:fabric:[email protected]') {transitive = 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 build configuration.
Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.

Поэтому мы отключили мод отладки, чтобы завершить реализацию 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. Мы хотим получить также отладочные моды, сбои.

Когда мы удаляем → ....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. Поэтому нам нужно прокомментировать "применить плагин: fabric.io". Нет хорошего решения по этому поводу.

Для запуска приложения мы не можем удалить:

new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build(): (из-за ошибки1 ошибка2)

Поэтому мы пытаемся включить отчет разными способами:

Что мы уже добавили?

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 не получают никаких отчетов об ошибках отладки? Мы ожидаем ваших решений.

Ответ 1

Мне удалось исправить это без добавления android.debug.obsoleteApi=true в gradle.properties.

Я в основном подключил 3 варианта к различным проектам Firebase используя правильную конфигурацию и предоставленный файл google-services.json.

То, что ваш файл 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

Это также происходит, если вы установили ext.enableCrashlytics = false для варианта сборки, но все еще пытаетесь вызвать Fabric.with(context, Crashlytics()) в коде инициализации вашего приложения. ext.enableCrashlytics = false отключает плагин сборки (оптимизацию, которую я сделал, чтобы ускорить сборку отладки), но тогда, конечно, идентификатор сборки будет отсутствовать.

Ответ 3

просто установите apply plugin: 'io.fabric' в вашем build.gradle (приложение)

Ответ 4

У меня была такая же проблема в моем приложении (Android Studio 3.4.1)

Я исправил корыто, соединяющееся с плагином Fabric. Создание аккаунта и привязка к нему моего приложения.

Ответ 5

В моем случае я просто обновляю implementation 'com.google.firebase:firebase-core:16.0.9' до implementation 'com.google.firebase:firebase-core:17.0.1' и добавил apply plugin: 'io.fabric' для мой уровень приложения gradle. Это решило ошибку 2 для меня.

Ответ 6

Сегодня я перешел с 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
}

И, конечно же, загрузите файл json из Firebase и вставьте его в папку приложения.

После выполнения этих простых шагов я получил эту ошибку при запуске приложения

Идентификатор сборки Crashlytics отсутствует. Это происходит, когда Crashlytics инструменты отсутствуют в конфигурации вашего приложения. Пожалуйста, просмотрите Crashlytics инструкции по установке и убедитесь, что у вас есть действительный Crashlytics аккаунт.

Я пошел, чтобы проверить, что не было никакого кода, который мог бы вызвать старые методы Fabric, и фактически я обнаружил, что в app-> build.gradle у меня было это:

buildTypes {

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

ext.enableCrashlytics = false конечно, это был метод, который ссылался на старую Fabric, поэтому я удалил эту строку, и все работало отлично! Я надеюсь помочь кому-то с этим