Optimize build

This commit is contained in:
Nullptr 2022-11-10 22:55:39 +08:00
parent 319a21f103
commit b2b542e7cc
No known key found for this signature in database
5 changed files with 27 additions and 23 deletions

View File

@ -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")

View File

@ -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 { *; }

View File

@ -85,7 +85,7 @@ private fun ShizukuCard() {
modifier = Modifier
.fillMaxWidth()
.clickable {
if (ShizukuApi.isBinderAvalable && !ShizukuApi.isPermissionGranted) {
if (ShizukuApi.isBinderAvailable && !ShizukuApi.isPermissionGranted) {
Shizuku.requestPermission(114514)
}
}

View File

@ -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<SessionParamsHidden>(params).installFlags
flags = flags or PackageManagerHidden.INSTALL_ALLOW_TEST or PackageManagerHidden.INSTALL_REPLACE_EXISTING
Refine.unsafeCast<SessionParamsHidden>(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")

View File

@ -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 {