如何访问模型外的model.android属性

时间:2016-03-20 01:56:03

标签: gradle android-gradle gradle-experimental

与此相符:

的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'。

我认为该块之外的属性访问曾经使用'apply plugin:com.android.application'而不是新模型。

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

我知道这是实验性的;任何关于在gradle源代码中查找答案的提示都将得到慷慨接受!

1 个答案:

答案 0 :(得分:0)

原来,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 ''