From 2e1eb0f12b6be0e97463d4ec8bc28ea001a8b4e1 Mon Sep 17 00:00:00 2001 From: 5ec1cff Date: Tue, 16 Jul 2024 19:00:09 +0800 Subject: [PATCH] fix A12 compatibility --- .../github/a13e300/tricky_store/keystore/CertHack.java | 2 +- .../src/main/java/io/github/a13e300/tricky_store/util.kt | 9 +++++++++ .../main/java/android/content/pm/IPackageManager.java | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/service/src/main/java/io/github/a13e300/tricky_store/keystore/CertHack.java b/service/src/main/java/io/github/a13e300/tricky_store/keystore/CertHack.java index e676235..db9b5a1 100644 --- a/service/src/main/java/io/github/a13e300/tricky_store/keystore/CertHack.java +++ b/service/src/main/java/io/github/a13e300/tricky_store/keystore/CertHack.java @@ -436,7 +436,7 @@ public final class CertHack { var dg = MessageDigest.getInstance("SHA-256"); for (int i = 0; i < size; i++) { var name = packages[i]; - var info = pm.getPackageInfo(name, PackageManager.GET_SIGNATURES, uid / 100000); + var info = UtilKt.getPackageInfoCompat(pm, name, PackageManager.GET_SIGNATURES, uid / 100000); ASN1Encodable[] arr = new ASN1Encodable[2]; arr[ATTESTATION_PACKAGE_INFO_PACKAGE_NAME_INDEX] = new DEROctetString(packages[i].getBytes(StandardCharsets.UTF_8)); diff --git a/service/src/main/java/io/github/a13e300/tricky_store/util.kt b/service/src/main/java/io/github/a13e300/tricky_store/util.kt index 4327020..2fa785a 100644 --- a/service/src/main/java/io/github/a13e300/tricky_store/util.kt +++ b/service/src/main/java/io/github/a13e300/tricky_store/util.kt @@ -1,5 +1,6 @@ package io.github.a13e300.tricky_store +import android.content.pm.IPackageManager import android.os.Build import android.os.SystemProperties @@ -38,3 +39,11 @@ fun String.convertPatchLevel(long: Boolean) = kotlin.runCatching { if (long) l[0].toInt() * 10000 + l[1].toInt() * 100 + l[2].toInt() else l[0].toInt() * 100 + l[1].toInt() }.onFailure { Logger.e("invalid patch level $this !", it) }.getOrDefault(202404) + +fun IPackageManager.getPackageInfoCompat(name: String, flags: Long, userId: Int) = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + getPackageInfo(name, flags, userId) + } else { + getPackageInfo(name, flags.toInt(), userId) + } + diff --git a/stub/src/main/java/android/content/pm/IPackageManager.java b/stub/src/main/java/android/content/pm/IPackageManager.java index f495383..21e8327 100644 --- a/stub/src/main/java/android/content/pm/IPackageManager.java +++ b/stub/src/main/java/android/content/pm/IPackageManager.java @@ -7,6 +7,8 @@ public interface IPackageManager { PackageInfo getPackageInfo(String packageName, long flags, int userId); + PackageInfo getPackageInfo(String packageName, int flags, int userId); + class Stub { public static IPackageManager asInterface(IBinder binder) { throw new RuntimeException("");