android - Gradle 4.1 在发布构建完成之前进行 crashlytics 上传

标签 android android-gradle-plugin crashlytics

将我们的开发和构建环境从 Android studio 2 升级到 3(目前在 gradle 4.1 上),我们在运行 Crashlytics APK 分发上传任务时遇到了一个奇怪的问题。它试图过早上传 APK。在我们构建的 60 年代左右,它失败了:

Uploading D:\GitRunner\path\to\release\appname-flavour1name-release.apk to Crashlytics...
 WARN - Crashlytics halted compilation because it can't find the specified file: D:\GitRunner\path\to\release\appname-flavour1name-release.apk
:appname:crashlyticsUploadDistributionFlavournameRelease FAILED

(正常构建时间约为 7 分钟。)我仔细检查了 APK 的输出路径,一切似乎都是正确的。

有趣的是,当远程访问 Windows 构建机器并运行我们的 CI 手动运行的构建命令时:

gradlew.bat assembleFlavour1NameRelease assembleFlavour2NameRelease appname:crashlyticsUploadDistributionFlavour1NameRelease reptile:crashlyticsUploadDistributionFlavour1NameRelease --stacktrace

一切正常

最终,我将不良行为追溯到在构建命令运行之前运行的 git clean。这会以某种方式改变行为,足以使构建通过或不通过。

最佳答案

我遇到过同样的问题。如果您的项目中有多个模块,则带有 --max-workers=1 的解决方案将大大减慢您的构建时间。

您可以通过在 build.gradle 文件中手动设置 crashlyticsUploadDistribution 任务的顺序来解决此问题:

tasks.whenTaskAdded { task ->
    if (task.name == "crashlyticsUploadDistributionDebug") {
        task.dependsOn assembleDebug
    }
    if (task.name == "crashlyticsUploadDistributionRelease") {
        task.dependsOn assembleRelease
    }
}

afterEvaluate {
    crashlyticsUploadDistributionDebug.dependsOn assembleDebug
    crashlyticsUploadDistributionRelease.dependsOn assembleRelease
}

关于android - Gradle 4.1 在发布构建完成之前进行 crashlytics 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48638012/

相关文章:

java - JSONException : Value <? java.lang.String 类型的 xml 无法转换为 JSONObject

Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK

java - 如何在Java/Android中发送没有任何参数的POST请求?

firebase - Firebase 是否会影响生产应用程序的性能

android - 使用 FileProvider 在 Android 用户之间共享文件

java - 无法使用 Android Gradle 插件 2.1 生成 View 绑定(bind)程序 java.util.NoSuchElementException

android - 如何使用 Gradle/Android Studio 中外部库项目的代码修改来更新导入的模块

java - Gradle 同步失败 : com. google.android.gms :play-services-basement and com. google.firebase:firebase-common

ios - 有关 crashlytics 的步骤

android - 是否可以使用 2 个 Crashlytics API key ?