From 83afcee4d18465341f50a9b2427f9f30164697d3 Mon Sep 17 00:00:00 2001 From: NGB-Was-Taken <76197326+NGB-Was-Taken@users.noreply.github.com> Date: Wed, 7 Jan 2026 22:02:53 +0545 Subject: [PATCH] Fix crash when trying to install/update extensions while shizuku isn't running (#2837) (cherry picked from commit 4ce249c1a0ee9f3a20d91214fd09145e0924b2e4) # Conflicts: # CHANGELOG.md --- .../extension/installer/ShizukuInstaller.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt index 303a2dad8..834a40d6f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt @@ -109,9 +109,9 @@ class ShizukuInstaller(private val service: Service) : Installer(service) { override fun processEntry(entry: Entry) { super.processEntry(entry) try { - shellInterface?.install( - service.contentResolver.openAssetFileDescriptor(entry.uri, "r"), - ) + service.contentResolver.openAssetFileDescriptor(entry.uri, "r").use { + shellInterface?.install(it) + } } catch (e: Exception) { logcat(LogPriority.ERROR, e) { "Failed to install extension ${entry.downloadId} ${entry.uri}" } continueQueue(InstallStep.Error) @@ -124,7 +124,13 @@ class ShizukuInstaller(private val service: Service) : Installer(service) { override fun onDestroy() { Shizuku.removeBinderDeadListener(shizukuDeadListener) Shizuku.removeRequestPermissionResultListener(shizukuPermissionListener) - Shizuku.unbindUserService(shizukuArgs, connection, true) + if (Shizuku.pingBinder()) { + try { + Shizuku.unbindUserService(shizukuArgs, connection, true) + } catch (e: Exception) { + logcat(LogPriority.WARN, e) { "Failed to unbind shizuku service" } + } + } service.unregisterReceiver(receiver) logcat { "ShizukuInstaller destroy" } scope.cancel()