实验插件的风味尺寸和变体滤镜?

时间:2015-11-09 19:49:58

标签: android android-ndk android-gradle android-productflavors gradle-experimental

有没有人知道使用实验性Gradle插件定义风味维度和变体过滤器的语法? (这将包括为每个flavor create()块中的特定维度指定flavor的语法。)

experimental plugin user guide并未解决任何此问题,我无法在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'
}

由于此应用使用本机代码,因此我想为不同的硬件平台添加维度。此外,由于亚马逊AppStore和Google Play有不同的模型支持不同的硬件,我想使用变体过滤器以不同的市场对待硬件平台。

我<罢工>在黑暗中盲目绊倒尝试了很多东西来定义风味尺寸;编译Gradle脚本时,这些都会产生错误

我还没有尝试创建变体过滤器,因为我已经停留在第1步,但是如果没有某人的指导,那么在我知道的情况下,我希望平等(缺乏)成功

尝试1:

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

model {
    android {
        ...

        defaultConfig.with {
            ...
            flavorDimensions = ["abi", "market"]
        }
    }
    ...
}
...

错误:

  

没有这样的属性:类的flavorDimensions:com.android.build.gradle.managed.ProductFlavor

尝试2:

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

model {
    android {
        ...

        defaultConfig.with {
            ...
        }
        flavorDimensions = ["abi", "market"]
    }
    ...
}
...

错误:

  

没有这样的属性:类的flavorDimensions: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") {}
    }
}
...

错误:

  

配置项目&#39;:app&#39;时出现问题。

     
    

以下型号规则未绑定:         model.android.flavorDimensions
          易变:
             - android.flavorDimensions(java.lang.Object)

  

尝试4:

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

model {
    android {
        ...
    }
    android.flavorDimensions = ["abi", "market"]
}

错误:

  

没有这样的属性:类的flavorDimensions:org.gradle.model.dsl.internal.NonTransformedModelDslBacking

1 个答案:

答案 0 :(得分:2)

我今天也遇到过这个问题。最后,我发现你不需要指定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"
    }
}