perf: compat android17 api

This commit is contained in:
二刺螈
2026-03-27 21:37:50 +08:00
parent 179e35bdc1
commit 40de96e4bb
5 changed files with 30 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ package li.songe.gkd.shizuku
import android.Manifest
import android.content.pm.IPackageManager
import android.content.pm.IPackageManagerCompat
import android.content.pm.PackageInfo
import li.songe.gkd.META
import li.songe.gkd.app
@@ -26,7 +27,9 @@ class SafePackageManager(private val value: IPackageManager) {
flags: Int,
userId: Int = currentUserId,
): List<PackageInfo> = safeInvokeShizuku {
if (AndroidTarget.TIRAMISU) {
if (AndroidTarget.CINNAMON_BUN) {
(value as IPackageManagerCompat).getInstalledPackages(flags.toLong(), userId).list
} else if (AndroidTarget.TIRAMISU) {
value.getInstalledPackages(flags.toLong(), userId).list
} else {
value.getInstalledPackages(flags, userId).list

View File

@@ -31,4 +31,8 @@ object AndroidTarget {
/** Android 16+ */
@get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.BAKLAVA)
val BAKLAVA = Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA
/** Android 17+ */
@get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.CINNAMON_BUN)
val CINNAMON_BUN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.CINNAMON_BUN
}

View File

@@ -3,9 +3,9 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
ext {
set("android.namespace", "li.songe.gkd")
set("android.buildToolsVersion", "36.1.0")
set("android.compileSdk", 36)
set("android.targetSdk", 36)
set("android.buildToolsVersion", "37.0.0")
set("android.compileSdk", 37)
set("android.targetSdk", 37)
set("android.minSdk", 26)
set("android.javaVersion", JavaVersion.VERSION_11)
set("kotlin.jvmTarget", JvmTarget.JVM_11)

View File

@@ -0,0 +1,12 @@
package android.content.pm;
import dev.rikka.tools.refine.RefineAs;
/**
* @noinspection unused
*/
@RefineAs(IPackageManager.class)
public interface IPackageManagerCompat {
// android 17+
PackageInfoList getInstalledPackages(long flags, int userId);
}

View File

@@ -0,0 +1,7 @@
package android.content.pm;
/**
* @noinspection unused
*/
public class PackageInfoList extends ParceledListSlice<PackageInfo> {
}