【问题标题】:How to access model.android properties outside model如何访问模型外的model.android属性
【发布时间】:2016-03-20 01:56:02
【问题描述】:

大致上是这样的:

Build.Gradle

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 19
        ...
    }

    android.buildTypes {
        debug
        release
    }
    ...
}

//How to access model.android.buildTypes outside model?
$(model.android.buildTypes).each { buildType ->
    task "task$buildType" << {
        ...
    }
}

本文档简要解释了模型访问其他model.android.*属性的$()语法:gradle experimental

我正在使用 gradle 2.10

我尝试使用 "${}" 和 $("") 语法不起作用,并且通常会失败:

在任务 ':app:model' 上找不到属性 'android'。

我相信该块之外的属性访问用于使用“应用插件:com.android.application”而不是新模型。

由于模型是一项任务,因此我查找了 Task(请参阅动态属性部分)并尝试了 model.property(android) 但这也不起作用。我猜它在某处,但我无法查询属性列表。

我知道这是 gradle-experimental;任何关于在 gradle 源代码中查找答案的提示都将被亲切地接受!

【问题讨论】:

    标签: gradle android-gradle-plugin gradle-experimental


    【解决方案1】:

    原来 android.* 属性被暴露为项目的属性(例如 project.buildTypes)。

    例子:

    task ptest() << {
      println buildTypes.collect{it}.join('\n')
      println platforms.collect{it}.join('\n')
      println flavors.collect{it}.join('\n')
    }
    

    输出:

    user@debian:~/dev/androidinputrouter$ ./gradlew :app:ptest
    :app:ptest
    build type 'debug'
    build type 'release'
    platform 'arm64-v8a'
    platform 'armeabi'
    platform 'armeabi-v7a'
    platform 'mips'
    platform 'mips64'
    platform 'x86'
    platform 'x86_64'
    flavor ''
    

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 2017-08-28
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2015-08-04
      • 1970-01-01
      相关资源
      最近更新 更多