標籤:android style blog io ar color os sp for
判斷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簽名