拿到一个APK,怎么准确地判断它是debug签名还是release签名?

时间:2022-12-22 09:07:28
衍生问题:很多地方写着debug签名的APK不能上传到google play,它是怎么判断的?

9 个解决方案

#1


不好判断啊,你直接问他吧

#2


用命令:jarsigner -verify -verbose -certs <apk文件>
如果有Android Debug字樣就是debug

#3


引用 楼主 heartbeast 的回复:
衍生问题:很多地方写着debug签名的APK不能上传到google play,它是怎么判断的?


签名的方式无非是shared、releasekey、platform、media

是否可以考虑 获取该应用对应的 系统代码的运行的UID/ GID来判别  本人没有实践过,只是一种思路

源码frameworks\base\core\java\android\os\Process.java中专门定义了一些UID的定义数值


    /**
     * Defines the UID/GID under which system code runs.
     */
    public static final int SYSTEM_UID = 1000;


    /**
     * Defines the UID/GID for the user shell.
     * @hide
     */
    public static final int SHELL_UID = 2000;

    /**
     * Defines the start of a range of UIDs (and GIDs), going from this
     * number to {@link #LAST_APPLICATION_UID} that are reserved for assigning
     * to applications.
     */
    public static final int FIRST_APPLICATION_UID = 10000;
    ......

#4


引用 3 楼 ConnectionUtils 的回复:
是否可以考虑 获取该应用对应的 系统代码的运行的UID/ GID来判别  本人没有实践过,只是一种思路
......
[/code]


哥们,完全看不懂啊,系统代码的运行的UID/ GID和APK的签名有什么关系?能详细说说吗?

#5


引用 2 楼 iltgcl 的回复:
用命令:jarsigner -verify -verbose -certs <apk文件>
如果有Android Debug字樣就是debug


但是存在这么一种可能,某个APK是自己私钥签名的,但字符串这里用的就是CN=Android Debug, O=Android, C=US
所以看字符串的方法不能百分比准确

#6


引用 5 楼 heartbeast 的回复:
Quote: 引用 2 楼 iltgcl 的回复:

用命令:jarsigner -verify -verbose -certs <apk文件>
如果有Android Debug字樣就是debug


但是存在这么一种可能,某个APK是自己私钥签名的,但字符串这里用的就是CN=Android Debug, O=Android, C=US
所以看字符串的方法不能百分比准确

这个就没办法了,这些都是公开的,这样的奇葩可以忽略了

#7


google play是怎么判断的?

#8


您好 我现在也遇到这个问题  并且已经确定自己不是Debug版本,但是googleplay 就说我是可调式的APK

#9


public static boolean isApkDebugable(Context context) {
        try {
            ApplicationInfo info= context.getApplicationInfo();
                return (info.flags&ApplicationInfo.FLAG_DEBUGGABLE)!=0;
        } catch (Exception e) {
            
        }
        return false;
    }

#1


不好判断啊,你直接问他吧

#2


用命令:jarsigner -verify -verbose -certs <apk文件>
如果有Android Debug字樣就是debug

#3


引用 楼主 heartbeast 的回复:
衍生问题:很多地方写着debug签名的APK不能上传到google play,它是怎么判断的?


签名的方式无非是shared、releasekey、platform、media

是否可以考虑 获取该应用对应的 系统代码的运行的UID/ GID来判别  本人没有实践过,只是一种思路

源码frameworks\base\core\java\android\os\Process.java中专门定义了一些UID的定义数值


    /**
     * Defines the UID/GID under which system code runs.
     */
    public static final int SYSTEM_UID = 1000;


    /**
     * Defines the UID/GID for the user shell.
     * @hide
     */
    public static final int SHELL_UID = 2000;

    /**
     * Defines the start of a range of UIDs (and GIDs), going from this
     * number to {@link #LAST_APPLICATION_UID} that are reserved for assigning
     * to applications.
     */
    public static final int FIRST_APPLICATION_UID = 10000;
    ......

#4


引用 3 楼 ConnectionUtils 的回复:
是否可以考虑 获取该应用对应的 系统代码的运行的UID/ GID来判别  本人没有实践过,只是一种思路
......
[/code]


哥们,完全看不懂啊,系统代码的运行的UID/ GID和APK的签名有什么关系?能详细说说吗?

#5


引用 2 楼 iltgcl 的回复:
用命令:jarsigner -verify -verbose -certs <apk文件>
如果有Android Debug字樣就是debug


但是存在这么一种可能,某个APK是自己私钥签名的,但字符串这里用的就是CN=Android Debug, O=Android, C=US
所以看字符串的方法不能百分比准确

#6


引用 5 楼 heartbeast 的回复:
Quote: 引用 2 楼 iltgcl 的回复:

用命令:jarsigner -verify -verbose -certs <apk文件>
如果有Android Debug字樣就是debug


但是存在这么一种可能,某个APK是自己私钥签名的,但字符串这里用的就是CN=Android Debug, O=Android, C=US
所以看字符串的方法不能百分比准确

这个就没办法了,这些都是公开的,这样的奇葩可以忽略了

#7


google play是怎么判断的?

#8


您好 我现在也遇到这个问题  并且已经确定自己不是Debug版本,但是googleplay 就说我是可调式的APK

#9


public static boolean isApkDebugable(Context context) {
        try {
            ApplicationInfo info= context.getApplicationInfo();
                return (info.flags&ApplicationInfo.FLAG_DEBUGGABLE)!=0;
        } catch (Exception e) {
            
        }
        return false;
    }