APK无效签名问题求助:上传Google Play Store失败
解决Google Play APK签名无效(apksigner解析JAR签名失败)的问题
嘿,针对你遇到的这个签名解析错误——上传Google Play时提示APK签名无效,apksigner报错Failed to parse JAR signature META...,结合你用Flash Builder 4.16.1 + AIR 29的环境,之前几十次构建都正常、这次突然出问题的情况,我整理了几个针对性的排查和修复步骤:
1. 先确认签名密钥库没损坏
首先排查最核心的签名文件:
- 用
keytool -list -v -keystore 你的密钥库路径命令验证密钥库是否能正常读取,看看输出的证书信息是否完整,有没有乱码或者报错。如果密钥库损坏,得用备份的密钥库替换(你肯定有备份对吧?😉)。 - 如果你是用Flash Builder的自动签名功能,去项目属性的AIR Packaging里重新配置一遍签名参数:重新选密钥库、输入别名和密码,别大意输错大小写或者特殊字符。
2. 清掉构建缓存,从头来一遍构建
Flash Builder的缓存有时候会搞出莫名其妙的问题:
- 右键项目选Clean,清理现有构建文件;
- 手动删掉项目目录下的
bin-debug、bin-release文件夹,还有.metadata里的缓存(记得备份重要文件); - 重启Flash Builder,重新执行Export Release Build,过程中别中断或者切后台搞别的。
3. 排查Java和AIR SDK的兼容性
你更新了Java,这可能和AIR 29的签名工具不兼容——AIR 29对Java 8的兼容性最好,新Java版本可能会有冲突:
- 给Flash Builder指定Java 8:找到Flash Builder安装目录的
eclipse.ini,添加两行参数指向Java 8的javaw.exe,比如:-vm C:\Program Files\Java\jdk1.8.0_291\bin\javaw.exe - 还可以试试重新下载AIR 29 SDK,替换掉你当前用的SDK,避免SDK里的签名工具(比如
adt.jar)损坏。
4. 手动验证APK签名,定位具体问题
构建完APK后,用apksigner手动检查:
- 找到Android SDK的
build-tools目录下的apksigner(比如build-tools/30.0.3/apksigner.bat),执行:
看输出的详细错误,比如是不是META-INF目录下的apksigner verify --verbose 你的APK路径.apkCERT.RSA、CERT.SF文件损坏,或者APK里有重复的签名文件。如果是,解压APK删掉META-INF下所有签名相关文件,重新签名。
5. 检查Google Play的签名要求
虽然之前正常,但Google Play偶尔会微调验证逻辑:
- 确认你开启了V2签名:AIR 29支持APK Signature Scheme v2,去Flash Builder的AIR Packaging高级选项里,勾选Use APK Signature Scheme v2(如果有这个选项),双重签名(V1+V2)更稳妥。
- 用
keytool -printcert -file CERT.RSA看看签名证书有没有过期,过期的话也会导致验证失败。
内容的提问来源于stack exchange,提问作者Karirya




