From b2b542e7cc6a79aba8cc3b846b4a9e49b80aeb13 Mon Sep 17 00:00:00 2001 From: Nullptr Date: Thu, 10 Nov 2022 22:55:39 +0800 Subject: [PATCH] Optimize build --- manager/build.gradle.kts | 4 ++-- manager/proguard-rules.pro | 11 +++++++++ .../org/lsposed/lspatch/ui/page/HomeScreen.kt | 2 +- .../lsposed/lspatch/util/LSPPackageManager.kt | 10 ++++---- .../org/lsposed/lspatch/util/ShizukuApi.kt | 23 ++++++------------- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/manager/build.gradle.kts b/manager/build.gradle.kts index 06e4345..f309073 100644 --- a/manager/build.gradle.kts +++ b/manager/build.gradle.kts @@ -80,7 +80,6 @@ afterEvaluate { } dependencies { - implementation(projects.hiddenapi.bridge) implementation(projects.patch) implementation(projects.services.daemonService) implementation(projects.share.android) @@ -92,7 +91,7 @@ dependencies { implementation(platform("androidx.compose:compose-bom:2022.10.00")) annotationProcessor("androidx.room:room-compiler:$roomVersion") - compileOnly("dev.rikka.hidden:stub:2.3.1") + compileOnly("dev.rikka.hidden:stub:3.4.3") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.customview:customview:1.2.0-alpha02") debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0") @@ -114,6 +113,7 @@ dependencies { implementation("com.google.code.gson:gson:2.10") implementation("dev.rikka.shizuku:api:12.2.0") implementation("dev.rikka.shizuku:provider:12.2.0") + implementation("dev.rikka.tools.refine:runtime:3.1.1") implementation("io.github.raamcosta.compose-destinations:core:$composeDestinationsVersion") implementation("me.zhanghai.android.appiconloader:appiconloader:1.5.0") implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.3") diff --git a/manager/proguard-rules.pro b/manager/proguard-rules.pro index 811ea6c..157b9a1 100644 --- a/manager/proguard-rules.pro +++ b/manager/proguard-rules.pro @@ -1,3 +1,14 @@ +-assumenosideeffects class kotlin.jvm.internal.Intrinsics { + public static void check*(...); + public static void throw*(...); +} +-assumenosideeffects class java.util.Objects { + public static ** requireNonNull(...); +} +-assumenosideeffects public class kotlin.coroutines.jvm.internal.DebugMetadataKt { + private static ** getDebugMetadataAnnotation(...) return null; +} + -keep class com.beust.jcommander.** { *; } -keep class org.lsposed.lspatch.Patcher$Options { *; } -keep class org.lsposed.lspatch.share.LSPConfig { *; } diff --git a/manager/src/main/java/org/lsposed/lspatch/ui/page/HomeScreen.kt b/manager/src/main/java/org/lsposed/lspatch/ui/page/HomeScreen.kt index 209d6a7..0b53e83 100644 --- a/manager/src/main/java/org/lsposed/lspatch/ui/page/HomeScreen.kt +++ b/manager/src/main/java/org/lsposed/lspatch/ui/page/HomeScreen.kt @@ -85,7 +85,7 @@ private fun ShizukuCard() { modifier = Modifier .fillMaxWidth() .clickable { - if (ShizukuApi.isBinderAvalable && !ShizukuApi.isPermissionGranted) { + if (ShizukuApi.isBinderAvailable && !ShizukuApi.isPermissionGranted) { Shizuku.requestPermission(114514) } } diff --git a/manager/src/main/java/org/lsposed/lspatch/util/LSPPackageManager.kt b/manager/src/main/java/org/lsposed/lspatch/util/LSPPackageManager.kt index 7aedd3c..12f7a7b 100644 --- a/manager/src/main/java/org/lsposed/lspatch/util/LSPPackageManager.kt +++ b/manager/src/main/java/org/lsposed/lspatch/util/LSPPackageManager.kt @@ -4,7 +4,9 @@ import android.annotation.SuppressLint import android.content.Intent import android.content.pm.ApplicationInfo import android.content.pm.PackageInstaller +import android.content.pm.PackageInstallerHidden.SessionParamsHidden import android.content.pm.PackageManager +import android.content.pm.PackageManagerHidden import android.net.Uri import android.os.Parcelable import android.util.Log @@ -15,7 +17,7 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile -import hidden.HiddenApiBridge +import dev.rikka.tools.refine.Refine import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlinx.parcelize.Parcelize @@ -84,9 +86,9 @@ object LSPPackageManager { withContext(Dispatchers.IO) { runCatching { val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL) - var flags = HiddenApiBridge.PackageInstaller_SessionParams_installFlags(params) - flags = flags or 0x00000004 /* PackageManager.INSTALL_ALLOW_TEST */ or 0x00000002 /* PackageManager.INSTALL_REPLACE_EXISTING */ - HiddenApiBridge.PackageInstaller_SessionParams_installFlags(params, flags) + var flags = Refine.unsafeCast(params).installFlags + flags = flags or PackageManagerHidden.INSTALL_ALLOW_TEST or PackageManagerHidden.INSTALL_REPLACE_EXISTING + Refine.unsafeCast(params).installFlags = flags ShizukuApi.createPackageInstallerSession(params).use { session -> val uri = Configs.storageDirectory?.toUri() ?: throw IOException("Uri is null") val root = DocumentFile.fromTreeUri(lspApp, uri) ?: throw IOException("DocumentFile is null") diff --git a/manager/src/main/java/org/lsposed/lspatch/util/ShizukuApi.kt b/manager/src/main/java/org/lsposed/lspatch/util/ShizukuApi.kt index 8e5d507..ffafa89 100644 --- a/manager/src/main/java/org/lsposed/lspatch/util/ShizukuApi.kt +++ b/manager/src/main/java/org/lsposed/lspatch/util/ShizukuApi.kt @@ -9,6 +9,7 @@ import android.os.SystemProperties import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue +import dev.rikka.tools.refine.Refine import rikka.shizuku.Shizuku import rikka.shizuku.ShizukuBinderWrapper import rikka.shizuku.SystemServiceHelper @@ -28,31 +29,22 @@ object ShizukuApi { private val packageInstaller: PackageInstaller by lazy { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - PackageInstaller::class.java.getConstructor( - IPackageInstaller::class.java, - String::class.java, - String::class.java, - Int::class.javaPrimitiveType - ).newInstance(iPackageInstaller, "com.android.shell", null, 0) + Refine.unsafeCast(PackageInstallerHidden(iPackageInstaller, "com.android.shell", null, 0)) } else { - PackageInstaller::class.java.getConstructor( - IPackageInstaller::class.java, - String::class.java, - Int::class.javaPrimitiveType - ).newInstance(iPackageInstaller, "com.android.shell", 0) + Refine.unsafeCast(PackageInstallerHidden(iPackageInstaller, "com.android.shell", 0)) } } - var isBinderAvalable = false + var isBinderAvailable = false var isPermissionGranted by mutableStateOf(false) fun init() { Shizuku.addBinderReceivedListenerSticky { - isBinderAvalable = true + isBinderAvailable = true isPermissionGranted = Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED } Shizuku.addBinderDeadListener { - isBinderAvalable = false + isBinderAvailable = false isPermissionGranted = false } } @@ -60,8 +52,7 @@ object ShizukuApi { fun createPackageInstallerSession(params: PackageInstaller.SessionParams): PackageInstaller.Session { val sessionId = packageInstaller.createSession(params) val iSession = IPackageInstallerSession.Stub.asInterface(iPackageInstaller.openSession(sessionId).asShizukuBinder()) - val constructor by lazy { PackageInstaller.Session::class.java.getConstructor(IPackageInstallerSession::class.java) } - return constructor.newInstance(iSession) + return Refine.unsafeCast(PackageInstallerHidden.SessionHidden(iSession)) } fun isPackageInstalledWithoutPatch(packageName: String): Boolean {