将我们的开发和构建环境从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
。不知何故,这会改变行为,足以使构建通过。
答案 0 :(得分:5)
我遇到了同样的问题。如果项目中有多个模块,那么--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
}
答案 1 :(得分:4)
我怀疑gradle任务的顺序可能已关闭。在等待构建实际完成之前,Crashlytics似乎尝试上传APK。
添加gradle comandline标志:--max-workers=1
使构建一致通过。