Отчеты 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, поэтому я удалил эту строку, и все работало отлично! Я надеюсь помочь кому-то с этим