我正在编写一个自定义 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
中的所有构建风格此时都是只读的,并抛出以下错误:
无法为 ProductFlavor_Decorated 设置只读属性“name”的值
有人知道如何从插件中动态添加构建风格吗?
最佳答案
它应该像这样简单:
@Override
void apply(Project target) {
target.android.productFlavors.create("name")
}
productFlavors
是 NamedDomainObjectContainer
的实例。
来自 docs of NamedDomainObjectContainer.create() :
Creates a new item with the given name, adding it to this container.
因此,这将使用提供的名称创建一个 ProductFlavor
,并将其添加到 productFlavors
。
关于android - 从自定义 Gradle 插件中动态添加构建风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258998/