我正在编写一个自定义Gradle插件,它会将一个或多个任务添加到Android项目中。其中一项任务需要添加一个特殊的'将风格构建到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)
}
}
这里的问题是target.android.productFlavors
中的所有构建版本在此时都是只读的,并引发以下错误:
Cannot set the value of read-only property 'name' for ProductFlavor_Decorated
有没有人知道如何从插件中动态添加构建风格?
答案 0 :(得分:3)
应该这么简单:
@Override
void apply(Project target) {
target.android.productFlavors.create("name")
}
productFlavors
是NamedDomainObjectContainer
的实例。
来自docs of NamedDomainObjectContainer.create():
使用给定名称创建一个新项目,并将其添加到此容器中。
因此,这会创建一个ProductFlavor
,其名称为productFlavors
。