Flutter生成SHA-1证书指纹时执行Keytool命令返回Illegal Option错误
Flutter开发中Keytool执行报Illegal Options错误的解决方案
报错核心诱因
- 官方文档提供的命令中,末尾的
\是Unix/Linux/macOS系统下的命令换行续行标记,Windows CMD、PowerShell环境下直接复制带这个反斜杠的命令,会将其识别为非法选项,直接触发Illegal Options报错 - 不同终端的环境变量语法不兼容,命令路径没有适配当前终端的解析规则
- keytool可执行文件未正确配置到系统Path环境变量,调用时出现参数识别异常
分终端可直接执行的修正命令
- Windows CMD 环境
删除命令中用于换行的反斜杠,使用CMD原生的环境变量语法,执行:keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
若提示找不到keystore文件,将路径替换为本地debug.keystore的绝对路径,例如C:\Users\你的系统用户名\.android\debug.keystore - Windows PowerShell 环境
替换PowerShell不识别的CMD环境变量语法,执行:keytool -list -v -alias androiddebugkey -keystore $env:USERPROFILE\.android\debug.keystore - macOS / Linux 环境
若直接运行带反斜杠的换行命令报错,删除续行符写成单行,使用Unix路径规则执行:keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
配套排查注意事项
- 执行命令时若弹出输入密钥库密码的提示,Flutter默认debug签名的密钥库密码为
android,输入时终端不会显示输入字符,输完直接按回车即可 - 若提示“keytool不是内部或外部命令”,将Android Studio内置JBR的bin目录(常见路径为
Android Studio安装目录\jbr\bin)添加到系统Path环境变量,重启终端后重新执行命令 - 跨系统复制命令时,若原命令的反斜杠后残留空格,在Unix环境下运行也会触发参数错误,需要删掉反斜杠和后续空格,写成单行命令执行
- 不要在命令行中手动给keystore路径加多余的引号,部分终端版本会将引号识别为参数的一部分,触发选项解析错误
内容的提问来源于stack exchange,提问作者Neail
相关产品推荐
相关产品推荐

