以前都是直接安装一个开发者助手获取的,但是呢,开发者助手也有bug啊,应用宝下载安装,在我的红米手机上发现打不开,于是我又去酷安网下载了一个,可以打开了,但是有问题,没法获取到完整的root权限,检测不准确,当前应用根本看不到东西,于是只能另想办法了,老套路就是百度,然后照着搞,发现很多都是直接 keytool 命令,但是我这里报 'keytool' 不是内部或外部命令 也不是可运行的程序,这个不是什么大问题,网上很多解决方案,但是本人比较懒,太麻烦的操作一般懒得做,但是又没办法,所以搜集了一下各路解决方案,总结了一下快速直接且方便的方案,记录下来,以后可以直接用
首先获取测试版的SHA1值,就很简单,一般最简单的就是在AndroidStudio上,右边菜单,点击,点击signingReport就行了,如下图
as直接就给你打印出来了,很方便,但是如果要获取签名的SHA1值呢,看到上面的路径了吗,其实就是用keytool命令然后附带上我们的jks就行了,这个方法测试正式都通用,有的可能直接敲命令就行了,但是肯定很多人也跟我一样,提示不是内部或外部命令,有的时候很久没搞过就会忘记,虽然百度一下的事,但是也浪费自己的时间,所以还是整理一下好,如下图
进入到jdk路径里,在使用命令就行了,测试的jks路径就是 C:UsersLiuZhen.androiddebug.keystore
还有一个办法就是用代码去获取了,不过个人还是觉得一步到位的好,下面是获取代码,在高德那复制的
public String sHA1(){ try { PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES); byte[] cert = info.signatures[0].toByteArray(); MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(cert); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < publicKey.length; i++) { String appendString = Integer.toHexString(0xFF & publicKey[i]) .toUpperCase(Locale.US); if (appendString.length() == 1) hexString.append("0"); hexString.append(appendString); hexString.append(":"); } String result = hexString.toString(); return result.substring(0, result.length()-1); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; }
不过有一部分项目是配置的包名,配置文件中切换测试正式,所以此时这些方法可能并不能保证是正式还是测试,所以我一般为了准确性,都是用命令去获取的
直接进入到 cd "C:Program FilesAndroidAndroid Studiojrein" 目录,然后 keytool -list -v -keystore c:/xxx.jks 也就是你的正式签名和测试签名,这样就可以保证不会弄混