为什么指纹在我新签名的apk中有所不同?

Jim*_*145 10 android jks keytool android-studio flash-cc

在将密钥库的类型从PKCS12更改为JKS后,我遇到了获取相同指纹的问题.

为了进行更改,我创建了一个新的JKS密钥库,删除了其中的密钥,并从.p12文件中导入了我需要的密钥.用keytool -keystore keystore.jks -list 它验证密钥时输出指纹:

(SHA1): 21: ... :39
Run Code Online (Sandbox Code Playgroud)

这是.p12文件的指纹,指纹谷歌说我以前的apks已经.当我用这个证书签署我的apk并尝试将其上传到Playstore时,它说证书有指纹:

SHA1: C7: ... :AF
Run Code Online (Sandbox Code Playgroud)

当我用KeyStore Explorer检查原始的.p12文件和新的.jks文件时,它们都SHA1: C7: ... :AF列为指纹.

EDIT1:

keytool -keystore disneyquiz.p12 -storetype PKCS12 -alias 1 -list
Enter keystore password:
1, Jun 4, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 21: ... :39


keytool -keystore quizstore.jks -list
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

key0, Dec 3, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 21: ... :39
Run Code Online (Sandbox Code Playgroud)

新的Apk

keytool -printcert -file CERT.RSA    
Owner: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Issuer: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Serial number: 36663939343135303a31343636393337363665663a2d38303030
Valid from: Tue Jun 03 19:29:37 EDT 2014 until: Sat Jun 04 19:29:37 EDT 2039
Certificate fingerprints:
         MD5:  F6: ... :72
         SHA1: C7: ... :AF
         SHA256:     7C:D6: ... :67:B9
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
]
Run Code Online (Sandbox Code Playgroud)

原始APK

keytool -printcert -file CERT.RSA    
Owner: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Issuer: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Serial number: 36663939343135303a31343636393337363665663a2d38303030
Valid from: Tue Jun 03 19:29:37 EDT 2014 until: Sat Jun 04 19:29:37 EDT 2039
Certificate fingerprints:
         MD5:  AD: ... :CA
         SHA1: 21: ... :39
         SHA256: D2:7D: ... :8E:47
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
]
Run Code Online (Sandbox Code Playgroud)

编辑2:

原始.p12文件是使用Adobe Air Certificate生成器生成的,原始apk是使用Adobe Flash Professional CC编译的.在测试证书并尝试以各种方式签署APK后,我认为唯一的可能性是Flash Professional签名过程以某种方式在签署apk时更改报告的指纹.闪存中的CERT.RSA创建了apk的META-INF与新apk的CERT.RSA相匹配.希望有人建议如何签署我的新apk,以便我可以更新我的应用程序.

Dev*_*Dev 2

问题出在 gradle 上,同时使用从 p12 密钥导入的密钥进行签名。

修复步骤:

  1. 将apk的扩展名改为zip
  2. 不要解压apk,而是通过双击用zip打开它
  3. 删除 META-INF 文件夹
  4. 将扩展名从 zip 更改为 apk
  5. 使用以下命令从 cmd 提示符对您的 apk 进行签名

jarsigner-keystore-storepass

  1. zip algin apk

zipalign [-f] [-v] infile.apk outfile.apk

对齐方式是定义字节对齐边界的整数。它必须始终为 4(提供 32 位对齐),否则它实际上什么也不做。

我能够使用这些步骤成功地重新发布我的其中一个