【问题标题】:How can my Gradle plugin define a task depending on a task of AGP 7.0.0?我的 Gradle 插件如何根据 AGP 7.0.0 的任务定义任务?
【发布时间】:2021-08-04 19:39:04
【问题描述】:

我已经编写了一个基于 Android Gradle 插件的 Gradle 插件:对于每个变体,该插件定义了一个任务 generatevariantStuff 生成一个资产,我需要 merge variantAssets(由 AGP 定义)将我的资产作为输入,因此 mergevariantAssets 任务必须依赖于我的 generate变体Stuff 任务。
我的插件在 AGP 4.2.2 下正常工作。

AGP 7.0.0 弃用 com.android.build.gradle.api.ApplicationVariant 并将其替换为 com.android.build.api.variant.ApplicationVariant,因此我还必须将 com.android.build.gradle.AppExtension 替换为 com.android.build.api.variant.ApplicationAndroidComponentsExtension 以及变体上的循环。 现在,当 Android Studio 构建模型时,它会失败并出现以下错误:

A problem occurred configuring project ':app'.
> Task with name 'mergeDebugAssets' not found in project ':app'.

但在 Android Studio 的 Gradle 视图中,可以看到 mergeDebugAssets 任务。
似乎在AppExtension.getApplicationVariants().all()(AGP 4.2.2)方法期间,AGP已经定义了它的任务,而在ApplicationAndroidComponentsExtension.onVariants()(AGP 7.0.0)方法期间,AGP还没有定义它的任务。

您可以在https://gist.github.com/dscoppelletti/d4ca0e1a19ed4ba4aaea99cf48ae930a查看示例代码

感谢任何帮助。

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin


    【解决方案1】:

    我也有类似的问题。我有一个聚合任务,它从每个变体中收集工件并将它们复制到给定路径,但在 ApplicationAndroidComponentsExtension.onVariants()

    期间,变体的组装任务不可用

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      相关资源
      最近更新 更多