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;
}
时间: 2024-10-16 10:16:08

Android 判断debug签名和release签名的相关文章

Android Studio debug使用release的签名

当我们在做微信微博sdk分享的时候调试非常麻烦,因为要使用对应的签名版本才能调用sdk成功. 当我们使用AndroidStudio的Gradle之后会很简单的解决这个问题. 1.我们把签名文件放到工程根目录下(这样做是为了保持路径的统一) 2.在Gradle中引入如下代码: //配置keystore签名 signingConfigs { release { storeFile file("TimeHutKeyStore") storePassword "joyful888&q

AndroidStudio 使用Release签名进行Debug

extends:http://blog.csdn.net/h3c4lenovo/article/details/42011887 , http://www.linuxidc.com/Linux/2015-12/126430.htm 当我们在做微信微博sdk分享的时候调试非常麻烦,因为要使用对应的签名版本才能调用sdk成功. 当我们使用AndroidStudio的Gradle之后会很简单的解决这个问题. 1.我们把签名文件放到工程根目录下(这样做是为了保持路径的统一) 2.在Gradle中引入如下

android 判断Apk是否签名和 签名是否一致

判断Apk是否签名 用命令:jarsigner -verify -verbose -certs <apk文件> 如果有Android Debug字樣就是debug 如果已经签名: [证书的有效期为13-8-31 下午2:31至41-1-16 下午2:31] 判断Apk签名是否一致      jdk 需要安装: 想查demo.apk所使用的签名的fingerprint,可以这样做: 1. 查找apk里的rsa文件 Windows 平台: > jar tfdemo.apk |findstr

Android Studio配置debug下使用正式签名调试

今天在集成微信分享功能的时候,按照官方文档一步一步来写.这是向微信发送我们想要分享的内容,各类的方法大家去看文档,代码如下: IWXAPI api = MyApplication.getInstance().getWxApi(); if (!api.isWXAppInstalled()) { ToastFactory.getToast(activity, "您还未安装微信客户端").show(); return; } WXWebpageObject webpage = new WXWe

android自动打包方法(ant+proguard+签名)

前段时间做了一个android的网游项目,现在优化减少体积和防止别人反编译,需要把编译后.class进行混淆,开始在网上看了一些关于 ProGuard的介绍,基本上都是使用ADT自带的打包方式,那个打包方式太慢了,还要手工输密码,一个字烦. 于是开始寻找ant+proguard+签名的打包方式,遗憾的是资料不是缺手就是断脚. 好吧,看来得食自己了,!@#¥@#!@#!@##¥@#¥!@#@ 转眼一周,我++,终于把东西搞出来 ps:我们项目还有一个特殊需求,要把版本号,推广ID打到包里去,方便做

Android签名机制之---签名过程具体解释

一.前言 又是过了好长时间,没写文章的双手都有点难受了.今天是圣诞节,还是得上班.由于前几天有一个之前的同事,在申请微信SDK的时候,遇到签名的问题,问了我一下,结果把我难倒了..我说Android中的签名大家都会熟悉的,就是为了安全,不让别人改动你的apk,可是我们真正的有了解多少呢?所以准备两篇文章好好介绍一下Android中签名机制. 在说道Android签名之前,我们须要了解的几个知识点 1.数据摘要(数据指纹).签名文件,证书文件 2.jarsign工具签名和signapk工具签名 3

[转载] Android签名机制之—签名过程详解

本文转载自: http://www.wjdiankong.cn/android%E7%AD%BE%E5%90%8D%E6%9C%BA%E5%88%B6%E4%B9%8B-%E7%AD%BE%E5%90%8D%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/ 一.前言 又是过了好长时间,没写文章的双手都有点难受了.今天是圣诞节,还是得上班.因为前几天有一个之前的同事,在申请微信SDK的时候,遇到签名的问题,问了我一下,结果把我难倒了..我说Android中的签名大家都会熟悉

Android签名机制之---签名过程详解

一.前言 又是过了好长时间,没写文章的双手都有点难受了.今天是圣诞节,还是得上班.因为前几天有一个之前的同事,在申请微信SDK的时候,遇到签名的问题,问了我一下,结果把我难倒了..我说Android中的签名大家都会熟悉的,就是为了安全,不让别人修改你的apk,但是我们真正的有了解多少呢?所以准备两篇文章好好介绍一下Android中签名机制. 在说道Android签名之前,我们需要了解的几个知识点 1.数据摘要(数据指纹).签名文件,证书文件 2.jarsign工具签名和signapk工具签名 3

Android反编译(三)之重签名

Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Android系统不会安装一个没有数字证书的应用程序: b.Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证: c.数字证书都是存在有效期的,Android只是在应用程序安装的时候才会检查证书的有效期.如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能. d.A