Android Gradle插件更新到v2.3.0会破坏复制任务

时间:2017-03-07 10:28:32

标签: gradle android-gradle

我的Android build.gradle文件中有以下任务,它为我复制我构建的APK文件:

/**
 * Copies the final release APK into the project root folder.
 */
task copyRelease(type: Copy) {
    // define output files exactly to work around a file locking issue
    outputs.files.setFrom(file("../app-release.apk"))

    from "build/outputs/apk/app-release.apk"
    into ".."
}

这已经有很长一段时间了,今天在做Android Studio的建议更新时破了:

  • Android Gradle插件v2.3.0(来自v2.2.3)
  • Gradle v3.3(来自v2.14.1)

现在运行成绩构建会在outputs.files.setfrom(...)行上显示以下错误:

No signature of method: org.gradle.api.internal.tasks.DefaultTaskOutputs$TaskOutputUnionFileCollection.setFrom() is applicable for argument types: (java.io.File) values: [..\app-release.apk]
Possible solutions: sort()

总而言之,似乎TaskOutputUnionFileCollection.setFrom()不再需要File个参数。

但我不知道如何将此代码迁移到新版本,而look through the source class对我没有帮助。

我查看了Android Gradle plugin Known Issues page以及Gradle 3.3. Release Notes,但没有找到对此的直接引用。

1 个答案:

答案 0 :(得分:0)

我找不到直接&上述代码的精确翻译,无需实施变通方法。问题在于使用项目的根文件夹作为复制命令的目标。

解决方法是创建一个单独的文件夹histogram.o,然后以下代码正常工作:

histogram.cpp