【问题标题】:why do i have to sign qa flavor in gradle?为什么我必须在 gradle 中签署 qa 风味?
【发布时间】:2016-01-28 15:37:47
【问题描述】:

我的 gradle 文件中有这个构建配置?

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            applicationIdSuffix ".debug"
            versionNameSuffix ".debug"
        }
        qa {
            applicationIdSuffix ".qa"
            versionNameSuffix ".qa"
        }
    }
    sourceSets { debug { res.srcDirs = ['src/debug/res', 'src/debug/res/values'] } }
}

为什么当我尝试运行 qa 时它会因为没有此风味的密钥而导致我出错?

【问题讨论】:

    标签: android gradle key sign android-productflavors


    【解决方案1】:

    Gradle 可以“开箱即用”构建项目的唯一构建类型是 debug,因为 Gradle 的 Android 插件知道使用插件创建的调试签名密钥库。对于其他一切,您要么需要:

    • 配置单独的签名密钥库(例如,用于release

    • debug 构建类型初始化新的构建类型,类似于使用复制构造函数,因此它使用与 debug 用于签名的相同规则

    在下面的示例中,我想定义一个新的mezzanine 构建类型,为其提供与release 相同的签名配置。所以,我用mezzanine.initWith(buildTypes.release)mezzanine设置为release的一个副本,然后用不同的规则继续配置:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 19
        buildToolsVersion "21.1.2"
    
        defaultConfig {
            versionCode 2
            versionName "1.1"
            minSdkVersion 14
            targetSdkVersion 18
        }
    
        signingConfigs {
            release {
                storeFile file('HelloConfig.keystore')
                keyAlias 'HelloConfig'
                storePassword 'laser.yams.heady.testy'
                keyPassword 'fw.stabs.steady.wool'
            }
        }
    
        buildTypes {
            debug {
              applicationIdSuffix ".d"
              versionNameSuffix "-debug"
            }
    
            release {
                signingConfig signingConfigs.release
            }
    
            mezzanine.initWith(buildTypes.release)
    
            mezzanine {
                applicationIdSuffix ".mezz"
                debuggable true
            }
        }
    }
    

    在您的情况下,您将在配置 qa 构建类型的其余部分之前使用类似 qa.initWith(buildTypes.debug) 的内容。

    【讨论】:

    • 我有一种感觉,如果你不要求其他明智的,我只能调试生成它自己的密钥,我不能为我的 qa 风格使用调试密钥?我需要不同的包名称才能在我的手机上同时拥有这两个版本。感谢您的回答,非常详细和乐于助人
    • @JesusDimrix:“我的 qa 风格不能使用调试密钥吗?” - 根据您的问题,qa 是一种构建类型。您可以按照我的回答中所述使用qa 的调试签名密钥。
    猜你喜欢
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多