Android 获取开发&测试 SHA1值

以前都是直接安装一个开发者助手获取的,但是呢,开发者助手也有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 也就是你的正式签名和测试签名,这样就可以保证不会弄混

原文地址:https://www.cnblogs.com/LiuZhen/p/12604657.html