在发布版本完成之前,Gradle 4.1会进行崩溃上传

Die*_*rik 6 android crashlytics android-gradle-plugin

将我们的开发和构建环境从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
Run Code Online (Sandbox Code Playgroud)

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

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

gradlew.bat assembleFlavour1NameRelease assembleFlavour2NameRelease appname:crashlyticsUploadDistributionFlavour1NameRelease reptile:crashlyticsUploadDistributionFlavour1NameRelease --stacktrace
Run Code Online (Sandbox Code Playgroud)

一切正常.

最后,我已经将不良行为追溯到git clean运行构建命令之前运行的行为.不知何故,这会改变行为,使构建通过或不通过.

c0n*_*nst 8

我遇到了同样的问题.--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
}
Run Code Online (Sandbox Code Playgroud)


Die*_*rik 5

我怀疑gradle任务的顺序可能已关闭。Crashlytics似乎在等待构建真正完成之前尝试上传APK。

添加gradle comandline标志:--max-workers=1使构建一致通过。