【问题标题】:Task :app:uploadCrashlyticsMappingFileRelease FAILED Expected file collection to contain exactly one file, however, it contains no files任务 :app:uploadCrashlyticsMappingFileRelease FAILED 预期的文件集合只包含一个文件,但是,它不包含任何文件
【发布时间】:2020-09-10 10:44:19
【问题描述】:

我已经按照建议实现了Firebase crashlytics。我已经把它放在我的应用程序级别 release 构建变体中:

firebaseCrashlytics
  {
    mappingFileUploadEnabled true
  }

但是当我开始构建签名 apk 时,我总是收到此错误

任务:app:uploadCrashlyticsMappingFileRelease FAILED

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

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

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

如果我将mappingFileUploadEnabled 设置为false,则发布apk 构建成功。我进行了很多搜索,但找不到解决方法。有人可以帮忙吗?

【问题讨论】:

  • 这个问题好运吗?我也遇到了同样的问题。
  • 我也面临同样的问题。你有什么解决办法吗?除了将 mappingFileUploadEnabled 设置为 false。
  • 你的 android studio 版本是多少?
  • 我无法解决这个问题,我的 android studio 版本还没有更新到 4。
  • 在您的发布版本变体中,minifyEnabled 属性是否设置为 false?或者你有没有声明过?

标签: android firebase crashlytics-android


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果设置了 minify true,则会在构建时应用混淆并创建 mapping.txt。

    如果 minify 为 false,则在构建时不会混淆,也不会创建 mapping.txt。

    如果您在 minify false 状态下将 mappingFileUploadEnabled 设置为 true,即使在构建时未创建 mapping.txt,Firebase SDK 也会尝试将 mapping.txt 上传到 Firebase。 结果是一个错误。

    所以,如果设置minify false,则必须设置mappingFileUploadEnabled false,如果设置minify true,则需要设置mappingFileUploadEnabled true 或false(mappingFileUploadEnabled 为false 时,Firebase 上的crash log 被混淆了。它可能不会做太多感觉,因为它将以状态显示)。

    • 提示

    https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android#firebase-crashlytics-sdk_7

    https://developer.android.com/studio/build/shrink-code#enable

    【讨论】:

    • 当 minify 为 true 时,似乎不需要将 FileUploadEnabled 映射为 true (firebase.google.com/docs/crashlytics/…)
    • 对我来说,它只会在生成签名的 APK 时失败,所以我必须 disable the upload, entirely.,否则它会说“套接字已关闭”和“任务:app:uploadCrashlyticsMappingFileRelease FAILED”,我不不知道为什么。这只是一个临时解决方案,我不确定为什么套接字会关闭。这是在 Flutter 应用程序上。有趣的是,它会在重新启动后工作,直到我决定再次创建调试版本。
    【解决方案3】:

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

    问题解决了。

    【讨论】:

    • 好电话。不仅从页面底部到顶部,“com.google.gms.google-services”应该在“com.google.firebase.crashlytics”之上
    【解决方案4】:

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

    【讨论】:

    • 是的,这里也一样。在第一次尝试构建 APK 时,我的互联网连接速度很慢。所以在第二次尝试之后,它工作得很好。
    【解决方案5】:

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

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

    【讨论】:

    • 恭喜,实际上更改顺序解决了这个特定问题。发现任务“:app:uploadCrashlyticsMappingFileRelease”(类型“UploadMappingFileTask”)的配置存在问题。 > 没有为属性“googleServicesResourceRoot”指定值。
    【解决方案6】:

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

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

    【讨论】:

      【解决方案7】:

      降低以下版本

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

      到 2.6.0 解决了我的问题。

      【讨论】:

        【解决方案8】:

        就我而言,它根本没有添加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'
        

        出于某种原因,即使您使用flutterfire 生成了lib/firebase_options.dart,插件仍然需要您从Firebase 获得的google-services.json 文件。将该文件粘贴到android/app/ 目录中。它为发布而构建。

        【讨论】:

          猜你喜欢
          • 2020-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多