From e124aab76a30e9bd298467e9fac4ca8ecdda254d Mon Sep 17 00:00:00 2001 From: weishu Date: Sat, 23 Mar 2024 10:53:19 +0800 Subject: [PATCH] manager: get kmi info from ksud --- .../main/java/me/weishu/kernelsu/Kernels.kt | 17 ---------- .../me/weishu/kernelsu/ui/screen/Install.kt | 14 -------- .../me/weishu/kernelsu/ui/util/Downloader.kt | 33 ------------------- .../java/me/weishu/kernelsu/ui/util/KsuCli.kt | 14 ++++++++ 4 files changed, 14 insertions(+), 64 deletions(-) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/Kernels.kt b/manager/app/src/main/java/me/weishu/kernelsu/Kernels.kt index dadbd699..860e46fc 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/Kernels.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/Kernels.kt @@ -37,23 +37,6 @@ fun parseKernelVersion(version: String): KernelVersion { } } -fun parseKMI(input: String): String? { - val regex = Regex("(.* )?(\\d+\\.\\d+)(\\S+)?(android\\d+)(.*)") - val result = regex.find(input) - - return result?.let { - val androidVersion = it.groups[4]?.value ?: "" - val kernelVersion = it.groups[2]?.value ?: "" - "$androidVersion-$kernelVersion" - } -} - -fun getKMI(): String? { - Os.uname().release.let { - return parseKMI(it) - } -} - fun getKernelVersion(): KernelVersion { Os.uname().release.let { return parseKernelVersion(it) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt index d9b6c7e1..dcd027ad 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt @@ -3,9 +3,6 @@ package me.weishu.kernelsu.ui.screen import android.app.Activity import android.content.Intent import android.net.Uri -import android.util.Log -import android.webkit.DownloadListener -import android.widget.Toast import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.StringRes @@ -30,28 +27,17 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.core.net.toFile import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.navigation.DestinationsNavigator -import com.topjohnwu.superuser.Shell -import com.topjohnwu.superuser.ShellUtils -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import me.weishu.kernelsu.R import me.weishu.kernelsu.ui.component.rememberConfirmDialog -import me.weishu.kernelsu.ui.component.rememberLoadingDialog import me.weishu.kernelsu.ui.screen.destinations.FlashScreenDestination -import me.weishu.kernelsu.ui.util.DownloadListener -import me.weishu.kernelsu.ui.util.download -import me.weishu.kernelsu.ui.util.getLKMUrl import me.weishu.kernelsu.ui.util.isAbDevice import me.weishu.kernelsu.ui.util.isInitBoot import me.weishu.kernelsu.ui.util.rootAvailable diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/util/Downloader.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/util/Downloader.kt index 0447176c..cfe98fae 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/util/Downloader.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/util/Downloader.kt @@ -10,7 +10,6 @@ import android.net.Uri import android.os.Environment import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect -import me.weishu.kernelsu.getKMI /** * @author weishu @@ -95,38 +94,6 @@ fun checkNewVersion(): Triple { } return defaultValue } -fun getLKMUrl(): Result> { - val url = "https://api.github.com/repos/tiann/KernelSU/releases/latest" - - val kmi = getKMI() ?: return Result.failure(RuntimeException("Get KMI failed")) - runCatching { - okhttp3.OkHttpClient().newCall(okhttp3.Request.Builder().url(url).build()).execute() - .use { response -> - val body = response.body?.string() ?: return Result.failure(RuntimeException("request body failed")) - if (!response.isSuccessful) { - return Result.failure(RuntimeException("Request failed, code: ${response.code}, message: $body")) - } - val json = org.json.JSONObject(body) - - val assets = json.getJSONArray("assets") - for (i in 0 until assets.length()) { - val asset = assets.getJSONObject(i) - val name = asset.getString("name") - if (!name.endsWith(".ko")) { - continue - } - - if (name.contains(kmi)) { - return Result.success(Pair(name, asset.getString("browser_download_url"))) - } - } - } - }.onFailure { - return Result.failure(it) - } - - return Result.failure(RuntimeException("Cannot find LKM for $kmi")) -} @Composable fun DownloadListener(context: Context, onDownloaded: (Uri) -> Unit) { 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 7fbe9ac7..cee3e3dc 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 @@ -257,6 +257,20 @@ fun isInitBoot(): Boolean { .toInt() >= Build.VERSION_CODES.TIRAMISU } +fun getCurrentKmi(): String { + val shell = getRootShell() + val cmd = "boot-info supported-kmi" + return ShellUtils.fastCmd(shell, "${getKsuDaemonPath()} $cmd") +} + +fun getSupportedKmis(): List { + val shell = getRootShell() + val cmd = "boot-info supported-kmi" + val out = + shell.newJob().add("${getKsuDaemonPath()} $cmd").to(ArrayList(), null).exec().out + return out.filter { it.isNotBlank() }.map { it.trim() } +} + fun overlayFsAvailable(): Boolean { val shell = getRootShell() // check /proc/filesystems