diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt index 7f5b4996..b48ccfbd 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt @@ -47,7 +47,7 @@ import me.weishu.kernelsu.ui.component.KeyEventBlocker import me.weishu.kernelsu.ui.util.LkmSelection import me.weishu.kernelsu.ui.util.LocalSnackbarHost import me.weishu.kernelsu.ui.util.installBoot -import me.weishu.kernelsu.ui.util.installModule +import me.weishu.kernelsu.ui.util.flashModule import me.weishu.kernelsu.ui.util.reboot import me.weishu.kernelsu.ui.util.restoreBoot import me.weishu.kernelsu.ui.util.uninstallPermanently @@ -194,7 +194,7 @@ fun flashIt( onStderr ) - is FlashIt.FlashModule -> installModule(flashIt.uri, onFinish, onStdout, onStderr) + is FlashIt.FlashModule -> flashModule(flashIt.uri, onFinish, onStdout, onStderr) FlashIt.FlashRestore -> restoreBoot(onFinish, onStdout, onStderr) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/util/KsuCli.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/util/KsuCli.kt index 7eda13f8..d150fcd6 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/util/KsuCli.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/util/KsuCli.kt @@ -126,7 +126,30 @@ fun uninstallModule(id: String): Boolean { return result } -fun installModule( +private fun flashWithIO( + cmd: String, + onStdout: (String) -> Unit, + onStderr: (String) -> Unit +): Shell.Result { + + val stdoutCallback: CallbackList = object : CallbackList() { + override fun onAddElement(s: String?) { + onStdout(s ?: "") + } + } + + val stderrCallback: CallbackList = object : CallbackList() { + override fun onAddElement(s: String?) { + onStderr(s ?: "") + } + } + + return withNewRootShell { + newJob().add(cmd).to(stdoutCallback, stderrCallback).exec() + } +} + +fun flashModule( uri: Uri, onFinish: (Boolean, Int) -> Unit, onStdout: (String) -> Unit, @@ -139,22 +162,7 @@ fun installModule( this?.copyTo(output) } val cmd = "module install ${file.absolutePath}" - - val stdoutCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStdout(s ?: "") - } - } - - val stderrCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStderr(s ?: "") - } - } - - val result = withNewRootShell { - newJob().add("${getKsuDaemonPath()} $cmd").to(stdoutCallback, stderrCallback).exec() - } + val result = flashWithIO("${getKsuDaemonPath()} $cmd", onStdout, onStderr) Log.i("KernelSU", "install module $uri result: $result") file.delete() @@ -168,25 +176,7 @@ fun restoreBoot( onFinish: (Boolean, Int) -> Unit, onStdout: (String) -> Unit, onStderr: (String) -> Unit ): Boolean { val magiskboot = File(ksuApp.applicationInfo.nativeLibraryDir, "libmagiskboot.so") - - val stdoutCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStdout(s ?: "") - } - } - - val stderrCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStderr(s ?: "") - } - } - - val result = withNewRootShell { - newJob().add("${getKsuDaemonPath()} boot-restore -f --magiskboot $magiskboot") - .to(stdoutCallback, stderrCallback) - .exec() - } - + val result = flashWithIO("${getKsuDaemonPath()} boot-restore -f --magiskboot $magiskboot", onStdout, onStderr) onFinish(result.isSuccess, result.code) return result.isSuccess } @@ -195,25 +185,7 @@ fun uninstallPermanently( onFinish: (Boolean, Int) -> Unit, onStdout: (String) -> Unit, onStderr: (String) -> Unit ): Boolean { val magiskboot = File(ksuApp.applicationInfo.nativeLibraryDir, "libmagiskboot.so") - - val stdoutCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStdout(s ?: "") - } - } - - val stderrCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStderr(s ?: "") - } - } - - val result = withNewRootShell { - newJob().add("${getKsuDaemonPath()} uninstall --magiskboot $magiskboot") - .to(stdoutCallback, stderrCallback) - .exec() - } - + val result = flashWithIO("${getKsuDaemonPath()} uninstall --magiskboot $magiskboot", onStdout, onStderr) onFinish(result.isSuccess, result.code) return result.isSuccess } @@ -292,21 +264,7 @@ fun installBoot( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) cmd += " -o $downloadsDir" - val stdoutCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStdout(s ?: "") - } - } - - val stderrCallback: CallbackList = object : CallbackList() { - override fun onAddElement(s: String?) { - onStderr(s ?: "") - } - } - - val result = withNewRootShell { - newJob().add("${getKsuDaemonPath()} $cmd").to(stdoutCallback, stderrCallback).exec() - } + val result = flashWithIO("${getKsuDaemonPath()} $cmd", onStdout, onStderr) Log.i("KernelSU", "install boot result: ${result.isSuccess}") bootFile?.delete()