Android应用更新APK签名错误求助:丢失原始密钥库如何完成版本上传
解决Google Play上传APK签名错误及丢失原始Keystore的问题
嘿,这个问题我之前帮朋友踩过坑,咱们一步步捋清楚解决办法:
先搞清楚错误的核心原因
你遇到的ERROR: JAR_SIG_NO_SIGNATURES有两种可能:
- 要么是你生成的APK根本没完成正确签名;
- 要么是新密钥和Google Play记录的原始上传密钥不匹配,导致系统不认这个签名。
但结合你丢失旧keystore的情况,核心矛盾还是新旧签名密钥无法匹配,Google Play不允许用新密钥更新旧应用。
第一步:先确认当前APK是否正确签名
先排除签名过程的低级错误,用官方工具验证:
- 打开终端,运行
apksigner verify --verbose your-release-apk-file.apk - 如果输出显示
No APK signatures found,说明签名流程有问题,重新检查:- 确保在Android Studio的「Generate Signed Bundle / APK」流程中,正确选择了新的keystore文件,输入了正确的密钥别名、密码,且最终生成的是签名后的release APK;
- 检查项目的
build.gradle(Module)文件,确认release构建配置了签名:android { signingConfigs { release { storeFile file("your-new-keystore.jks") storePassword "你的密钥库密码" keyAlias "你的密钥别名" keyPassword "你的密钥密码" } } buildTypes { release { signingConfig signingConfigs.release // 其他编译配置 } } }
- 如果apksigner验证通过(显示
Verified using v1 scheme (JAR signing): true等类似内容),那问题就聚焦在新旧密钥不匹配上,直接走下面的官方解决方案。
第二步:官方唯一可行的变通方案——申请重置应用签名密钥
当原始上传密钥丢失时,Google Play提供了重置密钥的官方途径,这是唯一能让你继续更新原应用的方法:
- 登录Google Play Console,找到你的目标应用;
- 进入「发布」>「设置」>「应用签名」页面;
- 点击「请求重置密钥」,按照页面提示提交信息:
- 详细说明你丢失原始上传密钥的情况;
- 提供新生成密钥的公钥文件(可以用命令生成:
keytool -export -rfc -alias 你的密钥别名 -file upload_certificate.pem -keystore 你的新密钥库.jks);
- 提交申请后,Google团队会在几个工作日内审核,通过后你就能用新密钥上传应用更新了。
注意:这个重置流程只能申请一次,且必须使用当初上传应用的所有者账号操作,所以要确保你登录的是正确的账号。
临时测试方案(非更新原应用)
如果在等待Google审核期间需要测试重写后的应用,可以创建一个新的应用草稿,用新密钥签名上传作为测试版本,但这个版本无法替代原应用的更新,只能用于内部测试。
内容的提问来源于stack exchange,提问作者Erik Auranaune




