manager: Refactoring kernel flash features and styles
This commit is contained in:
@@ -51,7 +51,6 @@ import androidx.compose.material3.TopAppBarDefaults
|
|||||||
import androidx.compose.material3.TopAppBarScrollBehavior
|
import androidx.compose.material3.TopAppBarScrollBehavior
|
||||||
import androidx.compose.material3.rememberTopAppBarState
|
import androidx.compose.material3.rememberTopAppBarState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.produceState
|
import androidx.compose.runtime.produceState
|
||||||
@@ -75,12 +74,10 @@ import com.maxkeppeler.sheets.list.models.ListSelection
|
|||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
import com.ramcosta.composedestinations.annotation.RootGraph
|
import com.ramcosta.composedestinations.annotation.RootGraph
|
||||||
import com.ramcosta.composedestinations.generated.destinations.FlashScreenDestination
|
import com.ramcosta.composedestinations.generated.destinations.FlashScreenDestination
|
||||||
|
import com.ramcosta.composedestinations.generated.destinations.KernelFlashScreenDestination
|
||||||
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
||||||
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
|
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
|
||||||
import com.sukisu.ultra.R
|
import com.sukisu.ultra.R
|
||||||
import com.sukisu.ultra.flash.HorizonKernelFlashProgress
|
|
||||||
import com.sukisu.ultra.flash.HorizonKernelState
|
|
||||||
import com.sukisu.ultra.flash.HorizonKernelWorker
|
|
||||||
import com.sukisu.ultra.ui.component.DialogHandle
|
import com.sukisu.ultra.ui.component.DialogHandle
|
||||||
import com.sukisu.ultra.ui.component.SlotSelectionDialog
|
import com.sukisu.ultra.ui.component.SlotSelectionDialog
|
||||||
import com.sukisu.ultra.ui.component.rememberConfirmDialog
|
import com.sukisu.ultra.ui.component.rememberConfirmDialog
|
||||||
@@ -110,16 +107,10 @@ fun InstallScreen(navigator: DestinationsNavigator) {
|
|||||||
var showRebootDialog by remember { mutableStateOf(false) }
|
var showRebootDialog by remember { mutableStateOf(false) }
|
||||||
var showSlotSelectionDialog by remember { mutableStateOf(false) }
|
var showSlotSelectionDialog by remember { mutableStateOf(false) }
|
||||||
var tempKernelUri by remember { mutableStateOf<Uri?>(null) }
|
var tempKernelUri by remember { mutableStateOf<Uri?>(null) }
|
||||||
val horizonKernelState = remember { HorizonKernelState() }
|
|
||||||
val flashState by horizonKernelState.state.collectAsState()
|
|
||||||
val summary = stringResource(R.string.horizon_kernel_summary)
|
|
||||||
val kernelVersion = getKernelVersion()
|
val kernelVersion = getKernelVersion()
|
||||||
val isGKI = kernelVersion.isGKI()
|
val isGKI = kernelVersion.isGKI()
|
||||||
val isAbDevice = isAbDevice()
|
val isAbDevice = isAbDevice()
|
||||||
|
val summary = stringResource(R.string.horizon_kernel_summary)
|
||||||
val onFlashComplete = {
|
|
||||||
showRebootDialog = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (showRebootDialog) {
|
if (showRebootDialog) {
|
||||||
RebootDialog(
|
RebootDialog(
|
||||||
@@ -145,14 +136,12 @@ fun InstallScreen(navigator: DestinationsNavigator) {
|
|||||||
when (method) {
|
when (method) {
|
||||||
is InstallMethod.HorizonKernel -> {
|
is InstallMethod.HorizonKernel -> {
|
||||||
method.uri?.let { uri ->
|
method.uri?.let { uri ->
|
||||||
val worker = HorizonKernelWorker(
|
navigator.navigate(
|
||||||
context = context,
|
KernelFlashScreenDestination(
|
||||||
state = horizonKernelState,
|
kernelUri = uri,
|
||||||
slot = method.slot
|
selectedSlot = method.slot
|
||||||
|
)
|
||||||
)
|
)
|
||||||
worker.uri = uri
|
|
||||||
worker.setOnFlashCompleteListener(onFlashComplete)
|
|
||||||
worker.start()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
@@ -253,18 +242,9 @@ fun InstallScreen(navigator: DestinationsNavigator) {
|
|||||||
} else {
|
} else {
|
||||||
installMethod = method
|
installMethod = method
|
||||||
}
|
}
|
||||||
horizonKernelState.reset()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
AnimatedVisibility(
|
|
||||||
visible = flashState.isFlashing && installMethod is InstallMethod.HorizonKernel,
|
|
||||||
enter = fadeIn() + expandVertically(),
|
|
||||||
exit = fadeOut() + shrinkVertically()
|
|
||||||
) {
|
|
||||||
HorizonKernelFlashProgress(flashState)
|
|
||||||
}
|
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
@@ -325,7 +305,7 @@ fun InstallScreen(navigator: DestinationsNavigator) {
|
|||||||
|
|
||||||
Button(
|
Button(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
enabled = installMethod != null && !flashState.isFlashing,
|
enabled = installMethod != null,
|
||||||
onClick = onClickNext,
|
onClick = onClickNext,
|
||||||
shape = MaterialTheme.shapes.medium,
|
shape = MaterialTheme.shapes.medium,
|
||||||
colors = ButtonDefaults.buttonColors(
|
colors = ButtonDefaults.buttonColors(
|
||||||
|
|||||||
@@ -0,0 +1,407 @@
|
|||||||
|
package com.sukisu.ultra.ui.screen
|
||||||
|
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Environment
|
||||||
|
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.automirrored.filled.ArrowBack
|
||||||
|
import androidx.compose.material.icons.filled.CheckCircle
|
||||||
|
import androidx.compose.material.icons.filled.Error
|
||||||
|
import androidx.compose.material.icons.filled.Refresh
|
||||||
|
import androidx.compose.material.icons.filled.Save
|
||||||
|
import androidx.compose.material3.*
|
||||||
|
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.nestedscroll.nestedScroll
|
||||||
|
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 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.flash.HorizonKernelState
|
||||||
|
import com.sukisu.ultra.flash.HorizonKernelWorker
|
||||||
|
import com.sukisu.ultra.ui.component.KeyEventBlocker
|
||||||
|
import com.sukisu.ultra.ui.util.*
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import java.io.File
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.*
|
||||||
|
import androidx.compose.ui.input.key.Key
|
||||||
|
import androidx.compose.ui.input.key.key
|
||||||
|
import com.sukisu.ultra.ui.theme.CardConfig
|
||||||
|
|
||||||
|
private object KernelFlashStateHolder {
|
||||||
|
var currentState: HorizonKernelState? = null
|
||||||
|
var currentUri: Uri? = null
|
||||||
|
var currentSlot: String? = null
|
||||||
|
var isFlashing = false
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Kernel刷写界面
|
||||||
|
*/
|
||||||
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
|
@Destination<RootGraph>
|
||||||
|
@Composable
|
||||||
|
fun KernelFlashScreen(
|
||||||
|
navigator: DestinationsNavigator,
|
||||||
|
kernelUri: Uri,
|
||||||
|
selectedSlot: String? = null
|
||||||
|
) {
|
||||||
|
val context = LocalContext.current
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
|
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
|
||||||
|
val snackBarHost = LocalSnackbarHost.current
|
||||||
|
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.currentState!!
|
||||||
|
} else {
|
||||||
|
HorizonKernelState().also {
|
||||||
|
KernelFlashStateHolder.currentState = it
|
||||||
|
KernelFlashStateHolder.currentUri = kernelUri
|
||||||
|
KernelFlashStateHolder.currentSlot = selectedSlot
|
||||||
|
KernelFlashStateHolder.isFlashing = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val flashState by horizonKernelState.state.collectAsState()
|
||||||
|
val logSavedString = stringResource(R.string.log_saved)
|
||||||
|
|
||||||
|
val onFlashComplete = {
|
||||||
|
showFloatAction = true
|
||||||
|
KernelFlashStateHolder.isFlashing = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始刷写
|
||||||
|
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
|
||||||
|
)
|
||||||
|
worker.uri = kernelUri
|
||||||
|
worker.setOnFlashCompleteListener(onFlashComplete)
|
||||||
|
worker.start()
|
||||||
|
|
||||||
|
// 监听日志更新
|
||||||
|
while (!flashState.isCompleted && flashState.error.isEmpty()) {
|
||||||
|
if (flashState.logs.isNotEmpty()) {
|
||||||
|
logText = flashState.logs.joinToString("\n")
|
||||||
|
logContent.clear()
|
||||||
|
logContent.append(logText)
|
||||||
|
}
|
||||||
|
kotlinx.coroutines.delay(100)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flashState.error.isNotEmpty()) {
|
||||||
|
logText += "\n${flashState.error}\n"
|
||||||
|
logContent.append("\n${flashState.error}\n")
|
||||||
|
KernelFlashStateHolder.isFlashing = false
|
||||||
|
} else if (flashState.isCompleted) {
|
||||||
|
logText += "\n${context.getString(R.string.horizon_flash_complete)}\n\n\n"
|
||||||
|
logContent.append("\n${context.getString(R.string.horizon_flash_complete)}\n\n\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} 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.isFlashing = false
|
||||||
|
}
|
||||||
|
navigator.popBackStack()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BackHandler(enabled = true) {
|
||||||
|
onBack()
|
||||||
|
}
|
||||||
|
|
||||||
|
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())
|
||||||
|
snackBarHost.showSnackbar(logSavedString.format(file.absolutePath))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
scrollBehavior = scrollBehavior
|
||||||
|
)
|
||||||
|
},
|
||||||
|
floatingActionButton = {
|
||||||
|
if (showFloatAction) {
|
||||||
|
ExtendedFloatingActionButton(
|
||||||
|
onClick = {
|
||||||
|
scope.launch {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
reboot()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
icon = {
|
||||||
|
Icon(
|
||||||
|
Icons.Filled.Refresh,
|
||||||
|
contentDescription = stringResource(id = R.string.reboot)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
text = {
|
||||||
|
Text(text = stringResource(id = R.string.reboot))
|
||||||
|
},
|
||||||
|
containerColor = MaterialTheme.colorScheme.secondaryContainer,
|
||||||
|
contentColor = MaterialTheme.colorScheme.onSecondaryContainer,
|
||||||
|
expanded = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
snackbarHost = { SnackbarHost(hostState = snackBarHost) },
|
||||||
|
contentWindowInsets = WindowInsets.safeDrawing.only(WindowInsetsSides.Top + WindowInsetsSides.Horizontal),
|
||||||
|
containerColor = MaterialTheme.colorScheme.background
|
||||||
|
) { innerPadding ->
|
||||||
|
KeyEventBlocker {
|
||||||
|
it.key == Key.VolumeDown || it.key == Key.VolumeUp
|
||||||
|
}
|
||||||
|
|
||||||
|
Column(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(innerPadding)
|
||||||
|
.nestedScroll(scrollBehavior.nestedScrollConnection),
|
||||||
|
) {
|
||||||
|
FlashProgressIndicator(flashState)
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.weight(1f)
|
||||||
|
.verticalScroll(scrollState)
|
||||||
|
) {
|
||||||
|
LaunchedEffect(logText) {
|
||||||
|
scrollState.animateScrollTo(scrollState.maxValue)
|
||||||
|
}
|
||||||
|
Text(
|
||||||
|
modifier = Modifier.padding(16.dp),
|
||||||
|
text = logText,
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
fontFamily = FontFamily.Monospace,
|
||||||
|
color = MaterialTheme.colorScheme.onSurface
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun FlashProgressIndicator(flashState: com.sukisu.ultra.flash.FlashState) {
|
||||||
|
val progressColor = when {
|
||||||
|
flashState.error.isNotEmpty() -> MaterialTheme.colorScheme.error
|
||||||
|
flashState.isCompleted -> MaterialTheme.colorScheme.tertiary
|
||||||
|
else -> MaterialTheme.colorScheme.primary
|
||||||
|
}
|
||||||
|
|
||||||
|
val progress = animateFloatAsState(
|
||||||
|
targetValue = flashState.progress,
|
||||||
|
label = "FlashProgress"
|
||||||
|
)
|
||||||
|
|
||||||
|
Card(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.padding(16.dp),
|
||||||
|
colors = CardDefaults.cardColors(
|
||||||
|
containerColor = MaterialTheme.colorScheme.surfaceVariant
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
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)
|
||||||
|
},
|
||||||
|
style = MaterialTheme.typography.titleMedium,
|
||||||
|
fontWeight = FontWeight.Bold,
|
||||||
|
color = progressColor
|
||||||
|
)
|
||||||
|
|
||||||
|
when {
|
||||||
|
flashState.error.isNotEmpty() -> {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Error,
|
||||||
|
contentDescription = null,
|
||||||
|
tint = MaterialTheme.colorScheme.error
|
||||||
|
)
|
||||||
|
}
|
||||||
|
flashState.isCompleted -> {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.CheckCircle,
|
||||||
|
contentDescription = null,
|
||||||
|
tint = MaterialTheme.colorScheme.tertiary
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
|
|
||||||
|
if (flashState.currentStep.isNotEmpty()) {
|
||||||
|
Text(
|
||||||
|
text = flashState.currentStep,
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
|
)
|
||||||
|
|
||||||
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
|
}
|
||||||
|
|
||||||
|
LinearProgressIndicator(
|
||||||
|
progress = { progress.value },
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.height(8.dp),
|
||||||
|
color = progressColor,
|
||||||
|
trackColor = MaterialTheme.colorScheme.surfaceVariant
|
||||||
|
)
|
||||||
|
|
||||||
|
if (flashState.error.isNotEmpty()) {
|
||||||
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
|
|
||||||
|
Row(
|
||||||
|
verticalAlignment = Alignment.CenterVertically
|
||||||
|
) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Error,
|
||||||
|
contentDescription = null,
|
||||||
|
tint = MaterialTheme.colorScheme.error,
|
||||||
|
modifier = Modifier.size(16.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
Spacer(modifier = Modifier.height(4.dp))
|
||||||
|
|
||||||
|
Text(
|
||||||
|
text = flashState.error,
|
||||||
|
style = MaterialTheme.typography.bodySmall,
|
||||||
|
color = MaterialTheme.colorScheme.error,
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.background(
|
||||||
|
MaterialTheme.colorScheme.errorContainer.copy(alpha = 0.3f),
|
||||||
|
shape = MaterialTheme.shapes.small
|
||||||
|
)
|
||||||
|
.padding(8.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
|
@Composable
|
||||||
|
private fun TopBar(
|
||||||
|
flashState: com.sukisu.ultra.flash.FlashState,
|
||||||
|
onBack: () -> Unit,
|
||||||
|
onSave: () -> Unit = {},
|
||||||
|
scrollBehavior: TopAppBarScrollBehavior? = null
|
||||||
|
) {
|
||||||
|
val statusColor = when {
|
||||||
|
flashState.error.isNotEmpty() -> MaterialTheme.colorScheme.error
|
||||||
|
flashState.isCompleted -> MaterialTheme.colorScheme.tertiary
|
||||||
|
else -> MaterialTheme.colorScheme.primary
|
||||||
|
}
|
||||||
|
|
||||||
|
val cardColor = MaterialTheme.colorScheme.surfaceContainerLow
|
||||||
|
val cardAlpha = CardConfig.cardAlpha
|
||||||
|
|
||||||
|
TopAppBar(
|
||||||
|
title = {
|
||||||
|
Text(
|
||||||
|
text = stringResource(
|
||||||
|
when {
|
||||||
|
flashState.error.isNotEmpty() -> R.string.flash_failed
|
||||||
|
flashState.isCompleted -> R.string.flash_success
|
||||||
|
else -> R.string.kernel_flashing
|
||||||
|
}
|
||||||
|
),
|
||||||
|
style = MaterialTheme.typography.titleLarge,
|
||||||
|
color = statusColor
|
||||||
|
)
|
||||||
|
},
|
||||||
|
navigationIcon = {
|
||||||
|
IconButton(onClick = onBack) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
||||||
|
contentDescription = null,
|
||||||
|
tint = MaterialTheme.colorScheme.onSurface
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colors = TopAppBarDefaults.topAppBarColors(
|
||||||
|
containerColor = cardColor.copy(alpha = cardAlpha),
|
||||||
|
scrolledContainerColor = cardColor.copy(alpha = cardAlpha)
|
||||||
|
),
|
||||||
|
actions = {
|
||||||
|
IconButton(onClick = onSave) {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Filled.Save,
|
||||||
|
contentDescription = stringResource(id = R.string.save_log),
|
||||||
|
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
windowInsets = WindowInsets.safeDrawing.only(WindowInsetsSides.Top + WindowInsetsSides.Horizontal),
|
||||||
|
scrollBehavior = scrollBehavior
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">فشل التركيب</string>
|
<string name="flash_failed_message">فشل التركيب</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">إصلاح/تثبيت LKM</string>
|
<string name="Lkm_install_methods">إصلاح/تثبيت LKM</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">إصدار النواة:%1$s</string>
|
<string name="kernel_version_log">إصدار النواة:%1$s</string>
|
||||||
<string name="tool_version_log">استخدام أداة التصحيح:%1$s</string>
|
<string name="tool_version_log">استخدام أداة التصحيح:%1$s</string>
|
||||||
<string name="configuration">تعيين</string>
|
<string name="configuration">تعيين</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Schreiben fehlgeschlagen</string>
|
<string name="flash_failed_message">Schreiben fehlgeschlagen</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM Reparatur/Installation</string>
|
<string name="Lkm_install_methods">LKM Reparatur/Installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel</string>
|
<string name="kernel_version_log">Kernel</string>
|
||||||
<string name="tool_version_log">Benutze das Patchwerkzeug:%1$s</string>
|
<string name="tool_version_log">Benutze das Patchwerkzeug:%1$s</string>
|
||||||
<string name="configuration">Konfigurieren</string>
|
<string name="configuration">Konfigurieren</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash falló</string>
|
<string name="flash_failed_message">Flash falló</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">Reparación/instalación de LKM</string>
|
<string name="Lkm_install_methods">Reparación/instalación de LKM</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Versión del kernel</string>
|
<string name="kernel_version_log">Versión del kernel</string>
|
||||||
<string name="tool_version_log">Usando la herramienta de parches:%1$s</string>
|
<string name="tool_version_log">Usando la herramienta de parches:%1$s</string>
|
||||||
<string name="configuration">Configurar</string>
|
<string name="configuration">Configurar</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Échec du flash</string>
|
<string name="flash_failed_message">Échec du flash</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">Réparation/installation LKM</string>
|
<string name="Lkm_install_methods">Réparation/installation LKM</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Version du noyau:%1$s</string>
|
<string name="kernel_version_log">Version du noyau:%1$s</string>
|
||||||
<string name="tool_version_log">Utilisation de l\'outil de correctifs:%1$s</string>
|
<string name="tool_version_log">Utilisation de l\'outil de correctifs:%1$s</string>
|
||||||
<string name="configuration">Configurer</string>
|
<string name="configuration">Configurer</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">フラッシュに失敗しました</string>
|
<string name="flash_failed_message">フラッシュに失敗しました</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM の修復またはインストール</string>
|
<string name="Lkm_install_methods">LKM の修復またはインストール</string>
|
||||||
<string name="GKI_install_methods">GKI または 非 GKI のインストール</string>
|
|
||||||
<string name="kernel_version_log">カーネルのバージョン: %1$s</string>
|
<string name="kernel_version_log">カーネルのバージョン: %1$s</string>
|
||||||
<string name="tool_version_log">パッチ適用ツールの使用: %1$s</string>
|
<string name="tool_version_log">パッチ適用ツールの使用: %1$s</string>
|
||||||
<string name="configuration">設定</string>
|
<string name="configuration">設定</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash falhou</string>
|
<string name="flash_failed_message">Flash falhou</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM reparo/instalação</string>
|
<string name="Lkm_install_methods">LKM reparo/instalação</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel</string>
|
<string name="kernel_version_log">Kernel</string>
|
||||||
<string name="tool_version_log">Usando a ferramenta de correção:%1$s</string>
|
<string name="tool_version_log">Usando a ferramenta de correção:%1$s</string>
|
||||||
<string name="configuration">Configurar</string>
|
<string name="configuration">Configurar</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Установка не выполнена</string>
|
<string name="flash_failed_message">Установка не выполнена</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">Ремонт/установка LKM</string>
|
<string name="Lkm_install_methods">Ремонт/установка LKM</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Ядро</string>
|
<string name="kernel_version_log">Ядро</string>
|
||||||
<string name="tool_version_log">С помощью инструмента патрулирования:%1$s</string>
|
<string name="tool_version_log">С помощью инструмента патрулирования:%1$s</string>
|
||||||
<string name="configuration">Настройка</string>
|
<string name="configuration">Настройка</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash\'lama başarısız</string>
|
<string name="flash_failed_message">Flash\'lama başarısız</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM onarımı/yükle</string>
|
<string name="Lkm_install_methods">LKM onarımı/yükle</string>
|
||||||
<string name="GKI_install_methods">GKI/Non-GKI yükle</string>
|
|
||||||
<string name="kernel_version_log">Çekirdek sürümü:%1$s</string>
|
<string name="kernel_version_log">Çekirdek sürümü:%1$s</string>
|
||||||
<string name="tool_version_log">Kullanılan yama aracı:%1$s</string>
|
<string name="tool_version_log">Kullanılan yama aracı:%1$s</string>
|
||||||
<string name="configuration">Yapılandır</string>
|
<string name="configuration">Yapılandır</string>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash thất bại</string>
|
<string name="flash_failed_message">Flash thất bại</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM cài đặt</string>
|
<string name="Lkm_install_methods">LKM cài đặt</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI cài đặt</string>
|
|
||||||
<string name="kernel_version_log">Phiên bản Kernel:%1$s</string>
|
<string name="kernel_version_log">Phiên bản Kernel:%1$s</string>
|
||||||
<string name="tool_version_log">Sử dụng công cụ vá lỗi:%1$s</string>
|
<string name="tool_version_log">Sử dụng công cụ vá lỗi:%1$s</string>
|
||||||
<string name="configuration">Cấu hình</string>
|
<string name="configuration">Cấu hình</string>
|
||||||
|
|||||||
@@ -296,7 +296,7 @@
|
|||||||
<string name="flash_failed_message">刷写失败</string>
|
<string name="flash_failed_message">刷写失败</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM修补/安装</string>
|
<string name="Lkm_install_methods">LKM修补/安装</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI安装</string>
|
<string name="GKI_install_methods">刷写 AnyKernel3</string>
|
||||||
<string name="kernel_version_log">内核版本:%1$s</string>
|
<string name="kernel_version_log">内核版本:%1$s</string>
|
||||||
<string name="tool_version_log">使用修补工具:%1$s</string>
|
<string name="tool_version_log">使用修补工具:%1$s</string>
|
||||||
<string name="configuration">配置</string>
|
<string name="configuration">配置</string>
|
||||||
@@ -365,4 +365,5 @@
|
|||||||
<string name="installing_module">正在安装模块 %1$d/%2$d</string>
|
<string name="installing_module">正在安装模块 %1$d/%2$d</string>
|
||||||
<string name="module_failed_count">%d 个模块安装失败</string>
|
<string name="module_failed_count">%d 个模块安装失败</string>
|
||||||
<string name="module_download_error">模块下载失败</string>
|
<string name="module_download_error">模块下载失败</string>
|
||||||
|
<string name="kernel_flashing">内核刷写</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -298,7 +298,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -296,7 +296,6 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
|
|||||||
@@ -298,7 +298,7 @@
|
|||||||
<string name="flash_failed_message">Flash failed</string>
|
<string name="flash_failed_message">Flash failed</string>
|
||||||
<!-- lkm/gki install -->
|
<!-- lkm/gki install -->
|
||||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||||
<string name="GKI_install_methods">GKI/non-GKI installation</string>
|
<string name="GKI_install_methods">Flashing AnyKernel3</string>
|
||||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||||
<string name="configuration">Configure</string>
|
<string name="configuration">Configure</string>
|
||||||
@@ -367,4 +367,5 @@
|
|||||||
<string name="installing_module">Module being installed %1$d/%2$d</string>
|
<string name="installing_module">Module being installed %1$d/%2$d</string>
|
||||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||||
<string name="module_download_error">Module download failed</string>
|
<string name="module_download_error">Module download failed</string>
|
||||||
|
<string name="kernel_flashing">Kernel Flashing</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user