From d2a6fa45138146377dddb32671da8f1b89db4bcd Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Thu, 20 Nov 2025 03:18:13 +0800 Subject: [PATCH] Step 4: Add KPM interface and flash anykernel3 --- manager/app/build.gradle.kts | 1 + manager/app/src/main/assets/5_10-mkbootfs | Bin 0 -> 12112 bytes manager/app/src/main/assets/5_15+-mkbootfs | Bin 0 -> 323320 bytes manager/app/src/main/assets/kpimg | Bin 0 -> 179808 bytes manager/app/src/main/assets/kptools | Bin 0 -> 310112 bytes .../java/com/sukisu/ultra/ui/MainActivity.kt | 48 +- .../sukisu/ultra/ui/component/BottomBar.kt | 25 +- .../ultra/ui/kernelFlash/KernelFlash.kt | 433 +++++++ .../component/SlotSelectionDialog.kt | 218 ++++ .../ui/kernelFlash/state/KernelFlashState.kt | 524 +++++++++ .../ultra/ui/kernelFlash/util/AssetsUtil.kt | 26 + .../kernelFlash/util/RemoteToolsDownloader.kt | 364 ++++++ .../java/com/sukisu/ultra/ui/screen/Home.kt | 7 +- .../com/sukisu/ultra/ui/screen/Install.kt | 410 ++++++- .../java/com/sukisu/ultra/ui/screen/Kpm.kt | 1032 +++++++++++++++++ .../sukisu/ultra/ui/viewmodel/KpmViewModel.kt | 181 +++ .../src/main/res/values-zh-rCN/strings.xml | 89 ++ manager/app/src/main/res/values/strings.xml | 89 ++ manager/gradle/libs.versions.toml | 4 +- 19 files changed, 3386 insertions(+), 65 deletions(-) create mode 100644 manager/app/src/main/assets/5_10-mkbootfs create mode 100644 manager/app/src/main/assets/5_15+-mkbootfs create mode 100644 manager/app/src/main/assets/kpimg create mode 100644 manager/app/src/main/assets/kptools create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/KernelFlash.kt create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/component/SlotSelectionDialog.kt create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/state/KernelFlashState.kt create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/AssetsUtil.kt create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/RemoteToolsDownloader.kt create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/KpmViewModel.kt diff --git a/manager/app/build.gradle.kts b/manager/app/build.gradle.kts index be818b79..6ffee22c 100644 --- a/manager/app/build.gradle.kts +++ b/manager/app/build.gradle.kts @@ -116,6 +116,7 @@ dependencies { implementation(libs.androidx.compose.material.icons.extended) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.documentfile) debugImplementation(libs.androidx.compose.ui.test.manifest) debugImplementation(libs.androidx.compose.ui.tooling) diff --git a/manager/app/src/main/assets/5_10-mkbootfs b/manager/app/src/main/assets/5_10-mkbootfs new file mode 100644 index 0000000000000000000000000000000000000000..2af1167a9035fdc05b591080b5a9d5780d3ce5d0 GIT binary patch literal 12112 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 z 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 a5ZSGaUQBUx&VvB;Vo-XlatEO$w*D{O(mB@v literal 0 HcmV?d00001 diff --git a/manager/app/src/main/assets/kptools b/manager/app/src/main/assets/kptools new file mode 100644 index 0000000000000000000000000000000000000000..f1a2a5780f4e402bf591e83968cce0507511290d GIT binary patch literal 310112 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

Unit> { error("No handle fun MainScreen(navController: DestinationsNavigator) { val activity = LocalActivity.current val coroutineScope = rememberCoroutineScope() - val pagerState = rememberPagerState(initialPage = 0, pageCount = { 4 }) + + // 检查 KPM 版本是否可用 + val kpmVersion by produceState(initialValue = "") { + value = withContext(Dispatchers.IO) { + try { + getKpmVersion() + } catch (e: Exception) { + "" + } + } + } + + val isKpmAvailable = kpmVersion.isNotEmpty() && !kpmVersion.contains("Error", ignoreCase = true) + val pageCount = if (isKpmAvailable) 5 else 4 + + val pagerState = rememberPagerState(initialPage = 0, pageCount = { pageCount }) val hazeState = remember { HazeState() } val hazeStyle = HazeStyle( backgroundColor = MiuixTheme.colorScheme.background, @@ -148,7 +169,7 @@ fun MainScreen(navController: DestinationsNavigator) { ) { Scaffold( bottomBar = { - BottomBar(hazeState, hazeStyle) + BottomBar(hazeState, hazeStyle, isKpmAvailable) }, ) { innerPadding -> HorizontalPager( @@ -157,11 +178,24 @@ fun MainScreen(navController: DestinationsNavigator) { beyondViewportPageCount = 2, userScrollEnabled = false ) { - when (it) { - 0 -> HomePager(pagerState, navController, innerPadding.calculateBottomPadding()) - 1 -> SuperUserPager(navController, innerPadding.calculateBottomPadding()) - 2 -> ModulePager(navController, innerPadding.calculateBottomPadding()) - 3 -> SettingPager(navController, innerPadding.calculateBottomPadding()) + when { + isKpmAvailable -> { + when (it) { + 0 -> HomePager(pagerState, navController, innerPadding.calculateBottomPadding()) + 1 -> KpmScreen(bottomInnerPadding = innerPadding.calculateBottomPadding()) + 2 -> SuperUserPager(navController, innerPadding.calculateBottomPadding()) + 3 -> ModulePager(navController, innerPadding.calculateBottomPadding()) + 4 -> SettingPager(navController, innerPadding.calculateBottomPadding()) + } + } + else -> { + when (it) { + 0 -> HomePager(pagerState, navController, innerPadding.calculateBottomPadding()) + 1 -> SuperUserPager(navController, innerPadding.calculateBottomPadding()) + 2 -> ModulePager(navController, innerPadding.calculateBottomPadding()) + 3 -> SettingPager(navController, innerPadding.calculateBottomPadding()) + } + } } } } diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/component/BottomBar.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/component/BottomBar.kt index 186d9763..ba4c2d5c 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/component/BottomBar.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/component/BottomBar.kt @@ -2,6 +2,7 @@ package com.sukisu.ultra.ui.component import androidx.annotation.StringRes import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.Code import androidx.compose.material.icons.rounded.Cottage import androidx.compose.material.icons.rounded.Extension import androidx.compose.material.icons.rounded.Security @@ -27,7 +28,8 @@ import top.yukonga.miuix.kmp.basic.NavigationItem @Composable fun BottomBar( hazeState: HazeState, - hazeStyle: HazeStyle + hazeStyle: HazeStyle, + isKpmAvailable: Boolean = false ) { val isManager = Natives.isManager val fullFeatured = isManager && !Natives.requireNewKernel() && rootAvailable() @@ -37,12 +39,24 @@ fun BottomBar( if (!fullFeatured) return - val item = BottomBarDestination.entries.mapIndexed { index, destination -> + val destinations = if (isKpmAvailable) { + BottomBarDestination.entries + } else { + BottomBarDestination.entries.filter { it != BottomBarDestination.KPM } + } + + val item = destinations.mapIndexed { index, destination -> NavigationItem( label = stringResource(destination.label), icon = destination.icon, ) } + + val bottomBarIndex = if (!isKpmAvailable) { + page.coerceIn(0, item.size - 1) + } else { + page.coerceIn(0, item.size - 1) + } NavigationBar( modifier = Modifier @@ -53,8 +67,10 @@ fun BottomBar( }, color = Color.Transparent, items = item, - selected = page, - onClick = handlePageChange + selected = bottomBarIndex, + onClick = { index -> + handlePageChange(index) + } ) } @@ -63,6 +79,7 @@ enum class BottomBarDestination( val icon: ImageVector, ) { Home(R.string.home, Icons.Rounded.Cottage), + KPM(R.string.kpm_title, Icons.Rounded.Code), SuperUser(R.string.superuser, Icons.Rounded.Security), Module(R.string.module, Icons.Rounded.Extension), Setting(R.string.settings, Icons.Rounded.Settings) diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/KernelFlash.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/KernelFlash.kt new file mode 100644 index 00000000..6b0381c2 --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/KernelFlash.kt @@ -0,0 +1,433 @@ +package com.sukisu.ultra.ui.kernelFlash + +import android.content.Context +import android.net.Uri +import android.os.Environment +import androidx.activity.ComponentActivity +import androidx.activity.compose.BackHandler +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.CheckCircle +import androidx.compose.material.icons.filled.Error +import androidx.compose.material.icons.rounded.Refresh +import androidx.compose.runtime.* +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.key +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.core.content.edit +import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph +import com.ramcosta.composedestinations.navigation.DestinationsNavigator +import com.sukisu.ultra.R +import com.sukisu.ultra.ui.component.KeyEventBlocker +import com.sukisu.ultra.ui.util.reboot +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import com.sukisu.ultra.ui.kernelFlash.state.* +import top.yukonga.miuix.kmp.basic.Card +import top.yukonga.miuix.kmp.basic.FloatingActionButton +import top.yukonga.miuix.kmp.basic.Icon +import top.yukonga.miuix.kmp.basic.IconButton +import top.yukonga.miuix.kmp.basic.LinearProgressIndicator +import top.yukonga.miuix.kmp.basic.Scaffold +import top.yukonga.miuix.kmp.basic.SmallTopAppBar +import top.yukonga.miuix.kmp.basic.Text +import top.yukonga.miuix.kmp.icon.MiuixIcons +import top.yukonga.miuix.kmp.icon.icons.useful.Back +import top.yukonga.miuix.kmp.icon.icons.useful.Save +import top.yukonga.miuix.kmp.theme.MiuixTheme.colorScheme +import top.yukonga.miuix.kmp.utils.scrollEndHaptic +import java.io.File +import java.text.SimpleDateFormat +import java.util.* + +/** + * @author ShirkNeko + * @date 2025/5/31. + */ +private object KernelFlashStateHolder { + var currentState: HorizonKernelState? = null + var currentUri: Uri? = null + var currentSlot: String? = null + var currentKpmPatchEnabled: Boolean = false + var currentKpmUndoPatch: Boolean = false + var isFlashing = false +} + +/** + * Kernel刷写界面 + */ +@Destination +@Composable +fun KernelFlashScreen( + navigator: DestinationsNavigator, + kernelUri: Uri, + selectedSlot: String? = null, + kpmPatchEnabled: Boolean = false, + kpmUndoPatch: Boolean = false +) { + val context = LocalContext.current + + val shouldAutoExit = remember { + val sharedPref = context.getSharedPreferences("kernel_flash_prefs", Context.MODE_PRIVATE) + sharedPref.getBoolean("auto_exit_after_flash", false) + } + + val scrollState = rememberScrollState() + val scope = rememberCoroutineScope() + var logText by rememberSaveable { mutableStateOf("") } + var showFloatAction by rememberSaveable { mutableStateOf(false) } + val logContent = rememberSaveable { StringBuilder() } + val horizonKernelState = remember { + if (KernelFlashStateHolder.currentState != null && + KernelFlashStateHolder.currentUri == kernelUri && + KernelFlashStateHolder.currentSlot == selectedSlot && + KernelFlashStateHolder.currentKpmPatchEnabled == kpmPatchEnabled && + KernelFlashStateHolder.currentKpmUndoPatch == kpmUndoPatch) { + KernelFlashStateHolder.currentState!! + } else { + HorizonKernelState().also { + KernelFlashStateHolder.currentState = it + KernelFlashStateHolder.currentUri = kernelUri + KernelFlashStateHolder.currentSlot = selectedSlot + KernelFlashStateHolder.currentKpmPatchEnabled = kpmPatchEnabled + KernelFlashStateHolder.currentKpmUndoPatch = kpmUndoPatch + KernelFlashStateHolder.isFlashing = false + } + } + } + + val flashState by horizonKernelState.state.collectAsState() + + val onFlashComplete = { + showFloatAction = true + KernelFlashStateHolder.isFlashing = false + + // 如果需要自动退出,延迟1.5秒后退出 + if (shouldAutoExit) { + scope.launch { + delay(1500) + val sharedPref = context.getSharedPreferences("kernel_flash_prefs", Context.MODE_PRIVATE) + sharedPref.edit { remove("auto_exit_after_flash") } + (context as? ComponentActivity)?.finish() + } + } + } + + // 开始刷写 + LaunchedEffect(Unit) { + if (!KernelFlashStateHolder.isFlashing && !flashState.isCompleted && flashState.error.isEmpty()) { + withContext(Dispatchers.IO) { + KernelFlashStateHolder.isFlashing = true + val worker = HorizonKernelWorker( + context = context, + state = horizonKernelState, + slot = selectedSlot, + kpmPatchEnabled = kpmPatchEnabled, + kpmUndoPatch = kpmUndoPatch + ) + worker.uri = kernelUri + worker.setOnFlashCompleteListener(onFlashComplete) + worker.start() + + // 监听日志更新 + while (flashState.error.isEmpty()) { + if (flashState.logs.isNotEmpty()) { + logText = flashState.logs.joinToString("\n") + logContent.clear() + logContent.append(logText) + } + delay(100) + } + + if (flashState.error.isNotEmpty()) { + logText += "\n${flashState.error}\n" + logContent.append("\n${flashState.error}\n") + KernelFlashStateHolder.isFlashing = false + } + } + } else { + logText = flashState.logs.joinToString("\n") + if (flashState.error.isNotEmpty()) { + logText += "\n${flashState.error}\n" + } else if (flashState.isCompleted) { + logText += "\n${context.getString(R.string.horizon_flash_complete)}\n\n\n" + showFloatAction = true + } + } + } + + val onBack: () -> Unit = { + if (!flashState.isFlashing || flashState.isCompleted || flashState.error.isNotEmpty()) { + // 清理全局状态 + if (flashState.isCompleted || flashState.error.isNotEmpty()) { + KernelFlashStateHolder.currentState = null + KernelFlashStateHolder.currentUri = null + KernelFlashStateHolder.currentSlot = null + KernelFlashStateHolder.currentKpmPatchEnabled = false + KernelFlashStateHolder.currentKpmUndoPatch = false + KernelFlashStateHolder.isFlashing = false + } + navigator.popBackStack() + } + } + + DisposableEffect(shouldAutoExit) { + onDispose { + if (shouldAutoExit) { + KernelFlashStateHolder.currentState = null + KernelFlashStateHolder.currentUri = null + KernelFlashStateHolder.currentSlot = null + KernelFlashStateHolder.currentKpmPatchEnabled = false + KernelFlashStateHolder.currentKpmUndoPatch = false + KernelFlashStateHolder.isFlashing = false + } + } + } + + BackHandler { + onBack() + } + + KeyEventBlocker { + it.key == Key.VolumeDown || it.key == Key.VolumeUp + } + + Scaffold( + topBar = { + TopBar( + flashState = flashState, + onBack = onBack, + onSave = { + scope.launch { + val format = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.getDefault()) + val date = format.format(Date()) + val file = File( + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), + "KernelSU_kernel_flash_log_${date}.log" + ) + file.writeText(logContent.toString()) + } + } + ) + }, + floatingActionButton = { + if (showFloatAction) { + FloatingActionButton( + onClick = { + scope.launch { + withContext(Dispatchers.IO) { + reboot() + } + } + }, + modifier = Modifier.padding(bottom = 20.dp, end = 20.dp) + ) { + Icon( + Icons.Rounded.Refresh, + contentDescription = stringResource(id = R.string.reboot) + ) + } + } + }, + popupHost = { } + ) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(it) + .scrollEndHaptic(), + ) { + FlashProgressIndicator(flashState, kpmPatchEnabled, kpmUndoPatch) + Box( + modifier = Modifier + .fillMaxWidth() + .weight(1f) + .verticalScroll(scrollState) + ) { + LaunchedEffect(logText) { + scrollState.animateScrollTo(scrollState.maxValue) + } + Text( + modifier = Modifier.padding(16.dp), + text = logText, + fontFamily = FontFamily.Monospace, + color = colorScheme.onSurface + ) + } + } + } +} + +@Composable +private fun FlashProgressIndicator( + flashState: FlashState, + kpmPatchEnabled: Boolean = false, + kpmUndoPatch: Boolean = false +) { + val progressColor = when { + flashState.error.isNotEmpty() -> colorScheme.primary + flashState.isCompleted -> colorScheme.secondary + else -> colorScheme.primary + } + + val progress = animateFloatAsState( + targetValue = flashState.progress, + label = "FlashProgress" + ) + + Card( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 12.dp) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = when { + flashState.error.isNotEmpty() -> stringResource(R.string.flash_failed) + flashState.isCompleted -> stringResource(R.string.flash_success) + else -> stringResource(R.string.flashing) + }, + fontWeight = FontWeight.Bold, + color = progressColor + ) + + when { + flashState.error.isNotEmpty() -> { + Icon( + imageVector = Icons.Default.Error, + contentDescription = null, + tint = colorScheme.primary + ) + } + flashState.isCompleted -> { + Icon( + imageVector = Icons.Default.CheckCircle, + contentDescription = null, + tint = colorScheme.secondary + ) + } + } + } + + // KPM状态显示 + if (kpmPatchEnabled || kpmUndoPatch) { + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = if (kpmUndoPatch) stringResource(R.string.kpm_undo_patch_mode) + else stringResource(R.string.kpm_patch_mode), + color = colorScheme.secondary + ) + } + + Spacer(modifier = Modifier.height(8.dp)) + + if (flashState.currentStep.isNotEmpty()) { + Text( + text = flashState.currentStep, + color = colorScheme.onSurfaceVariantSummary + ) + + Spacer(modifier = Modifier.height(8.dp)) + } + + LinearProgressIndicator( + progress = progress.value, + modifier = Modifier + .fillMaxWidth() + .height(8.dp) + ) + + if (flashState.error.isNotEmpty()) { + Spacer(modifier = Modifier.height(8.dp)) + + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Default.Error, + contentDescription = null, + tint = colorScheme.primary, + modifier = Modifier.size(16.dp) + ) + } + + Spacer(modifier = Modifier.height(4.dp)) + + Text( + text = flashState.error, + color = colorScheme.primary, + modifier = Modifier + .fillMaxWidth() + .background( + colorScheme.primaryContainer.copy(alpha = 0.3f) + ) + .padding(8.dp) + ) + } + } + } +} + +@Composable +private fun TopBar( + flashState: FlashState, + onBack: () -> Unit, + onSave: () -> Unit = {} +) { + SmallTopAppBar( + title = stringResource( + when { + flashState.error.isNotEmpty() -> R.string.flash_failed + flashState.isCompleted -> R.string.flash_success + else -> R.string.kernel_flashing + } + ), + navigationIcon = { + IconButton( + modifier = Modifier.padding(start = 16.dp), + onClick = onBack + ) { + Icon( + MiuixIcons.Useful.Back, + contentDescription = null, + tint = colorScheme.onBackground + ) + } + }, + actions = { + IconButton( + modifier = Modifier.padding(end = 16.dp), + onClick = onSave + ) { + Icon( + imageVector = MiuixIcons.Useful.Save, + contentDescription = stringResource(id = R.string.save_log), + tint = colorScheme.onBackground + ) + } + } + ) +} \ No newline at end of file diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/component/SlotSelectionDialog.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/component/SlotSelectionDialog.kt new file mode 100644 index 00000000..78bc7131 --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/component/SlotSelectionDialog.kt @@ -0,0 +1,218 @@ +package com.sukisu.ultra.ui.kernelFlash.component + +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.SdStorage +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp +import com.sukisu.ultra.R +import top.yukonga.miuix.kmp.basic.Icon +import top.yukonga.miuix.kmp.basic.Text +import top.yukonga.miuix.kmp.basic.TextButton +import top.yukonga.miuix.kmp.extra.SuperArrow +import top.yukonga.miuix.kmp.extra.SuperDialog +import top.yukonga.miuix.kmp.theme.MiuixTheme +import top.yukonga.miuix.kmp.theme.MiuixTheme.colorScheme + +/** + * 槽位选择对话框组件 + * 用于Kernel刷写时选择目标槽位 + */ +@Composable +fun SlotSelectionDialog( + show: Boolean, + onDismiss: () -> Unit, + onSlotSelected: (String) -> Unit +) { + var currentSlot by remember { mutableStateOf(null) } + var errorMessage by remember { mutableStateOf(null) } + var selectedSlot by remember { mutableStateOf(null) } + val showDialog = remember { mutableStateOf(show) } + + LaunchedEffect(show) { + showDialog.value = show + if (show) { + try { + currentSlot = getCurrentSlot() + // 设置默认选择为当前槽位 + selectedSlot = when (currentSlot) { + "a" -> "a" + "b" -> "b" + else -> null + } + errorMessage = null + } catch (e: Exception) { + errorMessage = e.message + currentSlot = null + } + } + } + + SuperDialog( + show = showDialog, + insideMargin = DpSize(0.dp, 0.dp), + onDismissRequest = { + showDialog.value = false + onDismiss() + }, + content = { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 24.dp) + ) { + // 标题 + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 12.dp), + text = stringResource(id = R.string.select_slot_title), + fontSize = MiuixTheme.textStyles.title4.fontSize, + fontWeight = FontWeight.Medium, + textAlign = TextAlign.Center, + color = colorScheme.onSurface + ) + + // 当前槽位或错误信息 + if (errorMessage != null) { + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 8.dp), + text = "Error: $errorMessage", + fontSize = MiuixTheme.textStyles.body2.fontSize, + color = colorScheme.primary, + textAlign = TextAlign.Center + ) + } else { + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 8.dp), + text = stringResource( + id = R.string.current_slot, + currentSlot ?: "Unknown" + ), + fontSize = MiuixTheme.textStyles.body2.fontSize, + color = colorScheme.onSurfaceVariantSummary, + textAlign = TextAlign.Center + ) + } + + // 描述文本 + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 8.dp), + text = stringResource(id = R.string.select_slot_description), + fontSize = MiuixTheme.textStyles.body2.fontSize, + color = colorScheme.onSurfaceVariantSummary, + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(12.dp)) + + // 槽位选项 + val slotOptions = listOf( + SlotOption( + slot = "a", + titleText = stringResource(id = R.string.slot_a), + icon = Icons.Filled.SdStorage + ), + SlotOption( + slot = "b", + titleText = stringResource(id = R.string.slot_b), + icon = Icons.Filled.SdStorage + ) + ) + + slotOptions.forEach { option -> + SuperArrow( + title = option.titleText, + leftAction = { + Icon( + imageVector = option.icon, + contentDescription = null, + tint = if (selectedSlot == option.slot) { + colorScheme.primary + } else { + colorScheme.onSurfaceVariantSummary + } + ) + }, + onClick = { + selectedSlot = option.slot + }, + insideMargin = PaddingValues(horizontal = 24.dp, vertical = 12.dp) + ) + } + + Spacer(modifier = Modifier.height(12.dp)) + + // 按钮行 + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + TextButton( + text = stringResource(android.R.string.cancel), + onClick = { + showDialog.value = false + onDismiss() + }, + modifier = Modifier.weight(1f) + ) + TextButton( + text = stringResource(android.R.string.ok), + onClick = { + selectedSlot?.let { onSlotSelected(it) } + showDialog.value = false + onDismiss() + }, + enabled = selectedSlot != null, + modifier = Modifier.weight(1f) + ) + } + } + } + ) +} + +// Data class for slot options +data class SlotOption( + val slot: String, + val titleText: String, + val icon: ImageVector +) + +// Utility function to get current slot +private fun getCurrentSlot(): String? { + return runCommandGetOutput()?.let { + if (it.startsWith("_")) it.substring(1) else it + } +} + +private fun runCommandGetOutput(): String? { + val cmd = "getprop ro.boot.slot_suffix" + return try { + val process = ProcessBuilder("su").start() + process.outputStream.bufferedWriter().use { writer -> + writer.write("$cmd\n") + writer.write("exit\n") + writer.flush() + } + process.inputStream.bufferedReader().use { reader -> + reader.readText().trim() + } + } catch (_: Exception) { + null + } +} diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/state/KernelFlashState.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/state/KernelFlashState.kt new file mode 100644 index 00000000..bf73ed23 --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/state/KernelFlashState.kt @@ -0,0 +1,524 @@ +package com.sukisu.ultra.ui.kernelFlash.state + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.net.Uri +import androidx.documentfile.provider.DocumentFile +import com.sukisu.ultra.R +import com.sukisu.ultra.ui.kernelFlash.util.AssetsUtil +import com.sukisu.ultra.ui.kernelFlash.util.RemoteToolsDownloader +import com.sukisu.ultra.ui.util.install +import com.sukisu.ultra.ui.util.rootAvailable +import com.topjohnwu.superuser.Shell +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update +import java.io.File +import java.io.FileOutputStream +import java.io.IOException +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream + + +/** + * @author ShirkNeko + * @date 2025/5/31. + */ +data class FlashState( + val isFlashing: Boolean = false, + val isCompleted: Boolean = false, + val progress: Float = 0f, + val currentStep: String = "", + val logs: List = emptyList(), + val error: String = "" +) + +class HorizonKernelState { + private val _state = MutableStateFlow(FlashState()) + val state: StateFlow = _state.asStateFlow() + + fun updateProgress(progress: Float) { + _state.update { it.copy(progress = progress) } + } + + fun updateStep(step: String) { + _state.update { it.copy(currentStep = step) } + } + + fun addLog(log: String) { + _state.update { + it.copy(logs = it.logs + log) + } + } + + fun setError(error: String) { + _state.update { it.copy(error = error) } + } + + fun startFlashing() { + _state.update { + it.copy( + isFlashing = true, + isCompleted = false, + progress = 0f, + currentStep = "under preparation...", + logs = emptyList(), + error = "" + ) + } + } + + fun completeFlashing() { + _state.update { it.copy(isCompleted = true, progress = 1f) } + } + + fun reset() { + _state.value = FlashState() + } +} + +class HorizonKernelWorker( + private val context: Context, + private val state: HorizonKernelState, + private val slot: String? = null, + private val kpmPatchEnabled: Boolean = false, + private val kpmUndoPatch: Boolean = false +) : Thread() { + var uri: Uri? = null + private lateinit var filePath: String + private lateinit var binaryPath: String + private lateinit var workDir: String + + private var onFlashComplete: (() -> Unit)? = null + private var originalSlot: String? = null + private var downloaderJob: Job? = null + + fun setOnFlashCompleteListener(listener: () -> Unit) { + onFlashComplete = listener + } + + override fun run() { + state.startFlashing() + state.updateStep(context.getString(R.string.horizon_preparing)) + + filePath = "${context.filesDir.absolutePath}/${DocumentFile.fromSingleUri(context, uri!!)?.name}" + binaryPath = "${context.filesDir.absolutePath}/META-INF/com/google/android/update-binary" + workDir = "${context.filesDir.absolutePath}/work" + + try { + state.updateStep(context.getString(R.string.horizon_cleaning_files)) + state.updateProgress(0.1f) + cleanup() + + if (!rootAvailable()) { + state.setError(context.getString(R.string.root_required)) + return + } + + state.updateStep(context.getString(R.string.horizon_copying_files)) + state.updateProgress(0.2f) + copy() + + if (!File(filePath).exists()) { + state.setError(context.getString(R.string.horizon_copy_failed)) + return + } + + state.updateStep(context.getString(R.string.horizon_extracting_tool)) + state.updateProgress(0.4f) + getBinary() + + // KPM修补 + if (kpmPatchEnabled || kpmUndoPatch) { + state.updateStep(context.getString(R.string.kpm_preparing_tools)) + state.updateProgress(0.5f) + prepareKpmToolsWithDownload() + + state.updateStep( + if (kpmUndoPatch) context.getString(R.string.kpm_undoing_patch) + else context.getString(R.string.kpm_applying_patch) + ) + state.updateProgress(0.55f) + performKpmPatch() + } + + state.updateStep(context.getString(R.string.horizon_patching_script)) + state.updateProgress(0.6f) + patch() + + state.updateStep(context.getString(R.string.horizon_flashing)) + state.updateProgress(0.7f) + + val isAbDevice = isAbDevice() + + if (isAbDevice && slot != null) { + state.updateStep(context.getString(R.string.horizon_getting_original_slot)) + state.updateProgress(0.72f) + originalSlot = runCommandGetOutput("getprop ro.boot.slot_suffix") + + state.updateStep(context.getString(R.string.horizon_setting_target_slot)) + state.updateProgress(0.74f) + runCommand(true, "resetprop -n ro.boot.slot_suffix _$slot") + } + + flash() + + if (isAbDevice && !originalSlot.isNullOrEmpty()) { + state.updateStep(context.getString(R.string.horizon_restoring_original_slot)) + state.updateProgress(0.8f) + runCommand(true, "resetprop ro.boot.slot_suffix $originalSlot") + } + + try { + install() + } catch (e: Exception) { + state.updateStep("ksud update skipped: ${e.message}") + } + + state.updateStep(context.getString(R.string.horizon_flash_complete_status)) + state.completeFlashing() + + (context as? Activity)?.runOnUiThread { + onFlashComplete?.invoke() + } + } catch (e: Exception) { + state.setError(e.message ?: context.getString(R.string.horizon_unknown_error)) + + if (isAbDevice() && !originalSlot.isNullOrEmpty()) { + state.updateStep(context.getString(R.string.horizon_restoring_original_slot)) + state.updateProgress(0.8f) + runCommand(true, "resetprop ro.boot.slot_suffix $originalSlot") + } + } finally { + // 取消下载任务并清理 + downloaderJob?.cancel() + cleanupDownloader() + } + } + + private fun prepareKpmToolsWithDownload() { + try { + File(workDir).mkdirs() + val downloader = RemoteToolsDownloader(context, workDir) + + val progressListener = object : RemoteToolsDownloader.DownloadProgressListener { + override fun onProgress(fileName: String, progress: Int, total: Int) { + val percentage = if (total > 0) (progress * 100) / total else 0 + state.addLog("Downloading $fileName: $percentage% ($progress/$total bytes)") + } + + override fun onLog(message: String) { + state.addLog(message) + } + + override fun onError(fileName: String, error: String) { + state.addLog("Warning: $fileName - $error") + } + + override fun onSuccess(fileName: String, isRemote: Boolean) { + val source = if (isRemote) "remote" else "local" + state.addLog("✓ $fileName $source version prepared successfully") + } + } + + val downloadJob = CoroutineScope(Dispatchers.IO).launch { + downloader.downloadToolsAsync(progressListener) + } + + downloaderJob = downloadJob + + runBlocking { + downloadJob.join() + } + + val kptoolsPath = "$workDir/kptools" + val kpimgPath = "$workDir/kpimg" + + if (!File(kptoolsPath).exists()) { + throw IOException("kptools file preparation failed") + } + + if (!File(kpimgPath).exists()) { + throw IOException("kpimg file preparation failed") + } + + runCommand(true, "chmod a+rx $kptoolsPath") + state.addLog("KPM tools preparation completed, starting patch operation") + + } catch (_: CancellationException) { + state.addLog("KPM tools download cancelled") + throw IOException("Tool preparation process interrupted") + } catch (e: Exception) { + state.addLog("KPM tools preparation failed: ${e.message}") + + state.addLog("Attempting to use legacy local file extraction...") + try { + prepareKpmToolsLegacy() + state.addLog("Successfully used local backup files") + } catch (legacyException: Exception) { + state.addLog("Local file extraction also failed: ${legacyException.message}") + throw IOException("Unable to prepare KPM tool files: ${e.message}") + } + } + } + + private fun prepareKpmToolsLegacy() { + File(workDir).mkdirs() + + val kptoolsPath = "$workDir/kptools" + val kpimgPath = "$workDir/kpimg" + + AssetsUtil.exportFiles(context, "kptools", kptoolsPath) + if (!File(kptoolsPath).exists()) { + throw IOException("Local kptools file extraction failed") + } + + AssetsUtil.exportFiles(context, "kpimg", kpimgPath) + if (!File(kpimgPath).exists()) { + throw IOException("Local kpimg file extraction failed") + } + + runCommand(true, "chmod a+rx $kptoolsPath") + } + + private fun cleanupDownloader() { + try { + val downloader = RemoteToolsDownloader(context, workDir) + downloader.cleanup() + } catch (_: Exception) { + } + } + + /** + * 执行KPM修补操作 + */ + private fun performKpmPatch() { + try { + // 创建临时解压目录 + val extractDir = "$workDir/extracted" + File(extractDir).mkdirs() + + // 解压压缩包到临时目录 + val unzipResult = runCommand(true, "cd $extractDir && unzip -o \"$filePath\"") + if (unzipResult != 0) { + throw IOException(context.getString(R.string.kpm_extract_zip_failed)) + } + + // 查找Image文件 + val findImageResult = runCommandGetOutput("find $extractDir -name '*Image*' -type f") + if (findImageResult.isBlank()) { + throw IOException(context.getString(R.string.kpm_image_file_not_found)) + } + + val imageFile = findImageResult.lines().first().trim() + val imageDir = File(imageFile).parent + val imageName = File(imageFile).name + + state.addLog(context.getString(R.string.kpm_found_image_file, imageFile)) + + // 复制KPM工具到Image文件所在目录 + runCommand(true, "cp $workDir/kptools $imageDir/") + runCommand(true, "cp $workDir/kpimg $imageDir/") + + // 执行KPM修补命令 + val patchCommand = if (kpmUndoPatch) { + "cd $imageDir && chmod a+rx kptools && ./kptools -u -s 123 -i $imageName -k kpimg -o oImage && mv oImage $imageName" + } else { + "cd $imageDir && chmod a+rx kptools && ./kptools -p -s 123 -i $imageName -k kpimg -o oImage && mv oImage $imageName" + } + + val patchResult = runCommand(true, patchCommand) + if (patchResult != 0) { + throw IOException( + if (kpmUndoPatch) context.getString(R.string.kpm_undo_patch_failed) + else context.getString(R.string.kpm_patch_failed) + ) + } + + state.addLog( + if (kpmUndoPatch) context.getString(R.string.kpm_undo_patch_success) + else context.getString(R.string.kpm_patch_success) + ) + + // 清理KPM工具文件 + runCommand(true, "rm -f $imageDir/kptools $imageDir/kpimg $imageDir/oImage") + + // 重新打包ZIP文件 + val originalFileName = File(filePath).name + val patchedFilePath = "$workDir/patched_$originalFileName" + + repackZipFolder(extractDir, patchedFilePath) + + // 替换原始文件 + runCommand(true, "mv \"$patchedFilePath\" \"$filePath\"") + + state.addLog(context.getString(R.string.kpm_file_repacked)) + + } catch (e: Exception) { + state.addLog(context.getString(R.string.kpm_patch_operation_failed, e.message)) + throw e + } finally { + // 清理临时文件 + runCommand(true, "rm -rf $workDir") + } + } + + private fun repackZipFolder(sourceDir: String, zipFilePath: String) { + try { + val buffer = ByteArray(1024) + val sourceFolder = File(sourceDir) + + FileOutputStream(zipFilePath).use { fos -> + ZipOutputStream(fos).use { zos -> + sourceFolder.walkTopDown().forEach { file -> + if (file.isFile) { + val relativePath = file.relativeTo(sourceFolder).path + val zipEntry = ZipEntry(relativePath) + zos.putNextEntry(zipEntry) + + file.inputStream().use { fis -> + var length: Int + while (fis.read(buffer).also { length = it } > 0) { + zos.write(buffer, 0, length) + } + } + + zos.closeEntry() + } + } + } + } + } catch (e: Exception) { + throw IOException("Failed to create zip file: ${e.message}", e) + } + } + + // 检查设备是否为AB分区设备 + private fun isAbDevice(): Boolean { + val abUpdate = runCommandGetOutput("getprop ro.build.ab_update") + if (!abUpdate.toBoolean()) return false + + val slotSuffix = runCommandGetOutput("getprop ro.boot.slot_suffix") + return slotSuffix.isNotEmpty() + } + + private fun cleanup() { + runCommand(false, "find ${context.filesDir.absolutePath} -type f ! -name '*.jpg' ! -name '*.png' -delete") + runCommand(false, "rm -rf $workDir") + } + + private fun copy() { + uri?.let { safeUri -> + context.contentResolver.openInputStream(safeUri)?.use { input -> + FileOutputStream(File(filePath)).use { output -> + input.copyTo(output) + } + } + } + } + + private fun getBinary() { + runCommand(false, "unzip \"$filePath\" \"*/update-binary\" -d ${context.filesDir.absolutePath}") + if (!File(binaryPath).exists()) { + throw IOException("Failed to extract update-binary") + } + } + + @SuppressLint("StringFormatInvalid") + private fun patch() { + val kernelVersion = runCommandGetOutput("cat /proc/version") + val versionRegex = """\d+\.\d+\.\d+""".toRegex() + val version = kernelVersion.let { versionRegex.find(it) }?.value ?: "" + val toolName = if (version.isNotEmpty()) { + val parts = version.split('.') + if (parts.size >= 2) { + val major = parts[0].toIntOrNull() ?: 0 + val minor = parts[1].toIntOrNull() ?: 0 + if (major < 5 || (major == 5 && minor <= 10)) "5_10" else "5_15+" + } else { + "5_15+" + } + } else { + "5_15+" + } + val toolPath = "${context.filesDir.absolutePath}/mkbootfs" + AssetsUtil.exportFiles(context, "$toolName-mkbootfs", toolPath) + state.addLog("${context.getString(R.string.kernel_version_log, version)} ${context.getString(R.string.tool_version_log, toolName)}") + runCommand(false, "sed -i '/chmod -R 755 tools bin;/i cp -f $toolPath \$AKHOME/tools;' $binaryPath") + } + + private fun flash() { + val process = ProcessBuilder("su") + .redirectErrorStream(true) + .start() + + try { + process.outputStream.bufferedWriter().use { writer -> + writer.write("export POSTINSTALL=${context.filesDir.absolutePath}\n") + + // 写入槽位信息到临时文件 + slot?.let { selectedSlot -> + writer.write("echo \"$selectedSlot\" > ${context.filesDir.absolutePath}/bootslot\n") + } + + // 构建刷写命令 + val flashCommand = buildString { + append("sh $binaryPath 3 1 \"$filePath\"") + if (slot != null) { + append(" \"$(cat ${context.filesDir.absolutePath}/bootslot)\"") + } + append(" && touch ${context.filesDir.absolutePath}/done\n") + } + + writer.write(flashCommand) + writer.write("exit\n") + writer.flush() + } + + process.inputStream.bufferedReader().use { reader -> + reader.lineSequence().forEach { line -> + if (line.startsWith("ui_print")) { + val logMessage = line.removePrefix("ui_print").trim() + state.addLog(logMessage) + + when { + logMessage.contains("extracting", ignoreCase = true) -> { + state.updateProgress(0.75f) + } + logMessage.contains("installing", ignoreCase = true) -> { + state.updateProgress(0.85f) + } + logMessage.contains("complete", ignoreCase = true) -> { + state.updateProgress(0.95f) + } + } + } + } + } + } finally { + process.destroy() + } + + if (!File("${context.filesDir.absolutePath}/done").exists()) { + throw IOException(context.getString(R.string.flash_failed_message)) + } + } + + private fun runCommand(su: Boolean, cmd: String): Int { + val shell = if (su) "su" else "sh" + val process = Runtime.getRuntime().exec(arrayOf(shell, "-c", cmd)) + + return try { + process.waitFor() + } finally { + process.destroy() + } + } + + private fun runCommandGetOutput(cmd: String): String { + return Shell.cmd(cmd).exec().out.joinToString("\n").trim() + } +} \ No newline at end of file diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/AssetsUtil.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/AssetsUtil.kt new file mode 100644 index 00000000..90fa9781 --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/AssetsUtil.kt @@ -0,0 +1,26 @@ +package com.sukisu.ultra.ui.kernelFlash.util + +import android.content.Context +import java.io.File +import java.io.FileOutputStream +import java.io.IOException + +object AssetsUtil { + @Throws(IOException::class) + fun exportFiles(context: Context, src: String, out: String) { + val fileNames = context.assets.list(src) + if (fileNames?.isNotEmpty() == true) { + val file = File(out) + file.mkdirs() + fileNames.forEach { fileName -> + exportFiles(context, "$src/$fileName", "$out/$fileName") + } + } else { + context.assets.open(src).use { inputStream -> + FileOutputStream(File(out)).use { outputStream -> + inputStream.copyTo(outputStream) + } + } + } + } +} \ No newline at end of file diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/RemoteToolsDownloader.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/RemoteToolsDownloader.kt new file mode 100644 index 00000000..b92656b4 --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/kernelFlash/util/RemoteToolsDownloader.kt @@ -0,0 +1,364 @@ +package com.sukisu.ultra.ui.kernelFlash.util + +import android.content.Context +import android.util.Log +import kotlinx.coroutines.* +import java.io.File +import java.io.FileOutputStream +import java.io.IOException +import java.net.HttpURLConnection +import java.net.SocketTimeoutException +import java.net.URL +import java.util.concurrent.TimeUnit + +class RemoteToolsDownloader( + private val context: Context, + private val workDir: String +) { + companion object { + private const val TAG = "RemoteToolsDownloader" + + // 远程下载URL配置 + private const val KPTOOLS_REMOTE_URL = "https://raw.githubusercontent.com/ShirkNeko/SukiSU_patch/refs/heads/main/kpm/kptools" + private const val KPIMG_REMOTE_URL = "https://raw.githubusercontent.com/ShirkNeko/SukiSU_patch/refs/heads/main/kpm/kpimg" + + // 网络超时配置(毫秒) + private const val CONNECTION_TIMEOUT = 15000 // 15秒连接超时 + private const val READ_TIMEOUT = 30000 // 30秒读取超时 + + // 最大重试次数 + private const val MAX_RETRY_COUNT = 3 + + // 文件校验相关 + private const val MIN_FILE_SIZE = 1024 + } + + interface DownloadProgressListener { + fun onProgress(fileName: String, progress: Int, total: Int) + fun onLog(message: String) + fun onError(fileName: String, error: String) + fun onSuccess(fileName: String, isRemote: Boolean) + } + + data class DownloadResult( + val success: Boolean, + val isRemoteSource: Boolean, + val errorMessage: String? = null + ) + + + suspend fun downloadToolsAsync(listener: DownloadProgressListener?): Map = withContext(Dispatchers.IO) { + val results = mutableMapOf() + + listener?.onLog("Starting to prepare KPM tool files...") + + try { + // 确保工作目录存在 + File(workDir).mkdirs() + + // 并行下载两个工具文件 + val kptoolsDeferred = async { downloadSingleTool("kptools", KPTOOLS_REMOTE_URL, listener) } + val kpimgDeferred = async { downloadSingleTool("kpimg", KPIMG_REMOTE_URL, listener) } + + // 等待所有下载完成 + results["kptools"] = kptoolsDeferred.await() + results["kpimg"] = kpimgDeferred.await() + + // 检查kptools执行权限 + val kptoolsFile = File(workDir, "kptools") + if (kptoolsFile.exists()) { + setExecutablePermission(kptoolsFile.absolutePath) + listener?.onLog("Set kptools execution permission") + } + + val successCount = results.values.count { it.success } + val remoteCount = results.values.count { it.success && it.isRemoteSource } + + listener?.onLog("KPM tools preparation completed: Success $successCount/2, Remote downloaded $remoteCount") + + } catch (e: Exception) { + Log.e(TAG, "Exception occurred while downloading tools", e) + listener?.onLog("Exception occurred during tool download: ${e.message}") + + if (!results.containsKey("kptools")) { + results["kptools"] = downloadSingleTool("kptools", null, listener) + } + if (!results.containsKey("kpimg")) { + results["kpimg"] = downloadSingleTool("kpimg", null, listener) + } + } + + results.toMap() + } + + private suspend fun downloadSingleTool( + fileName: String, + remoteUrl: String?, + listener: DownloadProgressListener? + ): DownloadResult = withContext(Dispatchers.IO) { + + val targetFile = File(workDir, fileName) + + if (remoteUrl == null) { + return@withContext useLocalVersion(fileName, targetFile, listener) + } + + // 尝试从远程下载 + listener?.onLog("Downloading $fileName from remote repository...") + + var lastError = "" + + // 重试机制 + repeat(MAX_RETRY_COUNT) { attempt -> + try { + val result = downloadFromRemote(fileName, remoteUrl, targetFile, listener) + if (result.success) { + listener?.onSuccess(fileName, true) + return@withContext result + } + lastError = result.errorMessage ?: "Unknown error" + + } catch (e: Exception) { + lastError = e.message ?: "Network exception" + Log.w(TAG, "$fileName download attempt ${attempt + 1} failed", e) + + if (attempt < MAX_RETRY_COUNT - 1) { + listener?.onLog("$fileName download failed, retrying in ${(attempt + 1) * 2} seconds...") + delay(TimeUnit.SECONDS.toMillis((attempt + 1) * 2L)) + } + } + } + + // 所有重试都失败,回退到本地版本 + listener?.onError(fileName, "Remote download failed: $lastError") + listener?.onLog("$fileName remote download failed, falling back to local version...") + + useLocalVersion(fileName, targetFile, listener) + } + + private suspend fun downloadFromRemote( + fileName: String, + remoteUrl: String, + targetFile: File, + listener: DownloadProgressListener? + ): DownloadResult = withContext(Dispatchers.IO) { + + var connection: HttpURLConnection? = null + + try { + val url = URL(remoteUrl) + connection = url.openConnection() as HttpURLConnection + + // 设置连接参数 + connection.apply { + connectTimeout = CONNECTION_TIMEOUT + readTimeout = READ_TIMEOUT + requestMethod = "GET" + setRequestProperty("User-Agent", "SukiSU-KPM-Downloader/1.0") + setRequestProperty("Accept", "*/*") + setRequestProperty("Connection", "close") + } + + // 建立连接 + connection.connect() + + val responseCode = connection.responseCode + if (responseCode != HttpURLConnection.HTTP_OK) { + return@withContext DownloadResult( + false, + isRemoteSource = false, + errorMessage = "HTTP error code: $responseCode" + ) + } + + val fileLength = connection.contentLength + Log.d(TAG, "$fileName remote file size: $fileLength bytes") + + // 创建临时文件 + val tempFile = File(targetFile.absolutePath + ".tmp") + + // 下载文件 + connection.inputStream.use { input -> + FileOutputStream(tempFile).use { output -> + val buffer = ByteArray(8192) + var totalBytes = 0 + var bytesRead: Int + + while (input.read(buffer).also { bytesRead = it } != -1) { + // 检查协程是否被取消 + ensureActive() + + output.write(buffer, 0, bytesRead) + totalBytes += bytesRead + + // 更新下载进度 + if (fileLength > 0) { + listener?.onProgress(fileName, totalBytes, fileLength) + } + } + + output.flush() + } + } + + // 验证下载的文件 + if (!validateDownloadedFile(tempFile, fileName)) { + tempFile.delete() + return@withContext DownloadResult( + success = false, + isRemoteSource = false, + errorMessage = "File verification failed" + ) + } + + // 移动临时文件到目标位置 + if (targetFile.exists()) { + targetFile.delete() + } + + if (!tempFile.renameTo(targetFile)) { + tempFile.delete() + return@withContext DownloadResult( + false, + isRemoteSource = false, + errorMessage = "Failed to move file" + ) + } + + Log.i(TAG, "$fileName remote download successful, file size: ${targetFile.length()} bytes") + listener?.onLog("$fileName remote download successful") + + DownloadResult(true, isRemoteSource = true) + + } catch (e: SocketTimeoutException) { + Log.w(TAG, "$fileName download timeout", e) + DownloadResult(false, isRemoteSource = false, errorMessage = "Connection timeout") + } catch (e: IOException) { + Log.w(TAG, "$fileName network IO exception", e) + DownloadResult(false, + isRemoteSource = false, + errorMessage = "Network connection exception: ${e.message}" + ) + } catch (e: Exception) { + Log.e(TAG, "$fileName exception occurred during download", e) + DownloadResult(false, + isRemoteSource = false, + errorMessage = "Download exception: ${e.message}" + ) + } finally { + connection?.disconnect() + } + } + + private suspend fun useLocalVersion( + fileName: String, + targetFile: File, + listener: DownloadProgressListener? + ): DownloadResult = withContext(Dispatchers.IO) { + + try { + AssetsUtil.exportFiles(context, fileName, targetFile.absolutePath) + + if (!targetFile.exists()) { + val errorMsg = "Local $fileName file extraction failed" + listener?.onError(fileName, errorMsg) + return@withContext DownloadResult(false, + isRemoteSource = false, + errorMessage = errorMsg + ) + } + + if (!validateDownloadedFile(targetFile, fileName)) { + val errorMsg = "Local $fileName file verification failed" + listener?.onError(fileName, errorMsg) + return@withContext DownloadResult( + success = false, + isRemoteSource = false, + errorMessage = errorMsg + ) + } + + Log.i(TAG, "$fileName local version loaded successfully, file size: ${targetFile.length()} bytes") + listener?.onLog("$fileName local version loaded successfully") + listener?.onSuccess(fileName, false) + + DownloadResult(true, isRemoteSource = false) + + } catch (e: Exception) { + Log.e(TAG, "$fileName local version loading failed", e) + val errorMsg = "Local version loading failed: ${e.message}" + listener?.onError(fileName, errorMsg) + DownloadResult(success = false, isRemoteSource = false, errorMessage = errorMsg) + } + } + + private fun validateDownloadedFile(file: File, fileName: String): Boolean { + if (!file.exists()) { + Log.w(TAG, "$fileName file does not exist") + return false + } + + val fileSize = file.length() + if (fileSize < MIN_FILE_SIZE) { + Log.w(TAG, "$fileName file is too small: $fileSize bytes") + return false + } + + try { + file.inputStream().use { input -> + val header = ByteArray(4) + val bytesRead = input.read(header) + + if (bytesRead < 4) { + Log.w(TAG, "$fileName file header read incomplete") + return false + } + + val isELF = header[0] == 0x7F.toByte() && + header[1] == 'E'.code.toByte() && + header[2] == 'L'.code.toByte() && + header[3] == 'F'.code.toByte() + + if (fileName == "kptools" && !isELF) { + Log.w(TAG, "kptools file format is invalid, not ELF format") + return false + } + + Log.d(TAG, "$fileName file verification passed, size: $fileSize bytes, ELF: $isELF") + return true + } + } catch (e: Exception) { + Log.w(TAG, "$fileName file verification exception", e) + return false + } + } + + private fun setExecutablePermission(filePath: String) { + try { + val process = Runtime.getRuntime().exec(arrayOf("su", "-c", "chmod a+rx $filePath")) + process.waitFor() + Log.d(TAG, "Set execution permission for $filePath") + } catch (e: Exception) { + Log.w(TAG, "Failed to set execution permission: $filePath", e) + try { + File(filePath).setExecutable(true, false) + } catch (ex: Exception) { + Log.w(TAG, "Java method to set permissions also failed", ex) + } + } + } + + + fun cleanup() { + try { + File(workDir).listFiles()?.forEach { file -> + if (file.name.endsWith(".tmp")) { + file.delete() + Log.d(TAG, "Cleaned temporary file: ${file.name}") + } + } + } catch (e: Exception) { + Log.w(TAG, "Failed to clean temporary files", e) + } + } +} diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt index 7fdee6e0..22f04b42 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt @@ -117,10 +117,7 @@ fun HomePager( TopBar( kernelVersion = kernelVersion, onInstallClick = { - navigator.navigate(InstallScreenDestination) { - popUpTo(InstallScreenDestination) { - inclusive = true - } + navigator.navigate(InstallScreenDestination()) { launchSingleTop = true } }, @@ -171,7 +168,7 @@ fun HomePager( StatusCard( kernelVersion, ksuVersion, lkmMode, onClickInstall = { - navigator.navigate(InstallScreenDestination) { + navigator.navigate(InstallScreenDestination()) { launchSingleTop = true } }, diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt index b0f26561..4966c0c2 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt @@ -14,6 +14,7 @@ import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.LocalIndication import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -46,11 +47,18 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.SdStorage +import androidx.compose.material.icons.filled.Security +import androidx.core.net.toUri import androidx.lifecycle.compose.dropUnlessResumed import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.generated.destinations.FlashScreenDestination +import com.ramcosta.composedestinations.generated.destinations.KernelFlashScreenDestination import com.ramcosta.composedestinations.navigation.DestinationsNavigator import dev.chrisbanes.haze.HazeState import dev.chrisbanes.haze.HazeStyle @@ -58,9 +66,11 @@ import dev.chrisbanes.haze.HazeTint import dev.chrisbanes.haze.hazeEffect import dev.chrisbanes.haze.hazeSource import com.sukisu.ultra.R +import com.sukisu.ultra.getKernelVersion import com.sukisu.ultra.ui.component.ChooseKmiDialog import com.sukisu.ultra.ui.component.SuperDropdown import com.sukisu.ultra.ui.component.rememberConfirmDialog +import com.sukisu.ultra.ui.kernelFlash.component.SlotSelectionDialog import com.sukisu.ultra.ui.util.LkmSelection import com.sukisu.ultra.ui.util.getAvailablePartitions import com.sukisu.ultra.ui.util.getCurrentKmi @@ -84,6 +94,11 @@ import top.yukonga.miuix.kmp.icon.MiuixIcons import top.yukonga.miuix.kmp.icon.icons.useful.Back import top.yukonga.miuix.kmp.icon.icons.useful.Edit import top.yukonga.miuix.kmp.icon.icons.useful.Move +import top.yukonga.miuix.kmp.extra.SuperDialog +import top.yukonga.miuix.kmp.basic.TextButton +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.unit.DpSize import top.yukonga.miuix.kmp.theme.MiuixTheme import top.yukonga.miuix.kmp.theme.MiuixTheme.colorScheme import top.yukonga.miuix.kmp.utils.getWindowSize @@ -94,9 +109,18 @@ import top.yukonga.miuix.kmp.utils.scrollEndHaptic * @author weishu * @date 2024/3/12. */ +enum class KpmPatchOption { + FOLLOW_KERNEL, + PATCH_KPM, + UNDO_PATCH_KPM +} + @Composable @Destination -fun InstallScreen(navigator: DestinationsNavigator) { +fun InstallScreen( + navigator: DestinationsNavigator, + preselectedKernelUri: String? = null +) { val context = LocalContext.current var installMethod by remember { mutableStateOf(null) @@ -106,26 +130,110 @@ fun InstallScreen(navigator: DestinationsNavigator) { mutableStateOf(LkmSelection.KmiNone) } + var kpmPatchOption by remember { mutableStateOf(KpmPatchOption.FOLLOW_KERNEL) } + var showSlotSelectionDialog by remember { mutableStateOf(false) } + var showKpmPatchDialog by remember { mutableStateOf(false) } + var tempKernelUri by remember { mutableStateOf(null) } + + val kernelVersion = getKernelVersion() + val isGKI = kernelVersion.isGKI() + val isAbDevice = produceState(initialValue = false) { + value = isAbDevice() + }.value + var partitionSelectionIndex by remember { mutableIntStateOf(0) } var partitionsState by remember { mutableStateOf>(emptyList()) } var hasCustomSelected by remember { mutableStateOf(false) } + val horizonKernelSummary = stringResource(R.string.horizon_kernel_summary) + + // 处理预选的内核文件 + LaunchedEffect(preselectedKernelUri) { + preselectedKernelUri?.let { uriString -> + try { + val preselectedUri = uriString.toUri() + val horizonMethod = InstallMethod.HorizonKernel( + uri = preselectedUri, + summary = horizonKernelSummary + ) + installMethod = horizonMethod + tempKernelUri = preselectedUri + if (isAbDevice) { + showSlotSelectionDialog = true + } else { + showKpmPatchDialog = true + } + } catch (e: Exception) { + e.printStackTrace() + } + } + } val onInstall = { installMethod?.let { method -> - val isOta = method is InstallMethod.DirectInstallToInactiveSlot - val partitionSelection = partitionsState.getOrNull(partitionSelectionIndex) - val flashIt = FlashIt.FlashBoot( - boot = if (method is InstallMethod.SelectFile) method.uri else null, - lkm = lkmSelection, - ota = isOta, - partition = partitionSelection - ) - navigator.navigate(FlashScreenDestination(flashIt)) { - launchSingleTop = true + when (method) { + is InstallMethod.HorizonKernel -> { + method.uri?.let { uri -> + navigator.navigate( + KernelFlashScreenDestination( + kernelUri = uri, + selectedSlot = method.slot, + kpmPatchEnabled = kpmPatchOption == KpmPatchOption.PATCH_KPM, + kpmUndoPatch = kpmPatchOption == KpmPatchOption.UNDO_PATCH_KPM + ) + ) { + launchSingleTop = true + } + } + } + else -> { + val isOta = method is InstallMethod.DirectInstallToInactiveSlot + val partitionSelection = partitionsState.getOrNull(partitionSelectionIndex) + val flashIt = FlashIt.FlashBoot( + boot = if (method is InstallMethod.SelectFile) method.uri else null, + lkm = lkmSelection, + ota = isOta, + partition = partitionSelection + ) + navigator.navigate(FlashScreenDestination(flashIt)) { + launchSingleTop = true + } + } } } } + // 槽位选择对话框 + if (showSlotSelectionDialog && isAbDevice) { + SlotSelectionDialog( + show = true, + onDismiss = { showSlotSelectionDialog = false }, + onSlotSelected = { slot -> + showSlotSelectionDialog = false + val horizonMethod = InstallMethod.HorizonKernel( + uri = tempKernelUri, + slot = slot, + summary = horizonKernelSummary + ) + installMethod = horizonMethod + // 槽位选择后,显示 KPM 补丁选择对话框 + showKpmPatchDialog = true + } + ) + } + + // KPM补丁选择对话框 + if (showKpmPatchDialog) { + KpmPatchSelectionDialog( + show = true, + currentOption = kpmPatchOption, + onDismiss = { showKpmPatchDialog = false }, + onOptionSelected = { option -> + kpmPatchOption = option + showKpmPatchDialog = false + } + ) + } + val currentKmi by produceState(initialValue = "") { value = getCurrentKmi() } val showChooseKmiDialog = rememberSaveable { mutableStateOf(false) } @@ -137,7 +245,7 @@ fun InstallScreen(navigator: DestinationsNavigator) { } val onClickNext = { - if (lkmSelection == LkmSelection.KmiNone && currentKmi.isBlank()) { + if (isGKI && lkmSelection == LkmSelection.KmiNone && currentKmi.isBlank() && installMethod !is InstallMethod.HorizonKernel) { // no lkm file selected and cannot get current kmi showChooseKmiDialog.value = true chooseKmiDialog @@ -174,8 +282,8 @@ fun InstallScreen(navigator: DestinationsNavigator) { val scrollBehavior = MiuixScrollBehavior() val hazeState = remember { HazeState() } val hazeStyle = HazeStyle( - backgroundColor = MiuixTheme.colorScheme.background, - tint = HazeTint(MiuixTheme.colorScheme.background.copy(0.8f)) + backgroundColor = colorScheme.background, + tint = HazeTint(colorScheme.background.copy(0.8f)) ) Scaffold( @@ -207,9 +315,22 @@ fun InstallScreen(navigator: DestinationsNavigator) { modifier = Modifier .fillMaxWidth(), ) { - SelectInstallMethod { method -> - installMethod = method - } + SelectInstallMethod( + onSelected = { method -> + if (method is InstallMethod.HorizonKernel && method.uri != null) { + if (isAbDevice) { + tempKernelUri = method.uri + showSlotSelectionDialog = true + } else { + installMethod = method + showKpmPatchDialog = true + } + } else { + installMethod = method + } + }, + isAbDevice = isAbDevice + ) } AnimatedVisibility( visible = installMethod is InstallMethod.DirectInstall || installMethod is InstallMethod.DirectInstallToInactiveSlot, @@ -256,29 +377,89 @@ fun InstallScreen(navigator: DestinationsNavigator) { ) } } - Card( - modifier = Modifier - .fillMaxWidth() - .padding(top = 12.dp), - ) { - SuperArrow( - title = stringResource(id = R.string.install_upload_lkm_file), - summary = (lkmSelection as? LkmSelection.LkmUri)?.let { - stringResource( - id = R.string.selected_lkm, - it.uri.lastPathSegment ?: "(file)" - ) - }, - onClick = onLkmUpload, - leftAction = { - Icon( - MiuixIcons.Useful.Move, - tint = colorScheme.onSurface, - modifier = Modifier.padding(end = 16.dp), - contentDescription = null + // LKM 上传选项(仅 GKI) + if (isGKI) { + Card( + modifier = Modifier + .fillMaxWidth() + .padding(top = 12.dp), + ) { + SuperArrow( + title = stringResource(id = R.string.install_upload_lkm_file), + summary = (lkmSelection as? LkmSelection.LkmUri)?.let { + stringResource( + id = R.string.selected_lkm, + it.uri.lastPathSegment ?: "(file)" + ) + }, + onClick = onLkmUpload, + leftAction = { + Icon( + MiuixIcons.Useful.Move, + tint = colorScheme.onSurface, + modifier = Modifier.padding(end = 16.dp), + contentDescription = null + ) + } + ) + } + } + + // AnyKernel3 相关信息显示 + (installMethod as? InstallMethod.HorizonKernel)?.let { method -> + if (method.slot != null) { + Card( + modifier = Modifier + .fillMaxWidth() + .padding(top = 12.dp), + ) { + SuperArrow( + title = stringResource( + id = R.string.selected_slot, + if (method.slot == "a") stringResource(id = R.string.slot_a) + else stringResource(id = R.string.slot_b) + ), + onClick = {}, + leftAction = { + Icon( + Icons.Filled.SdStorage, + tint = colorScheme.onSurface, + modifier = Modifier.padding(end = 16.dp), + contentDescription = null + ) + } ) } - ) + } + + // KPM 状态显示 + if (kpmPatchOption != KpmPatchOption.FOLLOW_KERNEL) { + Card( + modifier = Modifier + .fillMaxWidth() + .padding(top = 12.dp), + ) { + SuperArrow( + title = when (kpmPatchOption) { + KpmPatchOption.PATCH_KPM -> stringResource(R.string.kpm_patch_enabled) + KpmPatchOption.UNDO_PATCH_KPM -> stringResource(R.string.kpm_undo_patch_enabled) + else -> "" + }, + onClick = {}, + leftAction = { + Icon( + Icons.Filled.Security, + tint = if (kpmPatchOption == KpmPatchOption.PATCH_KPM) + colorScheme.primary + else + colorScheme.secondary, + modifier = Modifier.padding(end = 16.dp), + contentDescription = null + ) + } + ) + } + } } Button( modifier = Modifier @@ -322,19 +503,27 @@ sealed class InstallMethod { get() = R.string.install_inactive_slot } + data class HorizonKernel( + val uri: Uri? = null, + val slot: String? = null, + @get:StringRes override val label: Int = R.string.horizon_kernel, + override val summary: String? = null + ) : InstallMethod() + abstract val label: Int open val summary: String? = null } @Composable -private fun SelectInstallMethod(onSelected: (InstallMethod) -> Unit = {}) { +private fun SelectInstallMethod( + onSelected: (InstallMethod) -> Unit = {}, + isAbDevice: Boolean = false +) { val rootAvailable = rootAvailable() - val isAbDevice = produceState(initialValue = false) { - value = isAbDevice() - }.value val defaultPartitionName = produceState(initialValue = "boot") { value = getDefaultPartition() }.value + val horizonKernelSummary = stringResource(R.string.horizon_kernel_summary) val selectFileTip = stringResource( id = R.string.select_file_tip, defaultPartitionName ) @@ -345,17 +534,26 @@ private fun SelectInstallMethod(onSelected: (InstallMethod) -> Unit = {}) { if (isAbDevice) { radioOptions.add(InstallMethod.DirectInstallToInactiveSlot) } + radioOptions.add(InstallMethod.HorizonKernel(summary = horizonKernelSummary)) } var selectedOption by remember { mutableStateOf(null) } + var currentSelectingMethod by remember { mutableStateOf(null) } + val selectImageLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.StartActivityForResult() ) { if (it.resultCode == Activity.RESULT_OK) { it.data?.data?.let { uri -> - val option = InstallMethod.SelectFile(uri, summary = selectFileTip) - selectedOption = option - onSelected(option) + val option = when (currentSelectingMethod) { + is InstallMethod.SelectFile -> InstallMethod.SelectFile(uri, summary = selectFileTip) + is InstallMethod.HorizonKernel -> InstallMethod.HorizonKernel(uri, summary = horizonKernelSummary) + else -> null + } + option?.let { opt -> + selectedOption = opt + onSelected(opt) + } } } } @@ -370,11 +568,12 @@ private fun SelectInstallMethod(onSelected: (InstallMethod) -> Unit = {}) { val dialogContent = stringResource(id = R.string.install_inactive_slot_warning) val onClick = { option: InstallMethod -> - + currentSelectingMethod = option when (option) { - is InstallMethod.SelectFile -> { + is InstallMethod.SelectFile, is InstallMethod.HorizonKernel -> { selectImageLauncher.launch(Intent(Intent.ACTION_GET_CONTENT).apply { - type = "application/octet-stream" + type = "application/*" + putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("application/octet-stream", "application/zip")) }) } @@ -450,6 +649,121 @@ private fun TopBar( ) } +@Composable +private fun KpmPatchSelectionDialog( + show: Boolean, + currentOption: KpmPatchOption, + onDismiss: () -> Unit, + onOptionSelected: (KpmPatchOption) -> Unit +) { + var selectedOption by remember { mutableStateOf(currentOption) } + val showDialog = remember { mutableStateOf(show) } + + LaunchedEffect(show) { + showDialog.value = show + if (show) { + selectedOption = currentOption + } + } + + SuperDialog( + show = showDialog, + insideMargin = DpSize(0.dp, 0.dp), + onDismissRequest = { + showDialog.value = false + onDismiss() + }, + content = { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 24.dp) + ) { + // 标题 + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 12.dp), + text = stringResource(id = R.string.kpm_patch_options), + fontSize = MiuixTheme.textStyles.title4.fontSize, + fontWeight = FontWeight.Medium, + textAlign = TextAlign.Center, + color = colorScheme.onSurface + ) + + // 描述 + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 8.dp), + text = stringResource(id = R.string.kpm_patch_description), + fontSize = MiuixTheme.textStyles.body2.fontSize, + color = colorScheme.onSurfaceVariantSummary, + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(12.dp)) + + // 选项列表 + val options = listOf( + KpmPatchOption.FOLLOW_KERNEL to stringResource(R.string.kpm_follow_kernel_file), + KpmPatchOption.PATCH_KPM to stringResource(R.string.enable_kpm_patch), + KpmPatchOption.UNDO_PATCH_KPM to stringResource(R.string.enable_kpm_undo_patch) + ) + + options.forEach { (option, title) -> + SuperArrow( + title = title, + onClick = { + selectedOption = option + }, + leftAction = { + Icon( + imageVector = Icons.Filled.Security, + contentDescription = null, + tint = if (selectedOption == option) { + colorScheme.primary + } else { + colorScheme.onSurfaceVariantSummary + } + ) + }, + insideMargin = PaddingValues(horizontal = 24.dp, vertical = 12.dp) + ) + } + + Spacer(modifier = Modifier.height(12.dp)) + + // 按钮行 + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + TextButton( + text = stringResource(android.R.string.cancel), + onClick = { + showDialog.value = false + onDismiss() + }, + modifier = Modifier.weight(1f) + ) + TextButton( + text = stringResource(android.R.string.ok), + onClick = { + onOptionSelected(selectedOption) + showDialog.value = false + onDismiss() + }, + modifier = Modifier.weight(1f) + ) + } + } + } + ) +} + private fun isKoFile(context: Context, uri: Uri): Boolean { val seg = uri.lastPathSegment ?: "" if (seg.endsWith(".ko", ignoreCase = true)) return true diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt new file mode 100644 index 00000000..918f644b --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt @@ -0,0 +1,1032 @@ +package com.sukisu.ultra.ui.screen + +import android.content.Context +import android.content.Intent +import android.util.Log +import android.widget.Toast +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.nestedscroll.NestedScrollConnection +import androidx.compose.ui.input.nestedscroll.NestedScrollSource +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.* +import androidx.compose.runtime.* +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.saveable.rememberSaveable +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.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.lifecycle.viewmodel.compose.viewModel +import kotlinx.coroutines.CoroutineScope +import androidx.compose.ui.layout.SubcomposeLayout +import androidx.compose.foundation.isSystemInDarkTheme +import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import com.sukisu.ultra.ui.component.* +import com.sukisu.ultra.ui.viewmodel.KpmViewModel +import com.sukisu.ultra.ui.util.* +import java.io.File +import androidx.core.content.edit +import com.sukisu.ultra.R +import java.io.FileInputStream +import java.net.* +import android.app.Activity +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.LayoutDirection +import dev.chrisbanes.haze.HazeState +import dev.chrisbanes.haze.HazeStyle +import dev.chrisbanes.haze.HazeTint +import dev.chrisbanes.haze.hazeSource +import top.yukonga.miuix.kmp.basic.* +import top.yukonga.miuix.kmp.extra.SuperDialog +import top.yukonga.miuix.kmp.icon.MiuixIcons +import top.yukonga.miuix.kmp.icon.icons.useful.Refresh +import top.yukonga.miuix.kmp.theme.MiuixTheme +import top.yukonga.miuix.kmp.theme.MiuixTheme.colorScheme +import top.yukonga.miuix.kmp.utils.getWindowSize +import top.yukonga.miuix.kmp.utils.overScrollVertical +import top.yukonga.miuix.kmp.utils.scrollEndHaptic + +/** + * KPM 管理界面 + * 以下内核模块功能由KernelPatch开发,经过修改后加入SukiSU Ultra的内核模块功能 + * 开发者:ShirkNeko, Liaokong + */ +@Destination +@Composable +fun KpmScreen( + viewModel: KpmViewModel = viewModel(), + bottomInnerPadding: Dp = 0.dp +) { + val context = LocalContext.current + val scope = rememberCoroutineScope() + val confirmDialog = rememberConfirmDialog() + + context.getSharedPreferences("app_preferences", Context.MODE_PRIVATE) + + val listState = rememberLazyListState() + var fabVisible by remember { mutableStateOf(true) } + var scrollDistance by remember { mutableFloatStateOf(0f) } + + val searchStatus by viewModel.searchStatus + val scrollBehavior = MiuixScrollBehavior() + val dynamicTopPadding by remember { + derivedStateOf { 12.dp * (1f - scrollBehavior.state.collapsedFraction) } + } + + val moduleConfirmContentMap = viewModel.moduleList.associate { module -> + val moduleFileName = module.id + module.id to stringResource(R.string.confirm_uninstall_content, moduleFileName) + } + val hazeState = remember { HazeState() } + val hazeStyle = HazeStyle( + backgroundColor = colorScheme.background, + tint = HazeTint(colorScheme.background.copy(0.8f)) + ) + + LaunchedEffect(searchStatus.searchText) { + viewModel.updateSearchText(searchStatus.searchText) + } + + + val kpmInstallSuccess = stringResource(R.string.kpm_install_success) + val kpmInstallFailed = stringResource(R.string.kpm_install_failed) + val cancel = stringResource(R.string.cancel) + val uninstall = stringResource(R.string.uninstall) + val failedToCheckModuleFile = stringResource(R.string.snackbar_failed_to_check_module_file) + val kpmUninstallSuccess = stringResource(R.string.kpm_uninstall_success) + val kpmUninstallFailed = stringResource(R.string.kpm_uninstall_failed) + val kpmInstallMode = stringResource(R.string.kpm_install_mode) + val kpmInstallModeLoad = stringResource(R.string.kpm_install_mode_load) + val kpmInstallModeEmbed = stringResource(R.string.kpm_install_mode_embed) + val invalidFileTypeMessage = stringResource(R.string.invalid_file_type) + val confirmTitle = stringResource(R.string.confirm_uninstall_title_with_filename) + + val showToast: suspend (String) -> Unit = { msg -> + scope.launch(Dispatchers.Main) { + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show() + } + } + + var tempFileForInstall by remember { mutableStateOf(null) } + var showInstallModeDialog by remember { mutableStateOf(false) } + val showInstallDialogState = remember { mutableStateOf(false) } + var moduleName by remember { mutableStateOf(null) } + + LaunchedEffect(tempFileForInstall) { + tempFileForInstall?.let { tempFile -> + try { + val shell = getRootShell() + val command = "strings ${tempFile.absolutePath} | grep 'name='" + val result = shell.newJob().add(command).to(ArrayList(), null).exec() + if (result.isSuccess) { + for (line in result.out) { + if (line.startsWith("name=")) { + moduleName = line.substringAfter("name=").trim() + break + } + } + } + } catch (e: Exception) { + Log.e("KsuCli", "Failed to get module name: ${e.message}", e) + } + } + } + + LaunchedEffect(showInstallModeDialog) { + showInstallDialogState.value = showInstallModeDialog + } + + if (showInstallModeDialog) { + SuperDialog( + show = showInstallDialogState, + title = kpmInstallMode, + onDismissRequest = { + showInstallDialogState.value = false + showInstallModeDialog = false + tempFileForInstall?.delete() + tempFileForInstall = null + moduleName = null + }, + content = { + Column { + moduleName?.let { + Text( + text = stringResource(R.string.kpm_install_mode_description, it), + color = colorScheme.onBackground + ) + } + Spacer(modifier = Modifier.height(16.dp)) + Column( + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + Button( + onClick = { + scope.launch { + showInstallDialogState.value = false + showInstallModeDialog = false + tempFileForInstall?.let { tempFile -> + handleModuleInstall( + tempFile = tempFile, + isEmbed = false, + viewModel = viewModel, + showToast = showToast, + kpmInstallSuccess = kpmInstallSuccess, + kpmInstallFailed = kpmInstallFailed + ) + } + tempFileForInstall = null + moduleName = null + } + }, + modifier = Modifier.fillMaxWidth(), + ) { + Icon( + imageVector = Icons.Filled.Download, + contentDescription = null, + modifier = Modifier.size(18.dp).padding(end = 4.dp) + ) + Text(kpmInstallModeLoad) + } + + Button( + onClick = { + scope.launch { + showInstallDialogState.value = false + showInstallModeDialog = false + tempFileForInstall?.let { tempFile -> + handleModuleInstall( + tempFile = tempFile, + isEmbed = true, + viewModel = viewModel, + showToast = showToast, + kpmInstallSuccess = kpmInstallSuccess, + kpmInstallFailed = kpmInstallFailed + ) + } + tempFileForInstall = null + moduleName = null + } + }, + modifier = Modifier.fillMaxWidth(), + ) { + Icon( + imageVector = Icons.Filled.Inventory, + contentDescription = null, + modifier = Modifier.size(18.dp).padding(end = 4.dp) + ) + Text(kpmInstallModeEmbed) + } + } + Spacer(modifier = Modifier.height(16.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + TextButton( + text = cancel, + onClick = { + showInstallDialogState.value = false + showInstallModeDialog = false + tempFileForInstall?.delete() + tempFileForInstall = null + moduleName = null + }, + modifier = Modifier.weight(1f) + ) + } + } + } + ) + } + + val selectPatchLauncher = rememberLauncherForActivityResult( + contract = ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode != Activity.RESULT_OK) return@rememberLauncherForActivityResult + + val uri = result.data?.data ?: return@rememberLauncherForActivityResult + + scope.launch { + val fileName = uri.lastPathSegment ?: "unknown.kpm" + val encodedFileName = URLEncoder.encode(fileName, "UTF-8") + val tempFile = File(context.cacheDir, encodedFileName) + + context.contentResolver.openInputStream(uri)?.use { input -> + tempFile.outputStream().use { output -> + input.copyTo(output) + } + } + + val mimeType = context.contentResolver.getType(uri) + val isCorrectMimeType = mimeType == null || mimeType.contains("application/octet-stream") + + if (!isCorrectMimeType) { + var shouldShowToast = true + try { + val matchCount = checkStringsCommand(tempFile) + val isElf = isElfFile(tempFile) + + if (matchCount >= 1 || isElf) { + shouldShowToast = false + } + } catch (e: Exception) { + Log.e("KsuCli", "Failed to execute checks: ${e.message}", e) + } + if (shouldShowToast) { + showToast(invalidFileTypeMessage) + } + tempFile.delete() + return@launch + } + tempFileForInstall = tempFile + showInstallModeDialog = true + } + } + + LaunchedEffect(Unit) { + while(true) { + viewModel.fetchModuleList() + delay(5000) + } + } + + val nestedScrollConnection = remember { + object : NestedScrollConnection { + override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset { + val isScrolledToEnd = + (listState.layoutInfo.visibleItemsInfo.lastOrNull()?.index == listState.layoutInfo.totalItemsCount - 1 + && (listState.layoutInfo.visibleItemsInfo.lastOrNull()?.size + ?: 0) < listState.layoutInfo.viewportEndOffset) + val delta = available.y + if (!isScrolledToEnd) { + scrollDistance += delta + if (scrollDistance < -50f) { + if (fabVisible) fabVisible = false + scrollDistance = 0f + } else if (scrollDistance > 50f) { + if (!fabVisible) fabVisible = true + scrollDistance = 0f + } + } + return Offset.Zero + } + } + } + val offsetHeight by animateDpAsState( + targetValue = if (fabVisible) 0.dp else 180.dp + WindowInsets.systemBars.asPaddingValues().calculateBottomPadding(), + animationSpec = tween(durationMillis = 350) + ) + + Scaffold( + topBar = { + searchStatus.TopAppBarAnim(hazeState = hazeState, hazeStyle = hazeStyle) { + TopAppBar( + color = Color.Transparent, + title = stringResource(R.string.kpm_title), + actions = { + IconButton( + onClick = { viewModel.fetchModuleList() } + ) { + Icon( + imageVector = MiuixIcons.Useful.Refresh, + contentDescription = stringResource(R.string.refresh), + tint = colorScheme.onBackground + ) + } + }, + scrollBehavior = scrollBehavior + ) + } + }, + floatingActionButton = { + AnimatedVisibility(visible = fabVisible) { + FloatingActionButton( + modifier = Modifier + .offset(y = offsetHeight) + .padding(bottom = bottomInnerPadding + 20.dp, end = 20.dp) + .border(0.05.dp, colorScheme.outline.copy(alpha = 0.5f), CircleShape), + shadowElevation = 0.dp, + onClick = { + selectPatchLauncher.launch( + Intent(Intent.ACTION_GET_CONTENT).apply { + type = "application/octet-stream" + } + ) + }, + content = { + Icon( + painter = painterResource(id = R.drawable.package_import), + contentDescription = null, + tint = Color.White, + modifier = Modifier.size(40.dp) + ) + } + ) + } + }, + popupHost = { + searchStatus.SearchPager( + defaultResult = {}, + searchBarTopPadding = dynamicTopPadding, + ) { + item { + Spacer(Modifier.height(6.dp)) + } + items(viewModel.moduleList) { module -> + KpmModuleItem( + module = module, + onUninstall = { + scope.launch { + val confirmContent = moduleConfirmContentMap[module.id] ?: "" + handleModuleUninstall( + module = module, + viewModel = viewModel, + showToast = showToast, + kpmUninstallSuccess = kpmUninstallSuccess, + kpmUninstallFailed = kpmUninstallFailed, + failedToCheckModuleFile = failedToCheckModuleFile, + uninstall = uninstall, + cancel = cancel, + confirmDialog = confirmDialog, + confirmTitle = confirmTitle, + confirmContent = confirmContent + ) + } + }, + onControl = { + viewModel.loadModuleDetail(module.id) + } + ) + } + item { + val imeBottomPadding = WindowInsets.ime.asPaddingValues().calculateBottomPadding() + Spacer(Modifier.height(maxOf(bottomInnerPadding, imeBottomPadding))) + } + } + }, + contentWindowInsets = WindowInsets.systemBars.add(WindowInsets.displayCutout).only(WindowInsetsSides.Horizontal) + ) { innerPadding -> + val layoutDirection = LocalLayoutDirection.current + when { + viewModel.moduleList.isEmpty() && searchStatus.searchText.isEmpty() -> { + Box( + modifier = Modifier + .fillMaxSize() + .padding( + top = innerPadding.calculateTopPadding(), + start = innerPadding.calculateStartPadding(layoutDirection), + end = innerPadding.calculateEndPadding(layoutDirection), + bottom = bottomInnerPadding + ), + contentAlignment = Alignment.Center + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Icon( + imageVector = Icons.Filled.Code, + contentDescription = null, + tint = colorScheme.primary.copy(alpha = 0.6f), + modifier = Modifier + .size(96.dp) + .padding(bottom = 16.dp) + ) + Text( + stringResource(R.string.kpm_empty), + textAlign = TextAlign.Center, + color = colorScheme.onBackground + ) + } + } + } + else -> { + searchStatus.SearchBox( + searchBarTopPadding = dynamicTopPadding, + contentPadding = PaddingValues( + top = innerPadding.calculateTopPadding(), + start = innerPadding.calculateStartPadding(layoutDirection), + end = innerPadding.calculateEndPadding(layoutDirection) + ), + hazeState = hazeState, + hazeStyle = hazeStyle + ) { boxHeight -> + KpmList( + viewModel = viewModel, + listState = listState, + scope = scope, + moduleConfirmContentMap = moduleConfirmContentMap, + showToast = showToast, + kpmUninstallSuccess = kpmUninstallSuccess, + kpmUninstallFailed = kpmUninstallFailed, + failedToCheckModuleFile = failedToCheckModuleFile, + uninstall = uninstall, + cancel = cancel, + confirmDialog = confirmDialog, + confirmTitle = confirmTitle, + scrollBehavior = scrollBehavior, + nestedScrollConnection = nestedScrollConnection, + hazeState = hazeState, + innerPadding = innerPadding, + bottomInnerPadding = bottomInnerPadding, + boxHeight = boxHeight, + layoutDirection = layoutDirection + ) + } + } + } + } +} + +private suspend fun handleModuleInstall( + tempFile: File, + isEmbed: Boolean, + viewModel: KpmViewModel, + showToast: suspend (String) -> Unit, + kpmInstallSuccess: String, + kpmInstallFailed: String +) { + var moduleId: String? = null + try { + val shell = getRootShell() + val command = "strings ${tempFile.absolutePath} | grep 'name='" + val result = shell.newJob().add(command).to(ArrayList(), null).exec() + if (result.isSuccess) { + for (line in result.out) { + if (line.startsWith("name=")) { + moduleId = line.substringAfter("name=").trim() + break + } + } + } + } catch (e: Exception) { + Log.e("KsuCli", "Failed to get module ID from strings command: ${e.message}", e) + } + + if (moduleId == null || moduleId.isEmpty()) { + Log.e("KsuCli", "Failed to extract module ID from file: ${tempFile.name}") + showToast(kpmInstallFailed) + tempFile.delete() + return + } + + val targetPath = "/data/adb/kpm/$moduleId.kpm" + + try { + if (isEmbed) { + val shell = getRootShell() + shell.newJob().add("mkdir -p /data/adb/kpm").exec() + shell.newJob().add("cp ${tempFile.absolutePath} $targetPath").exec() + } + + val loadResult = loadKpmModule(tempFile.absolutePath) + if (loadResult.startsWith("Error")) { + Log.e("KsuCli", "Failed to load KPM module: $loadResult") + showToast(kpmInstallFailed) + } else { + viewModel.fetchModuleList() + showToast(kpmInstallSuccess) + } + } catch (e: Exception) { + Log.e("KsuCli", "Failed to load KPM module: ${e.message}", e) + showToast(kpmInstallFailed) + } + tempFile.delete() +} + +private suspend fun handleModuleUninstall( + module: KpmViewModel.ModuleInfo, + viewModel: KpmViewModel, + showToast: suspend (String) -> Unit, + kpmUninstallSuccess: String, + kpmUninstallFailed: String, + failedToCheckModuleFile: String, + uninstall: String, + cancel: String, + confirmTitle : String, + confirmContent : String, + confirmDialog: ConfirmDialogHandle +) { + val moduleFileName = "${module.id}.kpm" + val moduleFilePath = "/data/adb/kpm/$moduleFileName" + + val fileExists = try { + val shell = getRootShell() + val result = shell.newJob().add("ls /data/adb/kpm/$moduleFileName").exec() + result.isSuccess + } catch (e: Exception) { + Log.e("KsuCli", "Failed to check module file existence: ${e.message}", e) + showToast(failedToCheckModuleFile) + false + } + + val confirmResult = confirmDialog.awaitConfirm( + title = confirmTitle, + content = confirmContent, + confirm = uninstall, + dismiss = cancel + ) + + if (confirmResult == ConfirmResult.Confirmed) { + try { + val unloadResult = unloadKpmModule(module.id) + if (unloadResult.startsWith("Error")) { + Log.e("KsuCli", "Failed to unload KPM module: $unloadResult") + showToast(kpmUninstallFailed) + return + } + + if (fileExists) { + val shell = getRootShell() + shell.newJob().add("rm $moduleFilePath").exec() + } + + viewModel.fetchModuleList() + showToast(kpmUninstallSuccess) + } catch (e: Exception) { + Log.e("KsuCli", "Failed to unload KPM module: ${e.message}", e) + showToast(kpmUninstallFailed) + } + } +} + +@Composable +private fun KpmList( + viewModel: KpmViewModel, + listState: LazyListState, + scope: CoroutineScope, + moduleConfirmContentMap: Map, + showToast: suspend (String) -> Unit, + kpmUninstallSuccess: String, + kpmUninstallFailed: String, + failedToCheckModuleFile: String, + uninstall: String, + cancel: String, + confirmDialog: ConfirmDialogHandle, + confirmTitle: String, + scrollBehavior: ScrollBehavior, + nestedScrollConnection: NestedScrollConnection, + hazeState: HazeState, + innerPadding: PaddingValues, + bottomInnerPadding: Dp, + boxHeight: MutableState, + layoutDirection: LayoutDirection +) { + val context = LocalContext.current + val sharedPreferences = context.getSharedPreferences("app_preferences", Context.MODE_PRIVATE) + var isNoticeClosed by remember { mutableStateOf(sharedPreferences.getBoolean("is_notice_closed", false)) } + + var isRefreshing by rememberSaveable { mutableStateOf(false) } + val pullToRefreshState = rememberPullToRefreshState() + val refreshTexts = remember { + listOf( + context.getString(R.string.refresh_pulling), + context.getString(R.string.refresh_release), + context.getString(R.string.refresh_refresh), + context.getString(R.string.refresh_complete), + ) + } + + LaunchedEffect(isRefreshing) { + if (isRefreshing) { + delay(350) + viewModel.fetchModuleList() + isRefreshing = false + } + } + + PullToRefresh( + isRefreshing = isRefreshing, + pullToRefreshState = pullToRefreshState, + onRefresh = { if (!isRefreshing) isRefreshing = true }, + refreshTexts = refreshTexts, + contentPadding = PaddingValues( + top = innerPadding.calculateTopPadding() + boxHeight.value + 6.dp, + start = innerPadding.calculateStartPadding(layoutDirection), + end = innerPadding.calculateEndPadding(layoutDirection), + ), + ) { + LazyColumn( + state = listState, + modifier = Modifier + .height(getWindowSize().height.dp) + .scrollEndHaptic() + .overScrollVertical() + .nestedScroll(scrollBehavior.nestedScrollConnection) + .nestedScroll(nestedScrollConnection) + .hazeSource(state = hazeState), + contentPadding = PaddingValues( + top = innerPadding.calculateTopPadding() + boxHeight.value + 6.dp, + start = innerPadding.calculateStartPadding(layoutDirection), + end = innerPadding.calculateEndPadding(layoutDirection), + ), + overscrollEffect = null, + ) { + if (!isNoticeClosed) { + item { + Card( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 12.dp, vertical = 12.dp) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Filled.Info, + contentDescription = null, + modifier = Modifier + .padding(end = 16.dp) + .size(24.dp), + tint = colorScheme.onBackground + ) + + Text( + text = stringResource(R.string.kernel_module_notice), + modifier = Modifier.weight(1f), + color = colorScheme.onBackground + ) + + IconButton( + onClick = { + isNoticeClosed = true + sharedPreferences.edit { putBoolean("is_notice_closed", true) } + }, + modifier = Modifier.size(24.dp), + ) { + Icon( + imageVector = Icons.Filled.Close, + contentDescription = stringResource(R.string.close_notice), + tint = colorScheme.onBackground + ) + } + } + } + } + } + + items(viewModel.moduleList) { module -> + KpmModuleItem( + module = module, + onUninstall = { + scope.launch { + val confirmContent = moduleConfirmContentMap[module.id] ?: "" + handleModuleUninstall( + module = module, + viewModel = viewModel, + showToast = showToast, + kpmUninstallSuccess = kpmUninstallSuccess, + kpmUninstallFailed = kpmUninstallFailed, + failedToCheckModuleFile = failedToCheckModuleFile, + uninstall = uninstall, + cancel = cancel, + confirmDialog = confirmDialog, + confirmTitle = confirmTitle, + confirmContent = confirmContent + ) + } + }, + onControl = { + viewModel.loadModuleDetail(module.id) + } + ) + } + item { + Spacer(Modifier.height(bottomInnerPadding)) + } + } + } +} + +@Composable +private fun KpmModuleItem( + module: KpmViewModel.ModuleInfo, + onUninstall: () -> Unit, + onControl: () -> Unit +) { + val viewModel: KpmViewModel = viewModel() + val scope = rememberCoroutineScope() + val context = LocalContext.current + val successMessage = stringResource(R.string.kpm_control_success) + val failureMessage = stringResource(R.string.kpm_control_failed) + + val showToast: suspend (String) -> Unit = { msg -> + scope.launch(Dispatchers.Main) { + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show() + } + } + + val showInputDialog = viewModel.showInputDialog && viewModel.selectedModuleId == module.id + val showDialogState = remember { mutableStateOf(false) } + + LaunchedEffect(viewModel.showInputDialog, viewModel.selectedModuleId) { + showDialogState.value = viewModel.showInputDialog && viewModel.selectedModuleId == module.id + } + + if (showInputDialog) { + SuperDialog( + show = showDialogState, + title = stringResource(R.string.kpm_control), + onDismissRequest = { + showDialogState.value = false + viewModel.hideInputDialog() + }, + content = { + Column { + TextField( + value = viewModel.inputArgs, + onValueChange = { viewModel.updateInputArgs(it) }, + label = stringResource(R.string.kpm_args), + modifier = Modifier.fillMaxWidth(), + useLabelAsPlaceholder = viewModel.inputArgs.isEmpty() + ) + if (viewModel.inputArgs.isEmpty() && module.args.isNotEmpty()) { + Text( + text = module.args, + color = colorScheme.onSurfaceVariantSummary, + fontSize = MiuixTheme.textStyles.body2.fontSize, + modifier = Modifier.padding(start = 16.dp, top = 4.dp) + ) + } + Spacer(modifier = Modifier.height(12.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + TextButton( + text = stringResource(R.string.cancel), + onClick = { + showDialogState.value = false + viewModel.hideInputDialog() + }, + modifier = Modifier.weight(1f) + ) + Spacer(modifier = Modifier.width(20.dp)) + TextButton( + text = stringResource(R.string.confirm), + onClick = { + scope.launch { + val result = viewModel.executeControl() + val message = when (result) { + 0 -> successMessage + else -> failureMessage + } + showToast(message) + showDialogState.value = false + onControl() + } + }, + modifier = Modifier.weight(1f), + colors = ButtonDefaults.textButtonColorsPrimary() + ) + } + } + } + ) + } + + val isDark = isSystemInDarkTheme() + val onSurface = colorScheme.onSurface + val secondaryContainer = colorScheme.secondaryContainer.copy(alpha = 0.8f) + val actionIconTint = remember(isDark) { onSurface.copy(alpha = if (isDark) 0.7f else 0.9f) } + + Card( + modifier = Modifier + .padding(horizontal = 12.dp) + .padding(bottom = 12.dp), + insideMargin = PaddingValues(16.dp) + ) { + Row( + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Column( + modifier = Modifier + .weight(1f) + .padding(end = 4.dp) + ) { + val kpmVersion = stringResource(R.string.kpm_version) + val kpmAuthor = stringResource(R.string.kpm_author) + val kpmArgs = stringResource(R.string.kpm_args) + + SubcomposeLayout { constraints -> + val namePlaceable = subcompose("name") { + Text( + text = module.name, + fontSize = 17.sp, + fontWeight = FontWeight(550), + color = colorScheme.onSurface, + onTextLayout = { } + ) + }.first().measure(constraints) + + layout(namePlaceable.width, namePlaceable.height) { + namePlaceable.placeRelative(0, 0) + } + } + Text( + text = "$kpmVersion: ${module.version}", + fontSize = 12.sp, + modifier = Modifier.padding(top = 2.dp), + fontWeight = FontWeight(550), + color = colorScheme.onSurfaceVariantSummary + ) + Text( + text = "$kpmAuthor: ${module.author}", + fontSize = 12.sp, + modifier = Modifier.padding(bottom = 1.dp), + fontWeight = FontWeight(550), + color = colorScheme.onSurfaceVariantSummary + ) + if (module.args.isNotEmpty()) { + Text( + text = "$kpmArgs: ${module.args}", + fontSize = 12.sp, + fontWeight = FontWeight(550), + color = colorScheme.onSurfaceVariantSummary + ) + } + } + } + + if (module.description.isNotBlank()) { + Text( + text = module.description, + fontSize = 14.sp, + color = colorScheme.onSurfaceVariantSummary, + modifier = Modifier.padding(top = 2.dp), + overflow = TextOverflow.Ellipsis, + maxLines = 4 + ) + } + + HorizontalDivider( + modifier = Modifier.padding(vertical = 8.dp), + thickness = 0.5.dp, + color = colorScheme.outline.copy(alpha = 0.5f) + ) + + Row { + AnimatedVisibility( + visible = module.hasAction, + enter = fadeIn(), + exit = fadeOut() + ) { + IconButton( + backgroundColor = secondaryContainer, + minHeight = 35.dp, + minWidth = 35.dp, + onClick = { + viewModel.showInputDialog(module.id) + }, + ) { + Icon( + modifier = Modifier.size(20.dp), + imageVector = Icons.Filled.Settings, + tint = actionIconTint, + contentDescription = stringResource(R.string.kpm_control) + ) + } + } + + Spacer(Modifier.weight(1f)) + + IconButton( + minHeight = 35.dp, + minWidth = 35.dp, + onClick = onUninstall, + backgroundColor = secondaryContainer, + ) { + Row( + modifier = Modifier.padding(horizontal = 10.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier.size(20.dp), + imageVector = Icons.Filled.Delete, + tint = actionIconTint, + contentDescription = null + ) + Text( + modifier = Modifier.padding(start = 4.dp, end = 3.dp), + text = stringResource(R.string.kpm_uninstall), + color = actionIconTint, + fontWeight = FontWeight.Medium, + fontSize = 15.sp + ) + } + } + } + } +} + +private fun checkStringsCommand(tempFile: File): Int { + val shell = getRootShell() + val command = "strings ${tempFile.absolutePath} | grep -E 'name=|version=|license=|author='" + val result = shell.newJob().add(command).to(ArrayList(), null).exec() + + if (!result.isSuccess) { + return 0 + } + + var matchCount = 0 + val keywords = listOf("name=", "version=", "license=", "author=") + var nameExists = false + + for (line in result.out) { + if (!nameExists && line.startsWith("name=")) { + nameExists = true + matchCount++ + } else if (nameExists) { + for (keyword in keywords) { + if (line.startsWith(keyword)) { + matchCount++ + break + } + } + } + } + + return if (nameExists) matchCount else 0 +} + +private fun isElfFile(tempFile: File): Boolean { + val elfMagic = byteArrayOf(0x7F, 'E'.code.toByte(), 'L'.code.toByte(), 'F'.code.toByte()) + val fileBytes = ByteArray(4) + FileInputStream(tempFile).use { input -> + input.read(fileBytes) + } + return fileBytes.contentEquals(elfMagic) +} diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/KpmViewModel.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/KpmViewModel.kt new file mode 100644 index 00000000..e4f1882c --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/KpmViewModel.kt @@ -0,0 +1,181 @@ +package com.sukisu.ultra.ui.viewmodel + +import android.util.Log +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.sukisu.ultra.ui.component.SearchStatus +import com.sukisu.ultra.ui.util.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * @author ShirkNeko + * @date 2025/5/31. + */ +class KpmViewModel : ViewModel() { + private var _moduleList by mutableStateOf(emptyList()) + + val moduleList by derivedStateOf { + val searchText = _searchStatus.value.searchText + if (searchText.isEmpty()) { + _moduleList + } else { + _moduleList.filter { + it.id.contains(searchText, true) || + it.name.contains(searchText, true) || + it.description.contains(searchText, true) || + it.author.contains(searchText, true) || + it.version.contains(searchText, true) + } + } + } + + private val _searchStatus = mutableStateOf(SearchStatus("")) + val searchStatus: State = _searchStatus + + var isRefreshing by mutableStateOf(false) + private set + + var currentModuleDetail by mutableStateOf("") + private set + + fun fetchModuleList() { + viewModelScope.launch { + isRefreshing = true + try { + val moduleCount = getKpmModuleCount() + Log.d("KsuCli", "Module count: $moduleCount") + + _moduleList = getAllKpmModuleInfo() + + // 获取 KPM 版本信息 + val kpmVersion = getKpmVersion() + Log.d("KsuCli", "KPM Version: $kpmVersion") + } catch (e: Exception) { + Log.e("KsuCli", "获取模块列表失败", e) + } finally { + isRefreshing = false + } + } + } + + private fun getAllKpmModuleInfo(): List { + val result = mutableListOf() + try { + val str = listKpmModules() + val moduleNames = str + .split("\n") + .filter { it.isNotBlank() } + + for (name in moduleNames) { + try { + val moduleInfo = parseModuleInfo(name) + moduleInfo?.let { result.add(it) } + } catch (e: Exception) { + Log.e("KsuCli", "Error processing module $name", e) + } + } + } catch (e: Exception) { + Log.e("KsuCli", "Failed to get module list", e) + } + return result + } + + private fun parseModuleInfo(name: String): ModuleInfo? { + val info = getKpmModuleInfo(name) + if (info.isBlank()) return null + + val properties = info.lineSequence() + .filter { line -> + val trimmed = line.trim() + trimmed.isNotEmpty() && !trimmed.startsWith("#") + } + .mapNotNull { line -> + line.split("=", limit = 2).let { parts -> + when (parts.size) { + 2 -> parts[0].trim() to parts[1].trim() + 1 -> parts[0].trim() to "" + else -> null + } + } + } + .toMap() + + return ModuleInfo( + id = name, + name = properties["name"] ?: name, + version = properties["version"] ?: "", + author = properties["author"] ?: "", + description = properties["description"] ?: "", + args = properties["args"] ?: "", + enabled = true, + hasAction = true + ) + } + + fun loadModuleDetail(moduleId: String) { + viewModelScope.launch { + try { + currentModuleDetail = withContext(Dispatchers.IO) { + getKpmModuleInfo(moduleId) + } + Log.d("KsuCli", "Module detail loaded: $currentModuleDetail") + } catch (e: Exception) { + Log.e("KsuCli", "Failed to load module detail", e) + currentModuleDetail = "Error: ${e.message}" + } + } + } + + var showInputDialog by mutableStateOf(false) + private set + + var selectedModuleId by mutableStateOf(null) + private set + + var inputArgs by mutableStateOf("") + private set + + fun showInputDialog(moduleId: String) { + selectedModuleId = moduleId + showInputDialog = true + } + + fun hideInputDialog() { + showInputDialog = false + selectedModuleId = null + inputArgs = "" + } + + fun updateInputArgs(args: String) { + inputArgs = args + } + + fun executeControl(): Int { + val moduleId = selectedModuleId ?: return -1 + val result = controlKpmModule(moduleId, inputArgs) + hideInputDialog() + return result + } + + fun updateSearchText(text: String) { + _searchStatus.value.searchText = text + } + + data class ModuleInfo( + val id: String, + val name: String, + val version: String, + val author: String, + val description: String, + val args: String, + val enabled: Boolean, + val hasAction: Boolean + ) +} diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml index 0dc77eeb..a82489ce 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -246,4 +246,93 @@ 浅色 深色 跟随系统 + + 刷入完成 + 准备中… + 清理文件… + 复制文件… + 解压刷机工具… + 修补刷机脚本… + 正在刷入内核… + 刷入已完成 + 选择刷入槽位 + 请选择要刷入boot的目标槽位 + 槽位 A + 槽位 B + 已选槽位: %1$s + 获取原始槽位 + 设置指定槽位 + 恢复默认槽位 + 当前系统默认槽位:%1$s + 复制失败 + 未知错误 + 刷入失败 + LKM 修复/安装 + 刷入 AnyKernel3 + 内核版本:%1$s + 使用的修补工具:%1$s + 配置 + 应用程序设置 + 工具 + 需要root权限 + KPM 补丁 + 用于添加额外的KPM功能 + KPM 补丁 + 在刷入前对内核镜像应用KPM补丁 + KPM 撤销补丁 + 撤销之前应用的KPM补丁 + KPM 补丁已启用 + KPM 撤销补丁已启用 + KPM 补丁模式 + KPM 撤销补丁模式 + 准备KPM工具 + 应用KPM补丁 + 撤销KPM补丁 + 找到镜像文件: %s + KPM 补丁应用成功 + KPM 补丁撤销成功 + 文件重新打包成功 + 解压zip文件失败 + 未找到镜像文件 + KPM 补丁失败 + KPM 撤销补丁失败 + KPM 补丁操作失败: %s + 跟随内核 + 原样使用内核,不进行任何KPM修改 + 内核刷入 + AnyKernel3 内核 + 刷入AnyKernel3格式的内核zip包 + + KPM + 当前没有安装内核模块 + 版本 + 作者 + 卸载 + 卸载成功 + 卸载失败 + kpm 模块加载成功 + kpm 模块加载失败 + 参数 + 执行 + KPM 版本 + 关闭 + 以下内核模块功能由 KernelPatch 开发,并经过修改后加入了 SukiSU Ultra 的内核模块功能 + SukiSU Ultra 期待 + 成功 + 失败 + SukiSU Ultra 在未来将是 KSU 的相对独立分支,但我们仍然感谢官方 KernelSU 和 MKSU 等的贡献! + 不支持 + 支持 + 内核未修补 + 内核未配置 + 自定义设置 + KPM 安装 + 加载 + 嵌入 + 请选择:%1$s 模块安装模式\n\n加载:临时加载模块\n嵌入:永久安装到系统中 + 文件类型不正确!请选择 .kpm 文件 + 卸载 + 以下 KPM 将被卸载:%s + 无法检查模块文件是否存在 + 取消 diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index 9967d574..a0a93a82 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -250,4 +250,93 @@ Light Dark Follow System + + Flash Complete + Preparing… + Cleaning files… + Copying files… + Extracting flash tool… + Patching flash script… + Flashing kernel… + Flash completed + Select Flash Slot + Please select the target slot for flashing boot + Slot A + Slot B + Selected slot: %1$s + Getting the original slot + Setting the specified slot + Restore Default Slot + Current system default slot:%1$s + Copy failed + Unknown error + Flash failed + LKM repair/installation + Flashing AnyKernel3 + Kernel version:%1$s + Using the patching tool:%1$s + Configure + Application Settings + Tools + Requires root privileges + KPM Patch + For adding additional KPM features + KPM Patch + Apply KPM patch to kernel image before flashing + KPM Undo Patch + Undo previously applied KPM patch + KPM patch enabled + KPM undo patch enabled + KPM Patch Mode + KPM Undo Patch Mode + Preparing KPM tools + Applying KPM patch + Undoing KPM patch + Found Image file: %s + KPM patch applied successfully + KPM patch undone successfully + File repacked successfully + Failed to extract zip file + Image file not found + KPM patch failed + KPM undo patch failed + KPM patch operation failed: %s + Follow Kernel + Use kernel as-is without any KPM modifications + Kernel Flashing + AnyKernel3 Kernel + Flash AnyKernel3 format kernel zip + + KPM + No installed kernel modules at this time + Version + Author + Uninstall + Uninstalled successfully + Failed to uninstall + Load of kpm module successful + Load of kpm module failed + Parameters + Execute + KPM Version + Close + The following kernel module functions were developed by KernelPatch and modified to include the kernel module functions of SukiSU Ultra + SukiSU Ultra Look forward to + Success + Failed + SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions! + Unsupported + Supported + Kernel not patched + Kernel not configured + Custom settings + KPM Install + Load + Embed + Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system + Incorrect file type! Please select .kpm file + Uninstall + The following KPM will be uninstalled: %s + Unable to check if module file exists + Cancel diff --git a/manager/gradle/libs.versions.toml b/manager/gradle/libs.versions.toml index 74fb84ea..559825ce 100644 --- a/manager/gradle/libs.versions.toml +++ b/manager/gradle/libs.versions.toml @@ -20,6 +20,7 @@ cmaker = "1.2" miuix = "0.6.1" haze = "1.7.0" capsule = "2.1.1" +documentfile = "1.1.0" [plugins] agp-app = { id = "com.android.application", version.ref = "agp" } @@ -73,4 +74,5 @@ miuix = { module = "top.yukonga.miuix.kmp:miuix-android", version.ref = "miuix" haze = { module = "dev.chrisbanes.haze:haze-android", version.ref = "haze" } -capsule = { module = "io.github.kyant0:capsule", version.ref = "capsule" } \ No newline at end of file +capsule = { module = "io.github.kyant0:capsule", version.ref = "capsule" } +androidx-documentfile = { group = "androidx.documentfile", name = "documentfile", version.ref = "documentfile" } \ No newline at end of file