修复 6.0 以下设备读取 DSA 签名会闪退的问题

This commit is contained in:
juntao
2021-11-19 17:47:53 +08:00
parent 9df38387f2
commit 7c55f71bb5

View File

@ -263,9 +263,13 @@ public class PackageUtils {
if (!TextUtils.isEmpty(v1SignaturePublicKey)) {
return v1SignaturePublicKey.equals(installedPublicKey1) || v1SignaturePublicKey.equals(installedPublicKey2);
}
String v1SignaturePublicKeyFromSystemApi = getV1SignatureFromFileBySystemApi(apkFilePath);
if (!TextUtils.isEmpty(v1SignaturePublicKeyFromSystemApi)) {
return v1SignaturePublicKeyFromSystemApi.equals(installedPublicKey1);
}
return getV2SignatureFromFile(apkFilePath).equals(installedPublicKey1);
} catch (Exception e) {
} catch (Throwable e) {
e.printStackTrace();
}
return false;
@ -302,6 +306,13 @@ public class PackageUtils {
}
}
/**
* 用系统 API 获取 V1 签名 (最后一招了) (大文件可能会 ANR但 ANR 一会可用的话比不能用好点!)
*/
private static String getV1SignatureFromFileBySystemApi(String apkFilePath) {
return parseSignature(HaloApp.getInstance().getPackageManager().getPackageArchiveInfo(apkFilePath, PackageManager.GET_SIGNATURES).signatures[0].toByteArray())[0];
}
/**
* 从 APK 文件中获取 V2 签名公钥
*