Azure Pipelines使用jarsigner签名Android AAB报“请指定别名”错误
报错原因
- jarsigner的命令语法要求,指定密钥库后必须显式传入对应密钥的别名参数,才能选中密钥库中对应的密钥对执行签名操作。当前命令仅指定了keystore路径、存储密码,未补充别名参数,因此触发该报错。该报错与是否指定keystore无关:一个密钥库可存储多个独立的密钥条目,别名是单条密钥的唯一标识,必须指定别名才能确认要使用的签名密钥。
修复步骤
- 先查询keystore对应的密钥别名,本地执行以下命令即可:
keytool -list -v -keystore releaskey.keystore
输入密钥库密码后,输出内容中的别名字段即为需要传入的参数值。 - 修改Azure DevOps流水线的YAML配置,在jarsigner命令末尾追加别名参数,修改后的示例如下:
- task: CmdLine@2 displayName: 'Signing and aligning AAB file(s) **/*.aab' inputs: script: 'jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore releaskey.keystore -storepass $(KeystorePassword) -keypass $(KeystorePassword) /Users/runner/work/1/s/Platforms/MobileApp.Android/obj/Release/android/bin/mobileapp.aab 替换为你的实际密钥别名'
注意将命令末尾的
替换为你的实际密钥别名改为上一步查询到的真实别名即可正常执行。
- 可选优化:可将密钥别名存入Azure DevOps的保密变量例如
$(KeystoreAlias),在命令中直接引用变量,避免硬编码敏感信息。
内容的提问来源于stack exchange,提问作者Damien Doumer
相关产品推荐
相关产品推荐

