Android PackageManager 对同一个 apk 返回不同的签名

问题描述 投票:0回答:1

我有一个 Android 应用程序,我想在运行时验证其签名。这是我的代码:

    @SuppressLint("PackageManagerGetSignatures")
    private boolean validSignature(Context context) {
        try {
            PackageInfo info = context.getPackageManager()
                    .getPackageInfo(context.getPackageName(),
                            PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                final String currentSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT).trim();
                for (String validSig : validSignatureList)
                    if (validSig.equals(currentSignature))
                        return true;
            }
        } catch (Throwable ignored) {
        }
        return false;
    }

对于同一个 APK,在某些设备上,APK 已通过验证,而在某些设备上则未经过验证。当我调试代码时,

signature.toByteArray()
在不同设备上有不同的值。我缺少什么以及我可以做什么来解决它?

sha android-package-managers android-app-signing
1个回答
0
投票

你能找到解决这个问题的方法吗?我也有同样的问题:(

© www.soinside.com 2019 - 2024. All rights reserved.