我已按照建议实施了
Firebase
crashlytics
。我已将其放入我的应用程序级别release
构建变体:
firebaseCrashlytics
{
mappingFileUploadEnabled true
}
但是当我开始构建签名时
apk
我总是收到此错误
任务:app:uploadCrashlyticsMappingFileRelease失败
FAILURE:构建失败并出现异常。
预期文件集合仅包含一个文件,但是,它不包含任何文件。
如果我将
mappingFileUploadEnabled
设置为 false
然后释放 apk
构建成功。我进行了很多搜索,但找不到解决方法。有人可以帮忙吗?
错误:“Crashlytics 找不到 Google 服务插件任务:processReleaseGoogleServices。请确保在 com.google.firebase.crashlytics 之前应用 com.google.gms.google-services。如果您不使用 Google 服务插件,则必须明确为 Crashlytics 上传任务声明 googleServicesResourceRoot 输入。”
我在 build.gradle 中有类似的东西
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.gms.google-services'
将其更改为这个,瞧!它有效:
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
我今天也遇到了同样的情况。发生这种情况的原因如下。
如果设置了 minify true,则将在构建时应用混淆并创建mapping.txt。
如果 minify false,则在构建时不会对其进行混淆,并且不会创建mapping.txt。
如果您在 minify false 状态下将mappingFileUploadEnabled 设置为 true,Firebase SDK 将尝试将mapping.txt 上传到Firebase,即使mapping.txt 不是在构建时创建的。 结果出错了。
所以,如果你设置 minify false,你必须设置mappingFileUploadEnabled false,如果你设置minify true,你需要设置mappingFileUploadEnabled true或false(当mappingFileUploadEnabled false时,Firebase上的崩溃日志被混淆。这可能没有多大意义,因为它将显示在状态中)。
https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android#firebase-crashlytics-sdk_7
https://developer.android.com/studio/build/shrink-code#enable
就我而言,我收到错误是因为我没有连接到互联网。通过连接到互联网修复了这个问题,我的构建版本非常适合我的 Flutter 应用程序。
我通过在构建 gradle 中将以下行从页面底部移动到顶部解决了这个问题。
之前的设置:
apply plugin: 'com.google.gms.google-services'
新设置:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
问题已解决。
只需更改crashlytics的顺序,应用如下插件:
// Put Google Service
apply plugin: 'com.google.gms.google-services'
// After that the Firebase Crashlytics plugin.
apply plugin: 'com.google.firebase.crashlytics'
减少以下版本
classpath "com.google.firebase:firebase-crashlytics-gradle:2.8.0"
到2.6.0解决了我的问题。
就我而言,它根本没有添加
com.google.gms:google-services
。该项目在 Flutter 中,Flutter Firebase 文档中没有提及这一点。
将这些添加到
android/build.gradle
(在互联网上查看最新版本):
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
将这些添加到android/app/build.gradle
的
末尾:
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
由于某种原因,即使您使用
lib/firebase_options.dart
生成了 flutterfire
,该插件仍然需要您从 Firebase 获得的 google-services.json
文件。将该文件粘贴到 android/app/
目录中。它是为了发布而构建的。
将其添加到 build.gradle 文件的底部
apply plugin: 'com.google.gms.google-services'
我已经遇到过好几次了,我有不同的解决方案。
首先: 您需要打开该项目的 android 模块。
Flutter -> Open Android module in Android Studio.
然后转到 Gradle Scripts,找到 gradle.properties(全局属性)并删除此代码
systemProp.http.proxyHost=
systemProp.https.proxyHost=
systemProp.https.proxyPort=80
systemProp.http.proxyPort=80
如果您正在使用 GuardSquare 的 Dexguard 解决方案。你的插件的顺序应该是,
plugins {
// Google Services Plugin
id 'com.google.gms.google-services'
// Firebase Crashlytics Plugin.
id 'com.google.firebase.crashlytics'
// Dexguard Plugin
id 'dexguard'
}
这样您的映射文件的上传过程就会成功。
在 gradle-wrapper.properties 添加以下块为我解决了问题。注意:这些属性不应该添加到项目级别的gradle.properties
systemProp.http.proxyHost=
systemProp.http.proxyPort=80
systemProp.https.proxyHost=
systemProp.https.proxyPort=80
对我来说,Charles Proxy 在后台运行。模拟器的互联网运行良好,但构建发布版本会引发该错误。 关闭 Charles 还不够,我必须关闭 Charles,然后重新启动 Android Studio,这解决了问题。