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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用flavor签名配置覆盖调试构建类型签名配置相关的知识,希望对你有一定的参考价值。

我有一个有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'进行编译

答案

似乎默认情况下,Android在调试构建类型(android调试密钥库)上设置了signingConfig,并且当为构建类型设置signingConfig时,将忽略signingConfig的风格。

解决方案是在调试构建类型上将signingConfig设置为null。然后将使用为味道给出的signingConfig

buildTypes {
        debug {
            // Set to null to override default debug keystore and defer to the product flavor.
            signingConfig null
            applicationIdSuffix ".d"
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

以上是关于使用flavor签名配置覆盖调试构建类型签名配置的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Cordova 签名应用程序

签名(调试)不包括 beta-reports-active 权利

OpenHarmony应用开发--配置OpenHarmony应用签名信息

使用使用新配置文件签名的构建更新已安装的 iOS 应用

无法解决错误:可执行文件在 xcode 4.2 中使用无效的调试权利签名

调试代码签名和配置文件部分中缺少的行