实验插件的风味维度和变体过滤器?
Flavor dimensions and variant filters for experimental plugin?
有人知道使用实验性 Gradle 插件定义风味维度和变体过滤器的语法吗? (这将包括用于将风味分配给每个风味的 create()
块内的特定维度的语法。)
experimental plugin user guide doesn't address any of this and I couldn't find any examples in the code samples。我使用的是插件版本 0.2.1 (com.android.tools.build:gradle-experimental:0.2.1
)。常规插件的语法显然根本不起作用。
这是原始脚本,它为 Google Play 和 Amazon AppStore 定义了产品风格:
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.1'
defaultConfig.with {
... // normal stuff
}
}
android.aaptOptions {
noCompress = 'dict'
}
android.ndk {
... // normal stuff
}
android.compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
android.buildTypes {
release {
minifyEnabled = true
proguardFiles += file('proguard-rules.pro')
}
}
android.productFlavors {
create("google") {
}
create("amazon") {
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:support-annotations:23.1.0'
}
由于此应用程序使用本机代码,因此我想为不同的硬件平台添加一个维度。此外,由于 Amazon AppStore 和 Google Play 有不同的模型来支持不同的硬件,我想使用变体过滤器来针对不同的市场以不同的方式处理硬件平台。
我在黑暗中盲目地摸索尝试了很多东西来定义风味维度; 这些都会在编译 Gradle 脚本时产生错误。
我还没有尝试创建变体过滤器,因为我停留在第 1 步,但缺少某人的指导 "in the know",我希望同样(缺乏)成功。
尝试 1:
apply plugin: 'com.android.model.application'
model {
android {
...
defaultConfig.with {
...
flavorDimensions = ["abi", "market"]
}
}
...
}
...
错误:
No such property: flavorDimensions for class: com.android.build.gradle.managed.ProductFlavor
尝试 2:
apply plugin: 'com.android.model.application'
model {
android {
...
defaultConfig.with {
...
}
flavorDimensions = ["abi", "market"]
}
...
}
...
错误:
No such property: flavorDimensions for class: com.android.build.gradle.managed.AndroidConfig
尝试 3:
apply plugin: 'com.android.model.application'
model {
android {
... // as in original script
}
android.flavorDimensions {
create("abi") {}
create("market") {}
}
}
...
错误:
A problem occurred configuring project ':app'.
The following model rules are unbound:
model.android.flavorDimensions
Mutable:
- android.flavorDimensions (java.lang.Object)
尝试 4:
apply plugin: 'com.android.model.application'
model {
android {
...
}
android.flavorDimensions = ["abi", "market"]
}
错误:
No such property: flavorDimensions for class: org.gradle.model.dsl.internal.NonTransformedModelDslBacking
我今天也遇到了这个问题。最后,我发现你不需要指定android.flavorDimensions。您只需要简单地为每个口味添加维度。
我正在使用带有 gradle-2.5 的实验性实验性插件 0.2.1。
android.productFlavors {
create("product1"){
dimension = "product"
}
create("product"){
dimension = "product"
}
create("arm"){
dimension = "abi"
}
create("armv7"){
dimension = "abi"
}
}
有人知道使用实验性 Gradle 插件定义风味维度和变体过滤器的语法吗? (这将包括用于将风味分配给每个风味的 create()
块内的特定维度的语法。)
experimental plugin user guide doesn't address any of this and I couldn't find any examples in the code samples。我使用的是插件版本 0.2.1 (com.android.tools.build:gradle-experimental:0.2.1
)。常规插件的语法显然根本不起作用。
这是原始脚本,它为 Google Play 和 Amazon AppStore 定义了产品风格:
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.1'
defaultConfig.with {
... // normal stuff
}
}
android.aaptOptions {
noCompress = 'dict'
}
android.ndk {
... // normal stuff
}
android.compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
android.buildTypes {
release {
minifyEnabled = true
proguardFiles += file('proguard-rules.pro')
}
}
android.productFlavors {
create("google") {
}
create("amazon") {
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:support-annotations:23.1.0'
}
由于此应用程序使用本机代码,因此我想为不同的硬件平台添加一个维度。此外,由于 Amazon AppStore 和 Google Play 有不同的模型来支持不同的硬件,我想使用变体过滤器来针对不同的市场以不同的方式处理硬件平台。
我在黑暗中盲目地摸索尝试了很多东西来定义风味维度; 这些都会在编译 Gradle 脚本时产生错误。
我还没有尝试创建变体过滤器,因为我停留在第 1 步,但缺少某人的指导 "in the know",我希望同样(缺乏)成功。
尝试 1:
apply plugin: 'com.android.model.application'
model {
android {
...
defaultConfig.with {
...
flavorDimensions = ["abi", "market"]
}
}
...
}
...
错误:
No such property: flavorDimensions for class: com.android.build.gradle.managed.ProductFlavor
尝试 2:
apply plugin: 'com.android.model.application'
model {
android {
...
defaultConfig.with {
...
}
flavorDimensions = ["abi", "market"]
}
...
}
...
错误:
No such property: flavorDimensions for class: com.android.build.gradle.managed.AndroidConfig
尝试 3:
apply plugin: 'com.android.model.application'
model {
android {
... // as in original script
}
android.flavorDimensions {
create("abi") {}
create("market") {}
}
}
...
错误:
A problem occurred configuring project ':app'.
The following model rules are unbound: model.android.flavorDimensions
Mutable:
- android.flavorDimensions (java.lang.Object)
尝试 4:
apply plugin: 'com.android.model.application'
model {
android {
...
}
android.flavorDimensions = ["abi", "market"]
}
错误:
No such property: flavorDimensions for class: org.gradle.model.dsl.internal.NonTransformedModelDslBacking
我今天也遇到了这个问题。最后,我发现你不需要指定android.flavorDimensions。您只需要简单地为每个口味添加维度。
我正在使用带有 gradle-2.5 的实验性实验性插件 0.2.1。
android.productFlavors {
create("product1"){
dimension = "product"
}
create("product"){
dimension = "product"
}
create("arm"){
dimension = "abi"
}
create("armv7"){
dimension = "abi"
}
}