获取apk的签名MD5值
2014-12-23 16:03
148 查看
我们在发布应用的时候,需要通过keystore文件对apk包进行签名,才能发布到市场上。但是,由于apk包很容易被反编译,然后重新签名之后,再发布到市场上。所以应用可以在启动的时候,获取当前apk包本身的签名md5值,与自己的的正式的签名文件的md5值比对,如果不一致,可以判定该apk包是盗版的,可能其他人反编译后重新打包上传,进而给出提示等等。
public static String getApkSignatureMD5(Context context, String apkPath) throws Exception { Class clazz = Class.forName("android.content.pm.PackageParser"); Method parsePackageMethod = clazz.getMethod("parsePackage", File.class, String.class, DisplayMetrics.class, int.class); Object packageParser = clazz.getConstructor(String.class).newInstance(""); Object packag = parsePackageMethod.invoke(packageParser, new File(apkPath), null, context.getResources().getDisplayMetrics(), 0x0004); Method collectCertificatesMethod = clazz.getMethod( "collectCertificates", Class.forName("android.content.pm.PackageParser$Package"), int.class); collectCertificatesMethod.invoke(packageParser, packag, PackageManager.GET_SIGNATURES); Signature mSignatures[] = (Signature[]) packag.getClass().getField("mSignatures").get(packag); Signature apkSignature = mSignatures.length > 0 ? mSignatures[0] : null; if (apkSignature != null) { // 说明:没有提供md5的具体实现 return Md5Utils.md5(apkSignature.toCharsString()); } return null; }
相关文章推荐
- 获取APK的签名MD5值
- Android获取apk签名指纹的md5值(防止重新被打包)的实现方法
- jni中调用java方法获取当前apk的签名文件md5值
- 获取apk签名指纹的md5值 防止重新被打包
- jni中调用java方法获取当前apk的签名文件md5值
- 获取已安装或未安装的apk签名
- 获取apk证书MD5值的方法
- 获取android应用签名证书(打包APK用到的那个文件)的SHA1,MD5,SHA256值
- 获取APK文件的签名信息,反射实现
- 获取已安装或未安装的apk签名
- 获取apk文件的签名所有者、发行者和key
- 获取,区分不同apk程序签名的方法
- 获取APK文件的签名信息,反射实现
- 获取apk证书MD5值的方法(JDK的keytool命令)
- Android 获取apk签名
- 获取apk签名信息
- 系统签名APK,让应用获取系统级权限,后能强制开关GPS
- 获取android应用签名证书(打包APK用到的那个文件)的SHA1,MD5,SHA256值
- Android:获取APK签名信息 .
- android获取APK签名信息及MD5指纹