diff --git a/CHANGELOG.md b/CHANGELOG.md index b61c1d508c..41c13a5dda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,7 +58,7 @@ The format is simplified version of [Keep a Changelog](https://keepachangelog.co - Update dependency gradle to v8.10.2 - Update dependency androidx.webkit:webkit to v1.12.0 - Update dependency io.mockk:mockk to v1.13.13 -- Update shizuku to v12.2.0 +- Update shizuku to v13.1.5 - Bump comple sdk to 35 - Update kotlin monorepo to v2.0.21 - Update dependency androidx.work:work-runtime-ktx to v2.10.0 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7b756a93ad..ff98ef0e9f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -257,4 +257,7 @@ + + diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ShizukuInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ShizukuInstaller.kt index 304b2e47b5..a56721b5ad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ShizukuInstaller.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ShizukuInstaller.kt @@ -22,10 +22,12 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.cancel import kotlinx.coroutines.launch import rikka.shizuku.Shizuku +import rikka.shizuku.ShizukuRemoteProcess import rikka.sui.Sui import uy.kohesive.injekt.injectLazy import java.io.BufferedReader import java.io.InputStream +import java.lang.reflect.Method import java.util.* import java.util.concurrent.atomic.AtomicReference @@ -69,6 +71,8 @@ class ShizukuInstaller(private val context: Context, val finishedQueue: (Shizuku var ready = false + private val newProcess: Method + init { Shizuku.addBinderDeadListener(shizukuDeadListener) require(Shizuku.pingBinder() && (context.isPackageInstalled(shizukuPkgName) || Sui.isSui())) { @@ -82,6 +86,9 @@ class ShizukuInstaller(private val context: Context, val finishedQueue: (Shizuku Shizuku.requestPermission(SHIZUKU_PERMISSION_REQUEST_CODE) false } + newProcess = Shizuku::class.java + .getDeclaredMethod("newProcess", Array::class.java, Array::class.java, String::class.java) + newProcess.isAccessible = true } @Suppress("BlockingMethodInNonBlockingContext") @@ -206,8 +213,7 @@ class ShizukuInstaller(private val context: Context, val finishedQueue: (Shizuku } private fun exec(command: String, stdin: InputStream? = null): ShellResult { - @Suppress("DEPRECATION") - val process = Shizuku.newProcess(arrayOf("sh", "-c", command), null, null) + val process = newProcess.invoke(null, arrayOf("sh", "-c", command), null, null) as ShizukuRemoteProcess if (stdin != null) { process.outputStream.use { stdin.copyTo(it) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 91f137b08c..d7dfa22113 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ flexible-adapter = "c8013533" fast_adapter = "5.6.0" moko = "0.24.2" okhttp = "5.0.0-alpha.14" -shizuku = "12.2.0" +shizuku = "13.1.5" # FIXME: Uncomment once SQLDelight support KMP AndroidX SQLiteDriver #sqlite = "2.5.0-alpha04" sqlite = "2.4.0"