我们已经对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报告吗?我们期待您的解决方案。
答案 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)
答案 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
}