Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用flavor维度时是否可以排除特定的构建变量?_Android_Gradle - Fatal编程技术网

Android 使用flavor维度时是否可以排除特定的构建变量?

Android 使用flavor维度时是否可以排除特定的构建变量?,android,gradle,Android,Gradle,使用Gradle维度时,是否可以排除特定变量? 例如— android { ... flavorDimensions "abi", "version" productFlavors { freeapp { flavorDimension "version" ... } x86 { flavorDimension "abi" ... } } 将创建以下生成变体: x86 freeapp调试 x8

使用Gradle维度时,是否可以排除特定变量? 例如—

android {
...

flavorDimensions "abi", "version"

productFlavors {
    freeapp {
        flavorDimension "version"
        ...
    }

    x86 {
        flavorDimension "abi"
        ...
    }
}
将创建以下生成变体:

x86 freeapp调试
x86 freeapp发布版
arm freeapp调试
arm freeapp发布
mips freeapp调试
mips freeapp发布版
x86 paidapp调试
x86 paidapp版本
arm paidapp调试
手臂PAIDAP释放
mips paidapp调试
mips-paidapp释放


“mips paidapp release”是否可以手动删除?

自Gradle 0.9以来,您可以应用一个变体过滤器并对其进行迭代:

productFlavors {
    freeapp {
        dimension "version"
    }

    x86 {
        dimension "abi"
    }

    paidapp {
        dimension "mips"
    }
}

// Loop variants
android.variantFilter { variant ->
    // Loop flavors
    variant.getFlavors().each { flavor ->
        println variant.buildType.name + " " + flavor.name + " " + flavor.dimension
        if (variant.buildType.name.equals('release') &&
                flavor.name.equals('paidapp') &&
                flavor.dimension.equals('mips')) {
            variant.setIgnore(true)
        }
    }
}
注意:我将
flavorDimension
更改为
dimension
,因为后者现在是指定它的首选方式

注2:上述说明要求您使用较新的gradle版本:

Project/build.gradle
应具有以下内容:

dependencies {
    classpath 'com.android.tools.build:gradle:1.2.3'
}
Project/app/build.gradle
应具有以下功能:

android {
    buildToolsVersion "22.0.1"
    ...
}
我就是这样做的:

flavorDimensions "device", "server"

productFlavors {
    emulator {
        dimension = "device"
    }
    phone {
        dimension = "device"
    }
    staging {
        dimension = "server"
    }
    production {
        dimension = "server"
    }
}

android.variantFilter { variant ->
    def device = variant.getFlavors().get(0).name
    def server = variant.getFlavors().get(1).name
    def isRelease = variant.buildType.name.equals('release')
    def isDebug = variant.buildType.name.equals('debug')

    // Disable emulatorProductionRelease build variant
    if (device.equals('emulator') && server.equals('production') && isRelease) {
        variant.setIgnore(true)
    }
}

我喜欢它,因为它易于阅读,而且您可以针对特定的构建变体。

谢谢!它在哪里说风味维度是首选的方式?当我使用它时,它不会编译。我没有办法在循环中获得味道的维度。@user1787773在你的应用程序的gradle.build文件中确保你有
buildToolsVersion“22.0.1”
并且在你的项目(不是你的应用程序)的gradle.build中确保你使用了更新的1.2.3 gradle版本:
classpath'com.android.tools.build:gradle:1.2.3'