具有两种风格的应用生成相同的密钥哈希

App with two flavors generate the same key hash

我有两个来自同一个项目的两个不同风格的应用程序,它们有 Facebook 登录,其中一个已发布并且工作正常,问题出在另一种风格上,在调试中一切正常,但是当我尝试在发行版中使用 facebook 登录时,我得到了无效的密钥哈希,密钥哈希不匹配... 我多次尝试重新生成密钥哈希,即使使用不同的密钥库,但我得到了相同的结果,我什至尝试在错误消息中复制密钥哈希,但没有成功。 然后我在 facebook 控制台中将密钥散列与已发布应用程序的密钥散列进行了比较,它就在那里。

我的问题是,为什么这两种版本在不同的清单文件中具有不同的包名和 facebook ApplicationId,但它们的密钥哈希值却相同?

这是我的build.gradle

android {
signingConfigs {
    release {
        keyAlias 'alias'
        keyPassword '********'
        storeFile file('keystore.jks')
        storePassword '********'
        v2SigningEnabled false
    }
}
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
    minSdkVersion 19
    targetSdkVersion 25
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
}

buildTypes {
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {

        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}
flavorDimensions "app"
productFlavors {
    A {
        dimension "app"
        applicationId "com.app1"
        versionCode 12
        versionName '1.12'
        resValue "string", "app_name", "App1"
        resValue "string", "facebook_app_id", "1**************7"
        resValue "string", "fb_login_protocol_scheme", "fb1**************7"
    }

    B {
        dimension "app"
        applicationId "com.app2"
        versionCode 0
        versionName '1.0'
        resValue "string", "app_name", "App2"
        resValue "string", "facebook_app_id", "1**************5"
        resValue "string", "fb_login_protocol_scheme", "fb1**************5"
    }
}

您对具有相同密钥库的两个变体使用相同的签名配置,请为每个变体使用不同的密钥库。