0

沿着这条线:

构建.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”而不是新模型。

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

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

4

1 回答 1

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 ''
于 2016-03-20T17:41:29.077 回答