返回

Flutter 构建错误:如何解决“Execution Failed for Task ':app:mapDebugSourceSetPaths'”

Android

在开发 Flutter 应用时,开发者经常会遇到各种构建错误。其中一个常见的问题是“Execution Failed for Task ':app:mapDebugSourceSetPaths'”。本文将详细分析此错误的常见原因,并提供一系列解决方案。

了解错误

这个错误通常出现在尝试映射 flatmap 提供者的任务值时,但任务尚未完成。在 Flutter 中,这通常是与 Google Play 服务库相关的任务,例如“processDebugGoogleServices”。

解决方案

1. 检查 Gradle 版本

确保你使用的是最新版本的 Gradle。检查 android/gradle/wrapper/gradle-wrapper.properties 文件中的 distributionUrl,并将其更新为最新版本(目前为 7.5)。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
2. 清理构建缓存

通过运行以下命令删除构建缓存:

./gradlew clean
3. 更新 Google Play 服务库

检查 app/build.gradle 文件中 com.google.gms:google-services 依赖项的版本,并更新至最新版本(4.4.1):

dependencies {
    classpath 'com.google.gms:google-services:4.4.1'
}
4. 禁用 Kotlin 协程

app/build.gradle 文件中禁用 Kotlin 协程,方法是在 kotlinOptions 块中设置 coroutines 为 “enable”:

kotlinOptions {
    jvmArgs = ["-Xuse-experimental=kotlin.ExperimentalUnsignedTypes"]
    coroutines = "enable"
}
5. 检查任务依赖关系

确认 android/build.gradle 文件中 subprojects {} 块中的任务依赖关系正确且无环。例如:

subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex')) {
                details.useVersion "26.1.0"
            }
        }
    }
}
6. 重新启动 IDE

关闭并重新启动你的集成开发环境(IDE),以刷新缓存并解决可能的缓存不一致问题。

7. 检查系统资源

确保你的系统具有足够的资源(内存和 CPU)来运行构建过程。如果资源不足,可能会导致构建失败。

8. 使用较旧的 Google Play 服务版本

如果其他解决方案无效,尝试使用较旧版本的 Google Play 服务库(例如 4.3.15):

dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
}
9. 提交问题

如果仍然无法解决问题,可以提交问题到 Flutter 问题跟踪器(Flutter Issue Tracker)。

常见问题解答

1. 为什么会在升级 Flutter 应用后遇到此错误?

升级可能会引入新的依赖项或更改构建过程,导致此错误。

2. 为什么禁用 Kotlin 协程可以解决问题?

在某些情况下,Kotlin 协程会导致此错误,禁用它们可以解决问题。

3. 如何确保任务依赖关系正确?

检查 subprojects {} 块中的任务依赖关系是否正确,并且没有循环依赖。

4. 为什么需要重新启动 IDE?

重新启动 IDE 可以刷新缓存并解决由于缓存不一致导致的问题。

5. 使用较旧的 Google Play 服务版本是否安全?

使用较旧的版本可能会导致兼容性问题,因此建议仅在其他解决方案无效时才使用此方法。

结论

“Execution Failed for Task ':app:mapDebugSourceSetPaths'”错误可以通过检查 Gradle 版本、清理构建缓存、更新 Google Play 服务库、禁用 Kotlin 协程、检查任务依赖关系和重新启动 IDE 来解决。如果这些方法都不成功,可以提交问题到 Flutter 问题跟踪器。希望这篇文章能帮助你顺利解决构建错误,继续高效地开发 Flutter 应用。