Optimize build
This commit is contained in:
parent
319a21f103
commit
b2b542e7cc
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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 { *; }
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue