繁体   English   中英

Android Build with Kotlin DSL - 如何访问风味额外属性?

[英]Android Build with Kotlin DSL - how to access flavor extra properties?

传统上,在 Groovy 中,可以在ext {}块中定义特定于风格的变量,但是切换到 Kotlin DSL 似乎extra地图具有项目范围。

看起来可以通过使用以下方法强制附加风味范围:

productFlavors {
        register("flavor1") {
            require(this is ExtensionAware)
            ...
        }

        register("flavor2") {
            require(this is ExtensionAware)
            ...
        }
}

(来源: https : //github.com/gradle/kotlin-dsl-samples/issues/1254

但是如果以后需要使用它,例如根据buildType调整变量,如下所示:

variants.forEach { variant ->
  val flavor = variant.productFlavors[0]
  val size = ?? // extra??
  variant.buildConfigField("String", "SIZE", size)
}

如何使用这些对extra风味范围的引用?

目前,只有一种访问 ProductFlavor 上的 ext 属性的工作方法是这种方式

    variant.productFlavors.forEach { flavor ->
        require(flavor is ReadOnlyProductFlavor)
        val properties = (flavor.getProperty("ext") as DefaultExtraPropertiesExtension).properties
    }

或者更清楚

    val flavor = variant.productFlavors[0] as ReadOnlyProductFlavor
    val extra = flavor.getProperty("ext") as DefaultExtraPropertiesExtension
    extra.get("myPropertyName")

当您调用不存在的属性ext时,它所做的事情与 Groovy 所做的事情相同

我创建了一个功能请求以使其更容易https://issuetracker.google.com/issues/161115878

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM