2014-10-30 83 views
0

我有问题产生一个新的apk,我想上传到谷歌Play商店。谷歌播放 - 上传新APK未能 - 指纹不同证书

最近我选择使用gradle来直接签署发行版apk。为此,我正在阅读一个属性文件,其中包含用于签署apk的密钥库的所有详细信息。 此前我使用IntelliJ的向导来发布apk。

看起来,向导的签名与Gradle不同,因此我无法将新apk上传到Google Play。

PS:由gradle这个生成APK是[项目根] [根模块在\建立\输出\ APK \

有谁知道,如果我做错事或者是gradle这个使用其他方法来签署apk使它与通过向导签名的apk不同。

+1

您可能会发现一些在有效关于确定签名者,验证证书等方面的现有问题。 – 2014-10-30 08:05:13

+0

运行“jarsigner -verify -verbose -certs my.apk”命令告诉我,来自Gradle的apk签名过程被搞砸了。它总是只采用最新的密钥库文件。 我会发布我的更新build.gradle文件,它适用于每种口味的不同密钥库。 – 2014-10-30 08:59:41

回答

1

我的问题似乎与我如何实现build.gradle。我固定它,这是它应该如何看,当你希望有不同的密钥库针对每种口味,如:

signingConfigs { 
    println 'Sign apk config' 

    falvor1 { 
     /** Details for signing the application */ 
     def props = new Properties() 
     props.load(new FileInputStream(rootProject.file("release.properties.flavor1"))) 

     storeFile file(rootProject.file(props.keyStore)) 
     storePassword props.keyStorePassword 
     keyAlias props.keyAlias 
     keyPassword props.keyAliasPassword 
    } 

    flavor2 { 
     /** Details for signing the application */ 
     def props = new Properties() 
     props.load(new FileInputStream(rootProject.file("release.properties.flavor2"))) 

     storeFile file(rootProject.file(props.keyStore)) 
     storePassword props.keyStorePassword 
     keyAlias props.keyAlias 
     keyPassword props.keyAliasPassword 
    } 
} 

/** Add product flavours for all variants of application */ 
productFlavors { 

    flavor1 { 
     // Update the application ID/ Package name 
     applicationId "com.my.application.flavor1" 
     /* Update the version code & version name */ 
     versionCode 100 
     versionName "1.0.0.1" 
    } 

    flavor2 { 
     // Update the application ID/ Package name 
     applicationId "com.my.application.flavor2" 
     /* Update the version code & version name */ 
     versionCode 200 
     versionName "2.0.0.2" 
    } 
} 

buildTypes { 
    debug { 

     runProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 

     zipAlign true 

    } 


    release { 

     //Only use the release key on a release buildType 
     productFlavors.flavor1.signingConfig signingConfigs.flavor1 
     productFlavors.flavor2.signingConfig signingConfigs.flavor2 

     runProguard true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 

     zipAlign true 


    } 
} 

release.properties.flavor结构

// Name of the keystore file 
keyStore=flavor1.keystore 
// keystore password 
keyStorePassword=flavor1pass 
// Key alias 
keyAlias=flavor1_alias 
// Key password 
keyAliasPassword=flavor1pass