使用flavor签名配置覆盖调试构建类型签名配置

时间:2015-04-14 02:50:04

标签: android android-gradle

我有一个有2种口味的Android应用:internalproduction,还有2种构建类型:debugrelease

我试图根据风格分配签名配置,根据文档是可行的。我已经看过并找到了其他答案,但它们似乎都没有效果。所有内容都会编译,但应用程序正在使用本机的本地调试密钥库进行签名。

这是我的gradle文件:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0.0"
    }

    signingConfigs {
        internal {
            storeFile file("../internal.keystore")
            storePassword "password"
            keyAlias "user"
            keyPassword "password"
        }
        production {
            storeFile file("../production.keystore")
            storePassword "password"
            keyAlias "user"
            keyPassword "password"
        }
    }

    productFlavors {
        internal {
            signingConfig signingConfigs.internal
            applicationId 'com.test.test.internal'
        }
        production {
            signingConfig signingConfigs.production
            applicationId 'com.test.test'
        }
    }

    buildTypes {
        debug {
            applicationIdSuffix ".d"
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    variantFilter { variant ->
        if (variant.buildType.name.equals('debug')
                && variant.getFlavors().get(0).name.equals('production')) {
            variant.setIgnore(true);
        }
    }
}

注意:我还要使用classpath 'com.android.tools.build:gradle:1.1.3'

进行编译

1 个答案:

答案 0 :(得分:19)

默认情况下,Android在调试构建类型(android调试密钥库)上设置了signingConfig,并且在为构建类型设置signingConfig时,{{1}因味道而被忽略。

解决方案是在调试版本类型上将signingConfig设置为signingConfig。然后将使用代替风味的null

signingConfig