keytool
因为现在做海外推广,用到了谷歌分析和firebase,我就在优达学城学习这个工具。
需要把把firebase添加到我的app的过程中,需要产生sha1.我就按文档操作报错。
1.java.lang.Exception:密钥库文件不存在:密钥库
获取得到SHA1值,用cmd(或android studio的终端工具)命令获取SHA1值,出现如图异常:
看看系统用户下.android文件夹debug.keystore文件是否丢失,如果没有debug.keystore文件,看下文:
2.具体解决步骤
2.1生成证书
在终端工具输入或窗口运行窗口输入(窗口键+ R输入CMD):
参数说明:
- -genk·eypair:生成一对非对称密钥;
- -alias:指定密钥对的别名,该别名是公开的;
- -keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
- -keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000
注意:
1.密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等
2."名字与姓氏"应该是输入域名,而不是我们的个人姓名,其他的可以不填
填写注册信息,注意要求设置密码,密码请记录下来以便后续获取SHA1使用(注册内容可以随意填写)
2.2验证debug.keystore是否生成
再次填写注册信息,出现如图异常:
2.3查看证书
keytool -list -keystore debug.keystore
2.4管理密钥和证书工具
C:\Users\WQBin> keytool -help 密钥和证书管理工具 命令: -certreq 生成证书请求 -changealias 更改条目的别名 -delete 删除条目 -exportcert 导出证书 -genkeypair 生成密钥对 -genseckey 生成密钥 -gencert 根据证书请求生成证书 -importcert 导入证书或证书链 -importpass 导入口令 -importkeystore 从其他密钥库导入一个或所有条目 -keypasswd 更改条目的密钥口令 -list 列出密钥库中的条目 -printcert 打印证书内容 -printcertreq 打印证书请求的内容 -printcrl 打印 CRL 文件的内容 -storepasswd 更改密钥库的存储口令 使用 "keytool -command_name -help" 获取 command_name 的用法
2.5导出到证书文件
范例:将名为 debug.keystore的证书库中别名为 androiddebugkey的证书条目导出到证书文件test.crt中
Cmd代码
运行结果:在操作系统的用户目录(gacl)下生成了一个"test.crt"的文件,如下图所示:
2.7、导入证书
范例:将证书文件test.crt导入到名为test_cacerts的证书库中
Cmd代码:
keytool -export -alias androiddebugkey -file test.crt -keystore debug.keystore
2.8、查看证书信息
范例:查看证书文件test.crt的信息
Cmd代码:
大多数人都以为是才智成就了科学家,他们错了,是品格。---爱因斯坦