android - Fabric Debug Craslytic 报告:注册,缺少构建 ID,应用插件:io.fabric
问题描述
我们已经编写了一个 Android 应用程序并尝试在我们的应用程序中实现 Crashlytics。
我们有不同类型的问题。 我们使用的版本:Android Studio 版本:3.3
Gradle 版本: 类路径 'com.android.tools.build:gradle:3.3.1'
插件: Fabric for Android studio v4.3.0
实现: implementation('com.crashlytics.sdk.android:crashlytics:2.9.9') { transitive = true } implementation('io.fabric.sdk.android:fabric:1.4.0@aar') { transitive = true }
gradle-wrapper.properties:distributionUrl=https://services.gradle.org/distributions/gradle-5.2.1-all.zip _
第一个问题:
当我们实施 Crashlytics 时,您知道开发人员有 3 个步骤。我们不能跳过 2,3.steps。因为我们还没有编译我们的应用程序。我们有两个主要错误:
错误一:
这个应用程序依赖于 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。
第二个问题:
在毕业;应用插件:'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 有关。所以我们需要再次添加注释行“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.在亚行启用
adb shell setprop log.tag.Fabric DEBUG
adb shell setprop log.tag.CrashlyticsCore DEBUG
但是,Crashlytics 或 Firebase 仍然没有收到任何调试崩溃报告。
我们期待您的解决方案。
解决方案
我设法在不android.debug.obsoleteApi=true
添加gradle.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"
}
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
准备就绪,因此不推荐使用此答案。
请检查此处,以便您可以成功更新您的应用程序并避免奇怪的行为。
推荐阅读
- python - Python PrettyTable 添加 ljust
- r - 数据操作 - 基础
- javascript - 当样式设置为 object-fit:cover 时,从 VIDEO 元素获取画布
- r - R:根据变量应用不同的过滤器
- node.js - 未在 mongodb 指南针中显示数据库
- c++ - 为什么我的代码中没有调用移动构造函数?另外为什么不调用 dtor 只是为了破坏 temp obj?
- memory - 有没有办法强制分配堆栈变量对齐
- python - 如何在 python 程序中进行网页抓取时重定向到不同的网页?
- perl - 由于缺少 perl 模块,在 Windows 10 上使用 LaTeX Workshop 在 VSCode 上格式化文档时出错
- mongodb - 图像 blob,未定义存储 - Vue 和 mongo