使用不同的密钥库生成 APK

Generate APK's with different keystores

我创建了不同风格的项目。 每种风格都有自己的应用程序 ID 以及密钥库和密码。

在 gradle 文件中,我添加了 signingConfigs 部分来设置 keyAliaskeyPasswordstoreFilestorePassword

接下来,在 buildTypesrelease 部分,我为每种风格设置了签名配置。

然后,我生成了所有的口味。我得到了所有具有正确内容和包名称的 apk。 但是当我尝试上传到 Play 商店时,出现错误:

Upload failed: You uploaded an APK that is not signed with the upload certificate. 
               You must use same certificate.
               The uploaded certificate has fingerprint "A" and the certificate
               used to sign the APK you uploaded have fingerprint "B".

现在,我知道它使用了不同的证书。我的问题是如何从 gradle 修复它? 所以 APK 的生成过程也会区分不同的证书,并会为每种风格使用正确的证书?

gradle 文件如下所示:

android{

    signingConfigs {
        flavorA {
            keyAlias flavorAKeystoreProperties['keyAlias']
            keyPassword flavorAKeystoreProperties['keyPassword']
            storeFile file(flavorAKeystoreProperties['storeFile'])
            storePassword flavorAKeystoreProperties['storePassword']
        }

        flavorB {
            keyAlias flavorBKeystoreProperties['keyAlias']
            keyPassword flavorBKeystoreProperties['keyPassword']
            storeFile file(flavorBKeystoreProperties['storeFile'])
            storePassword flavorBKeystoreProperties['storePassword']
        }

        flavorC{
            keyAlias flavorCKeystoreProperties['keyAlias']
            keyPassword flavorCKeystoreProperties['keyPassword']
            storeFile file(flavorCKeystoreProperties['storeFile'])
            storePassword flavorCKeystoreProperties['storePassword']
        }       
    }


    flavorDimensions("default")
    productFlavors{

        flavorA{
            dimension "default"
            applicationId "com.example.flavor.flavorA"
            signingConfig signingConfigs.flavorAConfig
        }

        flavorB{
            dimension "default"
            applicationId "com.example.flavor.flavorB"
            signingConfig signingConfigs.flavorBConfig
        }

        flavorC{
            dimension "default"
            applicationId "com.example.flavor.flavorC"
            signingConfig signingConfigs.flavorCConfig
        }
    }   

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            productFlavors.flavorA.signingConfig signingConfigs.flavorAConfig
            productFlavors.flavorB.signingConfig signingConfigs.flavorBConfig
            productFlavors.flavorC.signingConfig signingConfigs.flavorCConfig

    }
        debug {
            applicationIdSuffix ".debug"
            minifyEnabled false
        }
    }
}

对于有同样问题的人。 请检查您是否正确输入了口味名称 在 gradle 和属性文件中。 同样在属性文件中,检查密钥库文件和密码的路径。