如何使用Windows-MY类型密钥库通过apksigner实现APK v2签名适配Android 11
适配APK Signature Scheme v2签名的可行方案
方案1:导出密钥为PFX格式(操作最简单,优先推荐)
如果你的证书允许导出私钥,这是最稳妥的实现方式:
- 按下Win+R输入
certmgr.msc打开Windows证书管理器,在「个人 > 证书」路径下找到用于签名的代码签名证书,右键依次选择「所有任务 > 导出」,导出时勾选「是,导出私钥」,格式选择PFX(PKCS#12),设置访问密码后保存为sign.pfx文件。 - 直接使用apksigner调用PFX密钥库完成签名,签名命令如下:
apksigner sign --ks sign.pfx --ks-type PKCS12 --ks-pass pass:你设置的PFX密码 --out signed.apk input.apk
- 签名完成后可执行以下命令验证v2签名是否生效:
apksigner verify -v signed.apk
输出中存在Verified using v2 scheme (APK Signature Scheme v2): true即代表符合Android 11的适配要求。
方案2:直接调用Windows-MY密钥库(无需导出私钥,适合证书限制导出的场景)
apksigner基于Java开发,支持通过SunMSCAPI提供方直接访问Windows系统密钥库,无需导出证书:
- 先执行以下命令查询Windows-MY密钥库中你的证书别名,后续签名需要用到该参数:
keytool -list -storetype Windows-MY -providerName SunMSCAPI
- 执行apksigner签名命令,替换对应的参数即可:
apksigner sign --ks NONE --ks-type Windows-MY --ks-provider-name SunMSCAPI --ks-pass pass:你的密钥访问密码(无单独密码则填Windows账户密码) --ks-key-alias 上一步查询到的证书别名 --out signed.apk input.apk
- 若运行时提示私钥访问错误,可在证书管理器中对应证书右键选择「所有任务 > 管理私钥」,添加当前Windows用户的读取权限即可。
内容的提问来源于stack exchange,提问作者imodeGowas
相关产品推荐
相关产品推荐

