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"