当前位置: 首页 > 知识库问答 >
问题:

从自定义Gradle插件中动态添加构建风格

麹浩瀚
2023-03-14

我正在编写一个自定义Gradle插件,它将向Android项目添加一个或多个任务。其中一项任务需要将“ad hoc”构建风格添加到Android项目已经定义的现有构建风格列表中。

我尝试通过更改名称来更改现有构建风格之一,如下代码所示:

import com.android.build.gradle.internal.dsl.ProductFlavor
import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin implements Plugin<Project> {

    @Override
    void apply(Project target) {
        ProductFlavor adHocFlavor = target.android.productFlavors.first()
        adHocFlavor.name = 'adHoc'
        target.android.productFlavors.add(adHocFlavor)
    }

}

这里的问题是,所有构建风格都在目标中。AndroidproductFlavors此时为只读,并引发以下错误:

无法为ProductFlavor\u设置只读属性“name”的值

有人知道如何在插件中动态添加构建风格吗?


共有1个答案

逑禄
2023-03-14

它应该如此简单:

@Override
void apply(Project target) {
    target.android.productFlavors.create("name")    
}

productFlavorsNamedDomainObjectContainer的一个实例。

来自NamedDomainObjectContainer.create()的文档:

使用给定名称创建新项,并将其添加到此容器中。

因此,这将使用提供的名称创建一个ProductFlavor,并将其发送到productFlavors。

 类似资料:
  • 下面的这些代码可以帮助您通过CSS文件和SCSS文件,创建和编译 CSS 和 JS 文件的source-maps。 安装依赖 为了运行编译和压缩任务,你必须安装 node 和 npm。 命令行 // (Optional) Install Gulp module globally npm install gulp -g // Install fullpage's build dependen

  • 问题内容: 我的公司最近写了gradle插件来进行原始配置(存储库,项目间的通用依赖关系等)。总体而言,这大大简化了我们的构建过程,并发现了项目之间的一些不一致之处。我们最近尝试向插件添加任务,但该任务无法正常工作。 这是坏掉的插件: 除了之外,此插件都很好用。当我将其添加到混合中(并编译/部署到我们的本地仓库)时,当我尝试构建使用插件的项目时出现此错误: 问题答案: 在脚本中定义任务时,将调用方

  • 我想从maven转到gradle。 在pom中。xml文件我有一个自定义存储库: 它是一个简单的超文本传输协议Web服务器,带有. jar文件。 如何将此自定义回购添加到生成中。格拉德尔? 我尝试了此代码,但不起作用: 我的定制repo不是maven repo,但我在Gradle文档中没有找到可以指定URL的其他示例。

  • 对于maven,我可以很容易地添加我的自定义实现com.my.generator:customgenerator:1.0-snapshot in plugin dependency block, 但在gradle我不知道怎么做

  • 我正在为wordpress构建我的第一个插件,我需要它为登录屏幕动态添加一个自定义页面。 我能找到的唯一一件接近我需要的东西是:WP-使用插件目录中的文件作为自定义页面模板? 这是我目前在我的插件中运行的代码... 使用这将需要我的客户端创建新页面。。。我需要的是插件使用插件文件夹中的模板文件自动创建一个自定义页面(具有自定义路径,意思是.com/custompathhere),该模板文件将包含插

  • 问题内容: 我正在用Gradle创建一个构建过程,我想提供一个使用Java代码的插件。Gradle 插件文档 说 这是可能的: 您可以使用任何喜欢的语言来实现自定义插件,前提是该实现最终会编译为字节码。对于此处的示例,我们将使用Groovy作为实现语言。如果需要,可以改用Java或Scala。 但是,经过数小时的谷歌搜索和阅读之后,我还没有找到有关如何使用Java创建Gradle自定义插件的任何说