首页 > 代码库 > Android 判断debug签名和release签名

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

 



Android 判断debug签名和release签名