Fabric Debug Craslytic 报告:注册,缺少构建 ID,应用插件:io.fabric
Posted
技术标签:
【中文标题】Fabric Debug Craslytic 报告:注册,缺少构建 ID,应用插件:io.fabric【英文标题】:Fabric Debug Craslytic Reports : Signup, build Id missing, apply plugin : io.fabric 【发布时间】:2019-07-09 10:48:48 【问题描述】:我们正在编写一个 android 应用程序并尝试在我们的应用程序中实现 Crashlytics。
我们有不同类型的问题。 我们使用的版本: 安卓工作室版本: 3.3
Gradle 版本: 类路径'com.android.tools.build:gradle:3.3.1'
插件: Fabric for Android studio v4.3.0
实施: 实现('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.steps。因为我们还没有编译我们的应用程序。我们有两个主要错误:
错误 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.
因此,我们必须禁用“调试模块”才能完成 Crashlytic 的实施。
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit); // Tod from Fabric suggested in ***
实施完毕。
但我们不想这样做。因为,当我们发生崩溃时,它不会向 Crashlytics 或 Firebase 报告任何内容。我们还希望调试 mod 的崩溃。
当我们删除 -> ....disabled(BuildConfig.DEBUG)
- 它再次显示:错误 1,错误 2。
第二个问题:
在 gradle 中;应用插件:'io.fabric',我们做了注释行,当我们删除 cmets 行时,我们有以下错误:
错误 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 中启用
adb shell setprop log.tag.Fabric DEBUG
adb shell setprop log.tag.CrashlyticsCore DEBUG
但是,Crashlytics 或 Firebase 仍然没有收到任何调试崩溃报告。
我们期待您的解决方案。
【问题讨论】:
我遇到了类似的问题。你的应用有几种风格吗? 我们通过将 android.debug.obsoleteApi=true 添加到 gradle.properties 来解决。面料需要开发新的gradle。他们有错误。这将允许所有旧方法和变量。当 fabric 更新它时,不要忘记将其删除。 我设法在没有添加您建议的情况下修复它。我会解释几个作为答案。 为什么要为调试版本指定 Proguard? 【参考方案1】:我设法解决了这个问题,而无需在 gradle.properties
中添加 android.debug.obsoleteApi=true
。
我基本上使用适当的风味配置和提供的 google-services.json
文件将 3 种风味连接到不同的 Firebase
项目。
与我的相比,您的 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
已准备就绪,因此不推荐使用此答案。
请检查here,以便您可以成功更新您的应用程序并避免奇怪的行为。
【讨论】:
其实我认为fabric解决了这个错误。我们从代码中删除了 obsolete=true 。同样对于不同的口味,您不需要添加分隔的 google-services.json。您可以将所有这些合并到一个 google-service.json 文件中【参考方案2】:如果您为构建变体设置了ext.enableCrashlytics = false
,但仍尝试在应用初始化代码中调用Fabric.with(context, Crashlytics())
,也会发生这种情况。 ext.enableCrashlytics = false
禁用构建插件(我为使调试构建更快而进行的优化),但是构建 ID 当然会丢失。
【讨论】:
【参考方案3】:今天,我从 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 文件并将其插入到 app 文件夹中。
完成这些简单步骤后,我在启动应用程序时收到此错误
缺少 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 的方法,所以我删除了这行,一切正常!我希望能帮助别人解决这个问题
【讨论】:
谢谢!工作。 这行ext.enableCrashlytics = false
是加速本地调试构建所必需的......
是的,可能,但在这种情况下,它属于旧结构,迁移后会出现问题。他们可能不再有这种方法了。【参考方案4】:
只需在你的 build.gradle (app) 中设置 apply plugin: 'io.fabric'
【讨论】:
【参考方案5】:就我而言,我缺少 Crashlytics 插件:
apply plugin: 'com.google.firebase.crashlytics'
将该行放在模块的 build.gradle
文件的顶部,例如
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'
【讨论】:
【参考方案6】:只需在您的 build.gradle(项目)中添加这一行:
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'
以及您构建 Gradle(应用程序)中的这个插件:
apply plugin: 'com.google.firebase.crashlytics'
【讨论】:
【参考方案7】:我的应用 (Android Studio 3.4.1) 中遇到了同样的问题
我修复了连接到 Fabric 插件的槽。创建一个帐户并将我的应用程序链接到它。
【讨论】:
【参考方案8】:就我而言,我只是将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】:我在从 Fabric Crashlytics 迁移到 Firebase Crashlytics 时遇到了同样的问题,以下步骤为我解决了这个问题
Clean
你的项目
更新google-services.json
文件
【讨论】:
【参考方案10】:如果您从 Fabric 迁移到 Firebase,请确保您已致电:
FirebaseApp.initializeApp(this)
在您的应用程序中onCreate()。
不再需要与 Fabric 有任何关系,只需遵循以下指导即可:
https://firebase.google.com/docs/crashlytics/get-started?platform=android
【讨论】:
不再需要显式初始化 Crashlytics【参考方案11】:就我而言,我有两个使用不同版本的 FireBase Crashlytics 的模块。
【讨论】:
【参考方案12】:就我而言,我错过了这一行:apply plugin: 'com.google.gms.google-services'
供参考,https://rnfirebase.io/crashlytics/android-setup
【讨论】:
【参考方案13】:我在这里遇到了同样的问题,我通过将 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
【讨论】:
以上是关于Fabric Debug Craslytic 报告:注册,缺少构建 ID,应用插件:io.fabric的主要内容,如果未能解决你的问题,请参考以下文章
Crashlytics 没有向我的 Fabric 仪表板发送崩溃报告?
Crashlytics 没有向我的 Fabric 仪表板发送崩溃报告?
iOS Firebase + Fabric Beta Crashylitics 未报告问题
Crashlytics vs Fabric vs Firebase 崩溃报告——我迷路了
崩溃报告未进入 Crashlytics / fabric。显示警告:“看起来我们缺少 dSYM 来处理以下版本的崩溃。”