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;
}

 



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。