【问题标题】:Override debug build type signing config with flavor signing config使用风味签名配置覆盖调试构建类型签名配置
【发布时间】:2015-06-19 12:47:39
【问题描述】:

我有一个 Android 应用,它有 2 种风格: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-gradle-plugin


【解决方案1】:

似乎默认情况下,Android 在调试构建类型(android debug keystore)上设置了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'
        }
    }

【讨论】:

  • 谢谢,为什么applicationIdSuffix 上的.d?有必要吗?
  • 不,不是。我为我的调试版本提供了一个与我的发布版本不同的包,因此它们可以安装在同一设备上而不会相互干扰。不过我强烈推荐它:-)
  • 不需要将调试键设置为空。我们可以为每种类型和风味设置唯一的密钥:stackoverflow.com/a/35057525/2557258
  • 为您的回答脱帽致敬。保存我的风味概念项目.. 为我工作
  • 哇,这不是很直观。感谢您的回答!这在任何地方都有记录吗?
猜你喜欢
  • 2013-12-11
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 2015-08-04
相关资源
最近更新 更多