• Android 判断debug签名和release签名


    判断debug签名和release签名

    思路是:
    可以获取到package里的签名信息Signature对象,在Signature对象里有hashCode()方法,可以用来标识Signature对象。
    目前我采用的方法是先运行release版的app,然后记录下该包里Signature对象的hashcode;在程序里判断取到的Signature对象的hashcode是否与该值相同,相同就是release,否则是debug

    public boolean checkAppReleaseVersion() {
        try {
            //获得package里的签名信息Signature对象
            String packageName = context.getPackageName();
            int flags = PackageManager.GET_SIGNATURES;
    
            PackageInfo packageInfo = pm.getPackageInfo(packageName, flags);
    
            Signature[] signatures = packageInfo.signatures;
            
            //取第一个加载的activity签名
            byte[] cert = signatures[0].toByteArray();
    
            String strResult = "";
    
            //转换成MD5字符来判断
            MessageDigest md;
    
            md = MessageDigest.getInstance("MD5");
            md.update(cert);
            for (byte b : md.digest()) {
                //byte转成16进制
                strResult += Integer.toString(b & 0xff, 16);
            }
            strResult = strResult.toUpperCase();
            //debug
            if ("DE421D82D4BBF9042886E72AA31FE22".toUpperCase().equals(strResult)) {
                return false;
            }
            //relaease
            if ("C96155C3DAD4CA1069808FBAC813A69".toUpperCase().equals(strResult)) {
                return true;
            }
        } catch (NoSuchAlgorithmException ex) {
            return false;
        } catch (PackageManager.NameNotFoundException ex) {
            return false;
        }
        return false;
    }



  • 相关阅读:
    python 之os模块用法大全
    web自动化测试常用的定位方式有哪些?
    Jenkins
    吴恩达机器学习笔记:如何debug一个学习算法?
    贝叶斯网络
    leetcode-32. Longest Valid Parentheses
    leetcode4 median Of two sorted array
    leetcode21
    vs2017问题集锦
    LIS
  • 原文地址:https://www.cnblogs.com/rfheh/p/4164802.html
Copyright © 2020-2023  润新知