如何检查APK/AAB二进制文件是否使用调试模式签名?
APK/AAB 调试模式签名校验流程
以下校验方法可独立或组合使用,组合校验准确率可达100%:
1. 签名证书特征匹配校验(核心校验逻辑)
Android SDK 生成的默认调试签名证书(debug.keystore)有固定特征,直接匹配即可判定:
- 提取APK签名信息命令:
keytool -printcert -jarfile <安装包路径>.apk - 提取AAB签名信息命令:
jarsigner -verify -verbose -certs <安装包路径>.aab - 匹配以下任意固定特征即可判定为调试签名:
- 证书SHA1指纹为
B4:0F:26:07:19:12:A7:39:1D:95:82:76:33:69:9C:12:27:C5:76:16 - 证书SHA256指纹为
A3:17:08:33:3C:2B:66:4E:02:D5:62:30:AB:16:9B:EC:6E:23:15:7D:90:AB:90:68:9D:3B:62:10:2F:86:8D:3F - 证书所有者(Owner)和颁发者(Issuer)均为
CN=Android Debug, O=Android, C=US
- 证书SHA1指纹为
2. AndroidManifest debuggable 属性校验
调试模式打包的安装包默认会在清单文件中开启debuggable属性,这也是Google Play拒审的明确判定条件:
- APK校验命令:
aapt dump badging <安装包路径>.apk | grep 'debuggable',返回debuggable='true'即为调试包 - AAB校验命令:
bundletool dump manifest --bundle <安装包路径>.aab --xpath /manifest/application/@android:debuggable,返回值为true即为调试包
注意:该校验可覆盖开发者自定义debug.keystore的漏判场景,即使签名特征不匹配默认调试证书,只要debuggable属性为true就会被Play商店拒审。
3. 自动化工具集成建议
- 优先同时执行上述两类校验,任意一项命中就直接拦截
- 无需额外校验发布签名属性,只要命中调试特征就终止发布流程
内容的提问来源于stack exchange,提问作者Tristan
相关产品推荐
相关产品推荐

