首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多维构建风格中的不同signingConfig只是为了发布buildType

多维构建风格中的不同signingConfig只是为了发布buildType
EN

Stack Overflow用户
提问于 2017-07-11 13:28:59
回答 1查看 1K关注 0票数 5

我使用以下配置:

代码语言:javascript
复制
android {
// a lot more of definitions...

signingConfigs {
    // For advanced-artefacts, we are using a different signing configuration in each environment
    advanced_prod {
        storeFile file(RELEASE_KEYSTORE_FILE_advanced)
        storePassword RELEASE_KEYSTORE_PASSWORD_ADVANCED
        keyAlias RELEASE_KEY_ALIAS_ADVANCED
        keyPassword RELEASE_KEY_PASSWORD_ADVANCED
    }
    advanced_int {
        storeFile file(RELEASE_KEYSTORE_FILE_advanced)
        storePassword RELEASE_KEYSTORE_PASSWORD_ADVANCED
        keyAlias "advancedapp.android.int"
        keyPassword RELEASE_KEY_PASSWORD_ADVANCED
    }
    advanced_test {
        storeFile file(RELEASE_KEYSTORE_FILE_advanced)
        storePassword RELEASE_KEYSTORE_PASSWORD_ADVANCED
        keyAlias "advancedapp.android.test"
        keyPassword RELEASE_KEY_PASSWORD_ADVANCED
    }
    advanced_dev {
        storeFile file(RELEASE_KEYSTORE_FILE_advanced)
        storePassword RELEASE_KEYSTORE_PASSWORD_ADVANCED
        keyAlias "advancedapp.android.dev"
        keyPassword RELEASE_KEY_PASSWORD_ADVANCED
    }
    basic {
        storeFile file(RELEASE_KEYSTORE_FILE_BASIC)
        storePassword RELEASE_KEYSTORE_PASSWORD_BASIC
        keyAlias RELEASE_KEY_ALIAS_BASIC
        keyPassword RELEASE_KEY_PASSWORD_BASIC
        storeType "JKS"
    }
}

flavorDimensions "project", "environment"

productFlavors {
    basic {
        dimension "project"
    }
    advanced {
        dimension "project"
    }
    flavorDevelopment {
        dimension "environment"
        applicationId "ch.domain.superapp.development"
    }

    flavorTest {
        dimension "environment"
        applicationId "ch.domain.superapp.test"
    }

    flavorIntegration {
        dimension "environment"
        applicationId "ch.domain.superapp.integration"
    }

    flavorProduction {
        dimension "environment"
        applicationId "ch.domain.superapp.production"
    }
}
buildTypes {
    debug {
        testCoverageEnabled true
        // all debug artefacts are signed with the default, the android debug certificate from the local machine
     }

    release {
        // Currently all environments (dev/test/int/prod) are signed by the Production certificates either for basic or for advanced
        productFlavors.basic.signingConfig signingConfigs.basic
        productFlavors.advanced.signingConfig signingConfigs.advanced_prod // <- !!! here my question relates to !!!

    }
}


// a lot more of definitions...
}

此配置将创建以下构建变体:

advancedFlavorDevelopmentRelease -> signingConfig: advanced_dev

advancedFlavorTestRelease -> signingConfig: advanced_test

advancedFlavorIntegrationRelease -> signingConfig: advanced_int

advancedFlavorProductionRelease -> signingConfig: advanced_prod

advancedFlavorDevelopmentDebug -> signingConfig: android_debug (本地)

advancedFlavorTestDebug -> signingConfig: android_debug (本地)

advancedFlavorIntegrationDebug -> signingConfig: android_debug (本地)

advancedFlavorProductionDebug -> signingConfig: android_debug (本地)

basicFlavorDevelopmentRelease -> signingConfig: basic

basicFlavorTestRelease -> signingConfig: basic

basicFlavorIntegrationRelease -> signingConfig: basic

basicFlavorProductionRelease -> signingConfig: basic

basicFlavorDevelopmentDebug -> signingConfig: android_debug (本地)

basicFlavorTestDebug -> signingConfig: android_debug (本地)

basicFlavorIntegrationDebug -> signingConfig: android_debug (本地)

basicFlavorProductionDebug -> signingConfig: android_debug (本地)

我的问题是有关下列守则:

productFlavors.advanced.signingConfig signingConfigs.advanced_prod

目前,我正在分配来自高级风味advanced_prod证书的所有环境,基本版本的认证需求很好,并且使用上述配置完成!

我进行了一次不成功的试验:

代码语言:javascript
复制
applicationVariants.all { variant ->
    if (variant.name == 'advancedFlavorDevelopmentRelease') {
        def flavor = variant.mergedFlavor
        flavor.signingConfig = signingConfigs.advanced_dev;
    }
    if (variant.name == 'advancedFlavorTestRelease') {
        def flavor = variant.mergedFlavor
        flavor.signingConfig = signingConfigs.advanced_test;
    }
    if (variant.name == 'advancedFlavorIntegrationRelease') {
        def flavor = variant.mergedFlavor
        flavor.signingConfig = signingConfigs.advanced_int;
    }
    if (variant.name == 'advancedFlavorProductionRelease') {
        def flavor = variant.mergedFlavor
        flavor.signingConfig = signingConfigs.advanced_prod;
    }
}

我正在寻找一个解决方案来定制高级产品,为每个环境(flavorDevelopment/flavorTest/flavorIntegration)配置一个专用的signConfig,但只在发布buildType中

有什么想法吗?

卢克

EN

回答 1

Stack Overflow用户

发布于 2020-04-04 14:15:31

我遇到了同样的情况,这是我的解决方案,它对我有效。

代码语言:javascript
复制
android {
    signingConfigs {
        flavorA {
            storeFile file("xxx.jks")
            storePassword "xxx"
            keyAlias "xxx"
            keyPassword "xxx"
        }

        flavorB {
            storeFile file("xxx.jks")
            storePassword "xxx"
            keyAlias "xxx"
            keyPassword "xxx"
        }
    }

    productFlavors {

            flavorA {
                signingConfig signingConfigs.flavorA
            }

            flavorB {
                signingConfig signingConfigs.flavorB
            }
        }

    buildTypes {

        release {
            minifyEnabled true
            proguardFiles 'proguard-rules.pro'
        }

        debug.init(release.signingConfig)
        debug {
            minifyEnabled false
        }

    }
}

我的AndroidStudio是3.6.2,AGP是3.6.2。

希望它能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45035978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档