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 { dependencies {
implementation(projects.hiddenapi.bridge)
implementation(projects.patch) implementation(projects.patch)
implementation(projects.services.daemonService) implementation(projects.services.daemonService)
implementation(projects.share.android) implementation(projects.share.android)
@ -92,7 +91,7 @@ dependencies {
implementation(platform("androidx.compose:compose-bom:2022.10.00")) implementation(platform("androidx.compose:compose-bom:2022.10.00"))
annotationProcessor("androidx.room:room-compiler:$roomVersion") 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.compose.ui:ui-tooling")
debugImplementation("androidx.customview:customview:1.2.0-alpha02") debugImplementation("androidx.customview:customview:1.2.0-alpha02")
debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0") debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0")
@ -114,6 +113,7 @@ dependencies {
implementation("com.google.code.gson:gson:2.10") implementation("com.google.code.gson:gson:2.10")
implementation("dev.rikka.shizuku:api:12.2.0") implementation("dev.rikka.shizuku:api:12.2.0")
implementation("dev.rikka.shizuku:provider: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("io.github.raamcosta.compose-destinations:core:$composeDestinationsVersion")
implementation("me.zhanghai.android.appiconloader:appiconloader:1.5.0") implementation("me.zhanghai.android.appiconloader:appiconloader:1.5.0")
implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.3") 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 com.beust.jcommander.** { *; }
-keep class org.lsposed.lspatch.Patcher$Options { *; } -keep class org.lsposed.lspatch.Patcher$Options { *; }
-keep class org.lsposed.lspatch.share.LSPConfig { *; } -keep class org.lsposed.lspatch.share.LSPConfig { *; }

View File

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

View File

@ -4,7 +4,9 @@ import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller
import android.content.pm.PackageInstallerHidden.SessionParamsHidden
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.content.pm.PackageManagerHidden
import android.net.Uri import android.net.Uri
import android.os.Parcelable import android.os.Parcelable
import android.util.Log import android.util.Log
@ -15,7 +17,7 @@ import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.asImageBitmap
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import hidden.HiddenApiBridge import dev.rikka.tools.refine.Refine
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
@ -84,9 +86,9 @@ object LSPPackageManager {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
runCatching { runCatching {
val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL) val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
var flags = HiddenApiBridge.PackageInstaller_SessionParams_installFlags(params) var flags = Refine.unsafeCast<SessionParamsHidden>(params).installFlags
flags = flags or 0x00000004 /* PackageManager.INSTALL_ALLOW_TEST */ or 0x00000002 /* PackageManager.INSTALL_REPLACE_EXISTING */ flags = flags or PackageManagerHidden.INSTALL_ALLOW_TEST or PackageManagerHidden.INSTALL_REPLACE_EXISTING
HiddenApiBridge.PackageInstaller_SessionParams_installFlags(params, flags) Refine.unsafeCast<SessionParamsHidden>(params).installFlags = flags
ShizukuApi.createPackageInstallerSession(params).use { session -> ShizukuApi.createPackageInstallerSession(params).use { session ->
val uri = Configs.storageDirectory?.toUri() ?: throw IOException("Uri is null") val uri = Configs.storageDirectory?.toUri() ?: throw IOException("Uri is null")
val root = DocumentFile.fromTreeUri(lspApp, uri) ?: throw IOException("DocumentFile 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.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import dev.rikka.tools.refine.Refine
import rikka.shizuku.Shizuku import rikka.shizuku.Shizuku
import rikka.shizuku.ShizukuBinderWrapper import rikka.shizuku.ShizukuBinderWrapper
import rikka.shizuku.SystemServiceHelper import rikka.shizuku.SystemServiceHelper
@ -28,31 +29,22 @@ object ShizukuApi {
private val packageInstaller: PackageInstaller by lazy { private val packageInstaller: PackageInstaller by lazy {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PackageInstaller::class.java.getConstructor( Refine.unsafeCast(PackageInstallerHidden(iPackageInstaller, "com.android.shell", null, 0))
IPackageInstaller::class.java,
String::class.java,
String::class.java,
Int::class.javaPrimitiveType
).newInstance(iPackageInstaller, "com.android.shell", null, 0)
} else { } else {
PackageInstaller::class.java.getConstructor( Refine.unsafeCast(PackageInstallerHidden(iPackageInstaller, "com.android.shell", 0))
IPackageInstaller::class.java,
String::class.java,
Int::class.javaPrimitiveType
).newInstance(iPackageInstaller, "com.android.shell", 0)
} }
} }
var isBinderAvalable = false var isBinderAvailable = false
var isPermissionGranted by mutableStateOf(false) var isPermissionGranted by mutableStateOf(false)
fun init() { fun init() {
Shizuku.addBinderReceivedListenerSticky { Shizuku.addBinderReceivedListenerSticky {
isBinderAvalable = true isBinderAvailable = true
isPermissionGranted = Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED isPermissionGranted = Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED
} }
Shizuku.addBinderDeadListener { Shizuku.addBinderDeadListener {
isBinderAvalable = false isBinderAvailable = false
isPermissionGranted = false isPermissionGranted = false
} }
} }
@ -60,8 +52,7 @@ object ShizukuApi {
fun createPackageInstallerSession(params: PackageInstaller.SessionParams): PackageInstaller.Session { fun createPackageInstallerSession(params: PackageInstaller.SessionParams): PackageInstaller.Session {
val sessionId = packageInstaller.createSession(params) val sessionId = packageInstaller.createSession(params)
val iSession = IPackageInstallerSession.Stub.asInterface(iPackageInstaller.openSession(sessionId).asShizukuBinder()) val iSession = IPackageInstallerSession.Stub.asInterface(iPackageInstaller.openSession(sessionId).asShizukuBinder())
val constructor by lazy { PackageInstaller.Session::class.java.getConstructor(IPackageInstallerSession::class.java) } return Refine.unsafeCast(PackageInstallerHidden.SessionHidden(iSession))
return constructor.newInstance(iSession)
} }
fun isPackageInstalledWithoutPatch(packageName: String): Boolean { fun isPackageInstalledWithoutPatch(packageName: String): Boolean {