任务 :app:uploadCrashlyticsMappingFileRelease FAILED 预期文件集合仅包含一个文件,但是,它不包含任何文件

问题描述 投票:0回答:12

我已按照建议实施了

Firebase
crashlytics
。我已将其放入我的应用程序级别
release
构建变体:

firebaseCrashlytics
  {
    mappingFileUploadEnabled true
  }

但是当我开始构建签名时

apk
我总是收到此错误

任务:app:uploadCrashlyticsMappingFileRelease失败

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务“:app:uploadCrashlyticsMappingFileRelease”执行失败。

预期文件集合仅包含一个文件,但是,它不包含任何文件。

如果我将

mappingFileUploadEnabled
设置为
false
然后释放
apk
构建成功。我进行了很多搜索,但找不到解决方法。有人可以帮忙吗?

android firebase crashlytics-android
12个回答
55
投票

错误:“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'

30
投票

我今天也遇到了同样的情况。发生这种情况的原因如下。

如果设置了 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


13
投票

就我而言,我收到错误是因为我没有连接到互联网。通过连接到互联网修复了这个问题,我的构建版本非常适合我的 Flutter 应用程序。


10
投票

我通过在构建 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'

问题已解决。


8
投票

只需更改crashlytics的顺序,应用如下插件:

// Put Google Service
apply plugin: 'com.google.gms.google-services'
// After that the Firebase Crashlytics plugin.
apply plugin: 'com.google.firebase.crashlytics'

3
投票

减少以下版本

classpath "com.google.firebase:firebase-crashlytics-gradle:2.8.0"

到2.6.0解决了我的问题。


2
投票

就我而言,它根本没有添加

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/
目录中。它是为了发布而构建的。


1
投票

将其添加到 build.gradle 文件的底部

apply plugin: 'com.google.gms.google-services'

0
投票

我已经遇到过好几次了,我有不同的解决方案。

首先: 您需要打开该项目的 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

0
投票

如果您正在使用 GuardSquare 的 Dexguard 解决方案。你的插件的顺序应该是,

plugins {
    // Google Services Plugin
    id 'com.google.gms.google-services'
    // Firebase Crashlytics Plugin.
    id 'com.google.firebase.crashlytics'
    // Dexguard Plugin
    id 'dexguard'
}

这样您的映射文件的上传过程就会成功。


0
投票

gradle-wrapper.properties 添加以下块为我解决了问题。注意:这些属性不应该添加到项目级别的gradle.properties

systemProp.http.proxyHost=
systemProp.http.proxyPort=80
systemProp.https.proxyHost=
systemProp.https.proxyPort=80

0
投票

对我来说,Charles Proxy 在后台运行。模拟器的互联网运行良好,但构建发布版本会引发该错误。 关闭 Charles 还不够,我必须关闭 Charles,然后重新启动 Android Studio,这解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.