manager: Deprecated AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT, the leftover add_sus_mount cli and umount_for_zygote_system_process

Reason:
 - AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT is also causing a bit more performance overheads and still it cannot catch all the sus mounts in all situations. Actually it can easily be done in boot-completed.sh, and it should be more accurate, see module templates for more details.

- Official KernelSU also allows ksud to add custom path to try_umount list as well, users can use their own way to add only the desired sus mounts to try_umount list, but remember to disable susfs ADD_TRY_UMOUNT in kernel if users want to use the official one.

- There are less use cases for umount_for_zygote_system_process, and sometimes enabling this may cause bootloop with some modules enabled, instead user can use busybox nsenter to umount the sus mounts for specific process later by themmselves.
This commit is contained in:
ShirkNeko
2025-11-22 22:55:42 +08:00
parent 8bdde66eaf
commit 2bc727bfbd
17 changed files with 94 additions and 464 deletions

View File

@@ -47,7 +47,6 @@ enum class SuSFSTab(val displayNameRes: Int) {
SUS_PATHS(R.string.susfs_tab_sus_paths),
SUS_LOOP_PATHS(R.string.susfs_tab_sus_loop_paths),
SUS_MAPS(R.string.susfs_tab_sus_maps),
SUS_MOUNTS(R.string.susfs_tab_sus_mounts),
TRY_UMOUNT(R.string.susfs_tab_try_umount),
KSTAT_CONFIG(R.string.susfs_tab_kstat_config),
PATH_SETTINGS(R.string.susfs_tab_path_settings),
@@ -99,7 +98,6 @@ fun SuSFSConfigScreen(
var susPaths by remember { mutableStateOf(emptySet<String>()) }
var susLoopPaths by remember { mutableStateOf(emptySet<String>()) }
var susMaps by remember { mutableStateOf(emptySet<String>()) }
var susMounts by remember { mutableStateOf(emptySet<String>()) }
var tryUmounts by remember { mutableStateOf(emptySet<String>()) }
var androidDataPath by remember { mutableStateOf("") }
var sdcardPath by remember { mutableStateOf("") }
@@ -125,7 +123,6 @@ fun SuSFSConfigScreen(
var showAddLoopPathDialog by remember { mutableStateOf(false) }
var showAddSusMapDialog by remember { mutableStateOf(false) }
var showAddAppPathDialog by remember { mutableStateOf(false) }
var showAddMountDialog by remember { mutableStateOf(false) }
var showAddUmountDialog by remember { mutableStateOf(false) }
var showAddKstatStaticallyDialog by remember { mutableStateOf(false) }
var showAddKstatDialog by remember { mutableStateOf(false) }
@@ -134,7 +131,6 @@ fun SuSFSConfigScreen(
var editingPath by remember { mutableStateOf<String?>(null) }
var editingLoopPath by remember { mutableStateOf<String?>(null) }
var editingSusMap by remember { mutableStateOf<String?>(null) }
var editingMount by remember { mutableStateOf<String?>(null) }
var editingUmount by remember { mutableStateOf<String?>(null) }
var editingKstatConfig by remember { mutableStateOf<String?>(null) }
var editingKstatPath by remember { mutableStateOf<String?>(null) }
@@ -143,7 +139,6 @@ fun SuSFSConfigScreen(
var showResetPathsDialog by remember { mutableStateOf(false) }
var showResetLoopPathsDialog by remember { mutableStateOf(false) }
var showResetSusMapsDialog by remember { mutableStateOf(false) }
var showResetMountsDialog by remember { mutableStateOf(false) }
var showResetUmountsDialog by remember { mutableStateOf(false) }
var showResetKstatDialog by remember { mutableStateOf(false) }
@@ -304,7 +299,6 @@ fun SuSFSConfigScreen(
susPaths = SuSFSManager.getSusPaths(context)
susLoopPaths = SuSFSManager.getSusLoopPaths(context)
susMaps = SuSFSManager.getSusMaps(context)
susMounts = SuSFSManager.getSusMounts(context)
tryUmounts = SuSFSManager.getTryUmounts(context)
androidDataPath = SuSFSManager.getAndroidDataPath(context)
sdcardPath = SuSFSManager.getSdcardPath(context)
@@ -477,7 +471,6 @@ fun SuSFSConfigScreen(
susPaths = SuSFSManager.getSusPaths(context)
susLoopPaths = SuSFSManager.getSusLoopPaths(context)
susMaps = SuSFSManager.getSusMaps(context)
susMounts = SuSFSManager.getSusMounts(context)
tryUmounts = SuSFSManager.getTryUmounts(context)
androidDataPath = SuSFSManager.getAndroidDataPath(context)
sdcardPath = SuSFSManager.getSdcardPath(context)
@@ -649,35 +642,6 @@ fun SuSFSConfigScreen(
existingSusPaths = susPaths
)
AddPathDialog(
showDialog = showAddMountDialog,
onDismiss = {
showAddMountDialog = false
editingMount = null
},
onConfirm = { mount ->
coroutineScope.launch {
isLoading = true
val success = if (editingMount != null) {
SuSFSManager.editSusMount(context, editingMount!!, mount)
} else {
SuSFSManager.addSusMount(context, mount)
}
if (success) {
susMounts = SuSFSManager.getSusMounts(context)
}
isLoading = false
showAddMountDialog = false
editingMount = null
}
},
isLoading = isLoading,
titleRes = if (editingMount != null) R.string.susfs_edit_sus_mount else R.string.susfs_add_sus_mount,
labelRes = R.string.susfs_mount_path_label,
placeholderRes = R.string.susfs_path_placeholder,
initialValue = editingMount ?: ""
)
AddTryUmountDialog(
showDialog = showAddUmountDialog,
onDismiss = {
@@ -865,27 +829,6 @@ fun SuSFSConfigScreen(
isDestructive = true
)
ConfirmDialog(
showDialog = showResetMountsDialog,
onDismiss = { showResetMountsDialog = false },
onConfirm = {
coroutineScope.launch {
isLoading = true
SuSFSManager.saveSusMounts(context, emptySet())
susMounts = emptySet()
if (SuSFSManager.isAutoStartEnabled(context)) {
SuSFSManager.configureAutoStart(context, true)
}
isLoading = false
showResetMountsDialog = false
}
},
titleRes = R.string.susfs_reset_mounts_title,
messageRes = R.string.susfs_reset_mounts_message,
isLoading = isLoading,
isDestructive = true
)
ConfirmDialog(
showDialog = showResetUmountsDialog,
onDismiss = { showResetUmountsDialog = false },
@@ -1106,28 +1049,6 @@ fun SuSFSConfigScreen(
}
}
SuSFSTab.SUS_MOUNTS -> {
OutlinedButton(
onClick = { showResetMountsDialog = true },
enabled = !isLoading && susMounts.isNotEmpty(),
shape = RoundedCornerShape(8.dp),
modifier = Modifier
.fillMaxWidth()
.height(40.dp)
) {
Icon(
imageVector = Icons.Default.RestoreFromTrash,
contentDescription = null,
modifier = Modifier.size(16.dp)
)
Spacer(modifier = Modifier.width(6.dp))
Text(
stringResource(R.string.susfs_reset_mounts_title),
fontWeight = FontWeight.Medium
)
}
}
SuSFSTab.TRY_UMOUNT -> {
OutlinedButton(
onClick = { showResetUmountsDialog = true },
@@ -1325,6 +1246,20 @@ fun SuSFSConfigScreen(
}
isLoading = false
}
},
hideSusMountsForAllProcs = hideSusMountsForAllProcs,
onHideSusMountsForAllProcsChange = { hideForAll ->
coroutineScope.launch {
isLoading = true
if (SuSFSManager.setHideSusMountsForAllProcs(
context,
hideForAll
)
) {
hideSusMountsForAllProcs = hideForAll
}
isLoading = false
}
}
)
}
@@ -1390,43 +1325,6 @@ fun SuSFSConfigScreen(
}
)
}
SuSFSTab.SUS_MOUNTS -> {
val isSusVersion158 = remember { isSusVersion158() }
SusMountsContent(
susMounts = susMounts,
hideSusMountsForAllProcs = hideSusMountsForAllProcs,
isSusVersion158 = isSusVersion158,
isLoading = isLoading,
onAddMount = { showAddMountDialog = true },
onRemoveMount = { mount ->
coroutineScope.launch {
isLoading = true
if (SuSFSManager.removeSusMount(context, mount)) {
susMounts = SuSFSManager.getSusMounts(context)
}
isLoading = false
}
},
onEditMount = { mount ->
editingMount = mount
showAddMountDialog = true
},
onToggleHideSusMountsForAllProcs = { hideForAll ->
coroutineScope.launch {
isLoading = true
if (SuSFSManager.setHideSusMountsForAllProcs(
context,
hideForAll
)
) {
hideSusMountsForAllProcs = hideForAll
}
isLoading = false
}
}
)
}
SuSFSTab.TRY_UMOUNT -> {
TryUmountContent(
@@ -1570,7 +1468,9 @@ private fun BasicSettingsContent(
enableCleanupResidue: Boolean,
onEnableCleanupResidueChange: (Boolean) -> Unit,
enableAvcLogSpoofing: Boolean,
onEnableAvcLogSpoofingChange: (Boolean) -> Unit
onEnableAvcLogSpoofingChange: (Boolean) -> Unit,
hideSusMountsForAllProcs: Boolean,
onHideSusMountsForAllProcsChange: (Boolean) -> Unit
) {
var scriptLocationExpanded by remember { mutableStateOf(false) }
val isAbDevice = produceState(initialValue = false) {
@@ -1946,6 +1846,16 @@ private fun BasicSettingsContent(
}
}
// 对所有进程隐藏sus挂载开关仅在1.5.8+版本显示)
val isSusVersion158 = isSusVersion158()
if (isSusVersion158) {
SusMountHidingControlCard(
hideSusMountsForAllProcs = hideSusMountsForAllProcs,
isLoading = isLoading,
onToggleHiding = onHideSusMountsForAllProcsChange
)
}
// 槽位信息按钮
if (isAbDevice) {
Card(

View File

@@ -420,82 +420,6 @@ fun SusMapsContent(
}
}
/**
* SUS挂载内容组件
*/
@Composable
fun SusMountsContent(
susMounts: Set<String>,
hideSusMountsForAllProcs: Boolean,
isSusVersion158: Boolean,
isLoading: Boolean,
onAddMount: () -> Unit,
onRemoveMount: (String) -> Unit,
onEditMount: ((String) -> Unit)? = null,
onToggleHideSusMountsForAllProcs: (Boolean) -> Unit
) {
Box(modifier = Modifier.fillMaxSize()) {
LazyColumn(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
if (isSusVersion158) {
item {
SusMountHidingControlCard(
hideSusMountsForAllProcs = hideSusMountsForAllProcs,
isLoading = isLoading,
onToggleHiding = onToggleHideSusMountsForAllProcs
)
}
}
if (susMounts.isEmpty()) {
item {
EmptyStateCard(
message = stringResource(R.string.susfs_no_mounts_configured)
)
}
} else {
items(susMounts.toList()) { mount ->
PathItemCard(
path = mount,
icon = Icons.Default.Storage,
onDelete = { onRemoveMount(mount) },
onEdit = if (onEditMount != null) { { onEditMount(mount) } } else null,
isLoading = isLoading
)
}
}
item {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically
) {
Button(
onClick = onAddMount,
modifier = Modifier
.weight(1f)
.height(48.dp),
shape = RoundedCornerShape(8.dp)
) {
Icon(
imageVector = Icons.Default.Add,
contentDescription = null,
modifier = Modifier.size(24.dp)
)
Spacer(modifier = Modifier.width(8.dp))
Text(text = stringResource(R.string.add))
}
}
}
}
}
}
/**
* 尝试卸载内容组件
*/

View File

@@ -44,7 +44,6 @@ object SuSFSManager {
private const val KEY_SUS_LOOP_PATHS = "sus_loop_paths"
private const val KEY_SUS_MAPS = "sus_maps"
private const val KEY_SUS_MOUNTS = "sus_mounts"
private const val KEY_TRY_UMOUNTS = "try_umounts"
private const val KEY_ANDROID_DATA_PATH = "android_data_path"
private const val KEY_SDCARD_PATH = "sdcard_path"
@@ -157,7 +156,6 @@ object SuSFSManager {
val susPaths: Set<String>,
val susLoopPaths: Set<String>,
val susMaps: Set<String>,
val susMounts: Set<String>,
val tryUmounts: Set<String>,
val androidDataPath: String,
val sdcardPath: String,
@@ -180,7 +178,6 @@ object SuSFSManager {
susPaths.isNotEmpty() ||
susLoopPaths.isNotEmpty() ||
susMaps.isNotEmpty() ||
susMounts.isNotEmpty() ||
tryUmounts.isNotEmpty() ||
kstatConfigs.isNotEmpty() ||
addKstatPaths.isNotEmpty()
@@ -271,7 +268,6 @@ object SuSFSManager {
susPaths = getSusPaths(context),
susLoopPaths = getSusLoopPaths(context),
susMaps = getSusMaps(context),
susMounts = getSusMounts(context),
tryUmounts = getTryUmounts(context),
androidDataPath = getAndroidDataPath(context),
sdcardPath = getSdcardPath(context),
@@ -381,12 +377,6 @@ object SuSFSManager {
fun getSusMaps(context: Context): Set<String> =
getPrefs(context).getStringSet(KEY_SUS_MAPS, emptySet()) ?: emptySet()
fun saveSusMounts(context: Context, mounts: Set<String>) =
getPrefs(context).edit { putStringSet(KEY_SUS_MOUNTS, mounts) }
fun getSusMounts(context: Context): Set<String> =
getPrefs(context).getStringSet(KEY_SUS_MOUNTS, emptySet()) ?: emptySet()
fun saveTryUmounts(context: Context, umounts: Set<String>) =
getPrefs(context).edit { putStringSet(KEY_TRY_UMOUNTS, umounts) }
@@ -547,7 +537,6 @@ object SuSFSManager {
KEY_SUS_PATHS to getSusPaths(context),
KEY_SUS_LOOP_PATHS to getSusLoopPaths(context),
KEY_SUS_MAPS to getSusMaps(context),
KEY_SUS_MOUNTS to getSusMounts(context),
KEY_TRY_UMOUNTS to getTryUmounts(context),
KEY_ANDROID_DATA_PATH to getAndroidDataPath(context),
KEY_SDCARD_PATH to getSdcardPath(context),
@@ -860,13 +849,11 @@ object SuSFSManager {
val featureMap = mapOf(
"CONFIG_KSU_SUSFS_SUS_PATH" to context.getString(R.string.sus_path_feature_label),
"CONFIG_KSU_SUSFS_SUS_MOUNT" to context.getString(R.string.sus_mount_feature_label),
"CONFIG_KSU_SUSFS_TRY_UMOUNT" to context.getString(R.string.try_umount_feature_label),
"CONFIG_KSU_SUSFS_SPOOF_UNAME" to context.getString(R.string.spoof_uname_feature_label),
"CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG" to context.getString(R.string.spoof_cmdline_feature_label),
"CONFIG_KSU_SUSFS_OPEN_REDIRECT" to context.getString(R.string.open_redirect_feature_label),
"CONFIG_KSU_SUSFS_ENABLE_LOG" to context.getString(R.string.enable_log_feature_label),
"CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT" to context.getString(R.string.auto_try_umount_bind_feature_label),
"CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS" to context.getString(R.string.hide_symbols_feature_label),
"CONFIG_KSU_SUSFS_SUS_KSTAT" to context.getString(R.string.sus_kstat_feature_label),
)
@@ -890,13 +877,11 @@ object SuSFSManager {
private fun getDefaultDisabledFeatures(context: Context): List<EnabledFeature> {
val defaultFeatures = listOf(
"sus_path_feature_label" to context.getString(R.string.sus_path_feature_label),
"sus_mount_feature_label" to context.getString(R.string.sus_mount_feature_label),
"try_umount_feature_label" to context.getString(R.string.try_umount_feature_label),
"spoof_uname_feature_label" to context.getString(R.string.spoof_uname_feature_label),
"spoof_cmdline_feature_label" to context.getString(R.string.spoof_cmdline_feature_label),
"open_redirect_feature_label" to context.getString(R.string.open_redirect_feature_label),
"enable_log_feature_label" to context.getString(R.string.enable_log_feature_label),
"auto_try_umount_bind_feature_label" to context.getString(R.string.auto_try_umount_bind_feature_label),
"hide_symbols_feature_label" to context.getString(R.string.hide_symbols_feature_label),
"sus_kstat_feature_label" to context.getString(R.string.sus_kstat_feature_label),
)
@@ -1182,54 +1167,6 @@ object SuSFSManager {
}
}
// 添加SUS挂载
suspend fun addSusMount(context: Context, mount: String): Boolean {
val success = executeSusfsCommand(context, "add_sus_mount '$mount'")
if (success) {
saveSusMounts(context, getSusMounts(context) + mount)
if (isAutoStartEnabled(context)) updateMagiskModule(context)
}
return success
}
suspend fun removeSusMount(context: Context, mount: String): Boolean {
saveSusMounts(context, getSusMounts(context) - mount)
if (isAutoStartEnabled(context)) updateMagiskModule(context)
showToast(context, "Removed SUS mount: $mount")
return true
}
// 编辑SUS挂载
suspend fun editSusMount(context: Context, oldMount: String, newMount: String): Boolean {
return try {
val currentMounts = getSusMounts(context).toMutableSet()
if (!currentMounts.remove(oldMount)) {
showToast(context, "Original mount not found: $oldMount")
return false
}
saveSusMounts(context, currentMounts)
val success = addSusMount(context, newMount)
if (success) {
showToast(context, "SUS mount updated: $oldMount -> $newMount")
return true
} else {
// 如果添加新挂载点失败,恢复旧挂载点
currentMounts.add(oldMount)
saveSusMounts(context, currentMounts)
if (isAutoStartEnabled(context)) updateMagiskModule(context)
showToast(context, "Failed to update mount, reverted to original")
return false
}
} catch (e: Exception) {
e.printStackTrace()
showToast(context, "Error updating SUS mount: ${e.message}")
false
}
}
// 添加尝试卸载
suspend fun addTryUmount(context: Context, path: String, mode: Int): Boolean {
val commandSuccess = executeSusfsCommand(context, "add_try_umount '$path' $mode")

View File

@@ -26,13 +26,13 @@ object ScriptGenerator {
}
// 日志相关的通用脚本片段
private fun generateLogSetup(logFileName: String): String = """
private fun generateLogSetup(logFileName: String): String = $$"""
# 日志目录
LOG_DIR="$LOG_DIR"
LOG_FILE="${'$'}LOG_DIR/$logFileName"
LOG_DIR="$$LOG_DIR"
LOG_FILE="$LOG_DIR/$$logFileName"
# 创建日志目录
mkdir -p "${'$'}LOG_DIR"
mkdir -p "$LOG_DIR"
# 获取当前时间
get_current_time() {
@@ -41,11 +41,11 @@ object ScriptGenerator {
""".trimIndent()
// 二进制文件检查的通用脚本片段
private fun generateBinaryCheck(targetPath: String): String = """
private fun generateBinaryCheck(targetPath: String): String = $$"""
# 检查SuSFS二进制文件
SUSFS_BIN="$targetPath"
if [ ! -f "${'$'}SUSFS_BIN" ]; then
echo "$(get_current_time): SuSFS二进制文件未找到: ${'$'}SUSFS_BIN" >> "${'$'}LOG_FILE"
SUSFS_BIN="$$targetPath"
if [ ! -f "$SUSFS_BIN" ]; then
echo "$(get_current_time): SuSFS二进制文件未找到: $SUSFS_BIN" >> "$LOG_FILE"
exit 1
fi
""".trimIndent()
@@ -94,7 +94,7 @@ object ScriptGenerator {
generateCleanupResidueSection()
}
appendLine("echo \"$(get_current_time): Service脚本执行完成\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Service脚本执行完成\" >> \"$LOG_FILE\"")
}
}
@@ -112,16 +112,16 @@ object ScriptGenerator {
private fun StringBuilder.generateLogSettingSection(enableLog: Boolean) {
appendLine("# 设置日志启用状态")
val logValue = if (enableLog) 1 else 0
appendLine("\"${'$'}SUSFS_BIN\" enable_log $logValue")
appendLine("echo \"$(get_current_time): 日志功能设置为: ${if (enableLog) "启用" else "禁用"}\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" enable_log $$logValue")
appendLine($$"echo \"$(get_current_time): 日志功能设置为: $${if (enableLog) "启用" else "禁用"}\" >> \"$LOG_FILE\"")
appendLine()
}
private fun StringBuilder.generateAvcLogSpoofingSection(enableAvcLogSpoofing: Boolean) {
appendLine("# 设置AVC日志欺骗状态")
val avcLogValue = if (enableAvcLogSpoofing) 1 else 0
appendLine("\"${'$'}SUSFS_BIN\" enable_avc_log_spoofing $avcLogValue")
appendLine("echo \"$(get_current_time): AVC日志欺骗功能设置为: ${if (enableAvcLogSpoofing) "启用" else "禁用"}\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" enable_avc_log_spoofing $$avcLogValue")
appendLine($$"echo \"$(get_current_time): AVC日志欺骗功能设置为: $${if (enableAvcLogSpoofing) "启用" else "禁用"}\" >> \"$LOG_FILE\"")
appendLine()
}
@@ -129,8 +129,8 @@ object ScriptGenerator {
if (susPaths.isNotEmpty()) {
appendLine("# 添加SUS路径")
susPaths.forEach { path ->
appendLine("\"${'$'}SUSFS_BIN\" add_sus_path '$path'")
appendLine("echo \"$(get_current_time): 添加SUS路径: $path\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" add_sus_path '$$path'")
appendLine($$"echo \"$(get_current_time): 添加SUS路径: $$path\" >> \"$LOG_FILE\"")
}
appendLine()
}
@@ -140,8 +140,8 @@ object ScriptGenerator {
if (susLoopPaths.isNotEmpty()) {
appendLine("# 添加SUS循环路径")
susLoopPaths.forEach { path ->
appendLine("\"${'$'}SUSFS_BIN\" add_sus_path_loop '$path'")
appendLine("echo \"$(get_current_time): 添加SUS循环路径: $path\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" add_sus_path_loop '$$path'")
appendLine($$"echo \"$(get_current_time): 添加SUS循环路径: $$path\" >> \"$LOG_FILE\"")
}
appendLine()
}
@@ -156,8 +156,8 @@ object ScriptGenerator {
if (addKstatPaths.isNotEmpty()) {
appendLine("# 添加Kstat路径")
addKstatPaths.forEach { path ->
appendLine("\"${'$'}SUSFS_BIN\" add_sus_kstat '$path'")
appendLine("echo \"$(get_current_time): 添加Kstat路径: $path\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" add_sus_kstat '$$path'")
appendLine($$"echo \"$(get_current_time): 添加Kstat路径: $$path\" >> \"$LOG_FILE\"")
}
appendLine()
}
@@ -171,11 +171,11 @@ object ScriptGenerator {
val path = parts[0]
val params = parts.drop(1).joinToString("' '", "'", "'")
appendLine()
appendLine("\"${'$'}SUSFS_BIN\" add_sus_kstat_statically '$path' $params")
appendLine("echo \"$(get_current_time): 添加Kstat静态配置: $path\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" add_sus_kstat_statically '$$path' $$params")
appendLine($$"echo \"$(get_current_time): 添加Kstat静态配置: $$path\" >> \"$LOG_FILE\"")
appendLine()
appendLine("\"${'$'}SUSFS_BIN\" update_sus_kstat '$path'")
appendLine("echo \"$(get_current_time): 更新Kstat配置: $path\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" update_sus_kstat '$$path'")
appendLine($$"echo \"$(get_current_time): 更新Kstat配置: $$path\" >> \"$LOG_FILE\"")
}
}
appendLine()
@@ -185,8 +185,8 @@ object ScriptGenerator {
private fun StringBuilder.generateUnameSection(config: SuSFSManager.ModuleConfig) {
if (!config.executeInPostFsData && (config.unameValue != DEFAULT_UNAME || config.buildTimeValue != DEFAULT_BUILD_TIME)) {
appendLine("# 设置uname和构建时间")
appendLine("\"${'$'}SUSFS_BIN\" set_uname '${config.unameValue}' '${config.buildTimeValue}'")
appendLine("echo \"$(get_current_time): 设置uname为: ${config.unameValue}, 构建时间为: ${config.buildTimeValue}\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" set_uname '$${config.unameValue}' '$${config.buildTimeValue}'")
appendLine($$"echo \"$(get_current_time): 设置uname为: $${config.unameValue}, 构建时间为: $${config.buildTimeValue}\" >> \"$LOG_FILE\"")
appendLine()
}
}
@@ -194,44 +194,44 @@ object ScriptGenerator {
private fun StringBuilder.generateHideBlSection() {
appendLine("# 隐藏BL 来自 Shamiko 脚本")
appendLine(
"""
$$"""
RESETPROP_BIN="/data/adb/ksu/bin/resetprop"
check_reset_prop() {
local NAME=$1
local EXPECTED=$2
local VALUE=$("${'$'}RESETPROP_BIN" ${'$'}NAME)
[ -z ${'$'}VALUE ] || [ ${'$'}VALUE = ${'$'}EXPECTED ] || "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
local VALUE=$("$RESETPROP_BIN" $NAME)
[ -z $VALUE ] || [ $VALUE = $EXPECTED ] || "$RESETPROP_BIN" $NAME $EXPECTED
}
check_missing_prop() {
local NAME=$1
local EXPECTED=$2
local VALUE=$("${'$'}RESETPROP_BIN" ${'$'}NAME)
[ -z ${'$'}VALUE ] && "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
local VALUE=$("$RESETPROP_BIN" $NAME)
[ -z $VALUE ] && "$RESETPROP_BIN" $NAME $EXPECTED
}
check_missing_match_prop() {
local NAME=$1
local EXPECTED=$2
local VALUE=$("${'$'}RESETPROP_BIN" ${'$'}NAME)
[ -z ${'$'}VALUE ] || [ ${'$'}VALUE = ${'$'}EXPECTED ] || "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
[ -z ${'$'}VALUE ] && "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
local VALUE=$("$RESETPROP_BIN" $NAME)
[ -z $VALUE ] || [ $VALUE = $EXPECTED ] || "$RESETPROP_BIN" $NAME $EXPECTED
[ -z $VALUE ] && "$RESETPROP_BIN" $NAME $EXPECTED
}
contains_reset_prop() {
local NAME=$1
local CONTAINS=$2
local NEWVAL=$3
case "$("${'$'}RESETPROP_BIN" ${'$'}NAME)" in
*"${'$'}CONTAINS"*) "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}NEWVAL ;;
case "$("$RESETPROP_BIN" $NAME)" in
*"$CONTAINS"*) "$RESETPROP_BIN" $NAME $NEWVAL ;;
esac
}
""".trimIndent())
appendLine()
appendLine("sleep 30")
appendLine()
appendLine("\"${'$'}RESETPROP_BIN\" -w sys.boot_completed 0")
appendLine($$"\"$RESETPROP_BIN\" -w sys.boot_completed 0")
// 添加所有系统属性重置
val systemProps = listOf(
@@ -292,27 +292,28 @@ object ScriptGenerator {
// 清理残留脚本生成
private fun StringBuilder.generateCleanupResidueSection() {
appendLine("# 清理工具残留文件")
appendLine("echo \"$(get_current_time): 开始清理工具残留\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): 开始清理工具残留\" >> \"$LOG_FILE\"")
appendLine()
// 定义清理函数
appendLine("""
appendLine(
$$"""
cleanup_path() {
local path="$1"
local desc="$2"
local current="$3"
local total="$4"
if [ -n "${'$'}desc" ]; then
echo "$(get_current_time): [${'$'}current/${'$'}total] 清理: ${'$'}path (${'$'}desc)" >> "${'$'}LOG_FILE"
if [ -n "$desc" ]; then
echo "$(get_current_time): [$current/$total] 清理: $path ($desc)" >> "$LOG_FILE"
else
echo "$(get_current_time): [${'$'}current/${'$'}total] 清理: ${'$'}path" >> "${'$'}LOG_FILE"
echo "$(get_current_time): [$current/$total] 清理: $path" >> "$LOG_FILE"
fi
if rm -rf "${'$'}path" 2>/dev/null; then
echo "$(get_current_time): ✓ 成功清理: ${'$'}path" >> "${'$'}LOG_FILE"
if rm -rf "$path" 2>/dev/null; then
echo "$(get_current_time): ✓ 成功清理: $path" >> "$LOG_FILE"
else
echo "$(get_current_time): ✗ 清理失败或不存在: ${'$'}path" >> "${'$'}LOG_FILE"
echo "$(get_current_time): ✗ 清理失败或不存在: $path" >> "$LOG_FILE"
fi
}
""".trimIndent())
@@ -360,11 +361,11 @@ object ScriptGenerator {
cleanupPaths.forEachIndexed { index, (path, desc) ->
val current = index + 1
appendLine("cleanup_path '$path' '$desc' $current \$TOTAL")
appendLine($$"cleanup_path '$$path' '$$desc' $$current $TOTAL")
}
appendLine()
appendLine("echo \"$(get_current_time): 工具残留清理完成\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): 工具残留清理完成\" >> \"$LOG_FILE\"")
appendLine()
}
@@ -381,14 +382,14 @@ object ScriptGenerator {
appendLine()
appendLine(generateBinaryCheck(config.targetPath))
appendLine()
appendLine("echo \"$(get_current_time): Post-FS-Data脚本开始执行\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Post-FS-Data脚本开始执行\" >> \"$LOG_FILE\"")
appendLine()
// 设置uname和构建时间 - 只有在选择在post-fs-data中执行时才执行
if (config.executeInPostFsData && (config.unameValue != DEFAULT_UNAME || config.buildTimeValue != DEFAULT_BUILD_TIME)) {
appendLine("# 设置uname和构建时间")
appendLine("\"${'$'}SUSFS_BIN\" set_uname '${config.unameValue}' '${config.buildTimeValue}'")
appendLine("echo \"$(get_current_time): 设置uname为: ${config.unameValue}, 构建时间为: ${config.buildTimeValue}\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" set_uname '$${config.unameValue}' '$${config.buildTimeValue}'")
appendLine($$"echo \"$(get_current_time): 设置uname为: $${config.unameValue}, 构建时间为: $${config.buildTimeValue}\" >> \"$LOG_FILE\"")
appendLine()
}
@@ -397,7 +398,7 @@ object ScriptGenerator {
// 添加AVC日志欺骗设置
generateAvcLogSpoofingSection(config.enableAvcLogSpoofing)
appendLine("echo \"$(get_current_time): Post-FS-Data脚本执行完成\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Post-FS-Data脚本执行完成\" >> \"$LOG_FILE\"")
}
}
@@ -406,8 +407,8 @@ object ScriptGenerator {
if (support158) {
appendLine("# 设置Zygote隔离服务卸载状态")
val umountValue = if (umountForZygoteIsoService) 1 else 0
appendLine("\"${'$'}SUSFS_BIN\" umount_for_zygote_iso_service $umountValue")
appendLine("echo \"$(get_current_time): Zygote隔离服务卸载设置为: ${if (umountForZygoteIsoService) "启用" else "禁用"}\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" umount_for_zygote_iso_service $$umountValue")
appendLine($$"echo \"$(get_current_time): Zygote隔离服务卸载设置为: $${if (umountForZygoteIsoService) "启用" else "禁用"}\" >> \"$LOG_FILE\"")
appendLine()
}
}
@@ -423,21 +424,11 @@ object ScriptGenerator {
appendLine()
appendLine(generateLogSetup("susfs_post_mount.log"))
appendLine()
appendLine("echo \"$(get_current_time): Post-Mount脚本开始执行\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Post-Mount脚本开始执行\" >> \"$LOG_FILE\"")
appendLine()
appendLine(generateBinaryCheck(config.targetPath))
appendLine()
// 添加SUS挂载
if (config.susMounts.isNotEmpty()) {
appendLine("# 添加SUS挂载")
config.susMounts.forEach { mount ->
appendLine("\"${'$'}SUSFS_BIN\" add_sus_mount '$mount'")
appendLine("echo \"$(get_current_time): 添加SUS挂载: $mount\" >> \"${'$'}LOG_FILE\"")
}
appendLine()
}
// 添加尝试卸载
if (config.tryUmounts.isNotEmpty()) {
appendLine("# 添加尝试卸载")
@@ -446,14 +437,14 @@ object ScriptGenerator {
if (parts.size == 2) {
val path = parts[0]
val mode = parts[1]
appendLine("\"${'$'}SUSFS_BIN\" add_try_umount '$path' $mode")
appendLine("echo \"$(get_current_time): 添加尝试卸载: $path (模式: $mode)\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" add_try_umount '$$path' $$mode")
appendLine($$"echo \"$(get_current_time): 添加尝试卸载: $$path (模式: $$mode)\" >> \"$LOG_FILE\"")
}
}
appendLine()
}
appendLine("echo \"$(get_current_time): Post-Mount脚本执行完成\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Post-Mount脚本执行完成\" >> \"$LOG_FILE\"")
}
}
@@ -469,7 +460,7 @@ object ScriptGenerator {
appendLine()
appendLine(generateLogSetup("susfs_boot_completed.log"))
appendLine()
appendLine("echo \"$(get_current_time): Boot-Completed脚本开始执行\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Boot-Completed脚本开始执行\" >> \"$LOG_FILE\"")
appendLine()
appendLine(generateBinaryCheck(config.targetPath))
appendLine()
@@ -479,8 +470,8 @@ object ScriptGenerator {
// SUS挂载隐藏控制
val hideValue = if (config.hideSusMountsForAllProcs) 1 else 0
appendLine("# 设置SUS挂载隐藏控制")
appendLine("\"${'$'}SUSFS_BIN\" hide_sus_mnts_for_all_procs $hideValue")
appendLine("echo \"$(get_current_time): SUS挂载隐藏控制设置为: ${if (config.hideSusMountsForAllProcs) "对所有进程隐藏" else "仅对非KSU进程隐藏"}\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" hide_sus_mnts_for_all_procs $$hideValue")
appendLine($$"echo \"$(get_current_time): SUS挂载隐藏控制设置为: $${if (config.hideSusMountsForAllProcs) "对所有进程隐藏" else "仅对非KSU进程隐藏"}\" >> \"$LOG_FILE\"")
appendLine()
// 路径设置和SUS路径设置
@@ -504,7 +495,7 @@ object ScriptGenerator {
}
}
appendLine("echo \"$(get_current_time): Boot-Completed脚本执行完成\" >> \"${'$'}LOG_FILE\"")
appendLine($$"echo \"$(get_current_time): Boot-Completed脚本执行完成\" >> \"$LOG_FILE\"")
}
}
@@ -512,8 +503,8 @@ object ScriptGenerator {
if (susMaps.isNotEmpty()) {
appendLine("# 添加SUS映射")
susMaps.forEach { map ->
appendLine("\"${'$'}SUSFS_BIN\" add_sus_map '$map'")
appendLine("echo \"$(get_current_time): 添加SUS映射: $map\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" add_sus_map '$$map'")
appendLine($$"echo \"$(get_current_time): 添加SUS映射: $$map\" >> \"$LOG_FILE\"")
}
appendLine()
}
@@ -526,12 +517,12 @@ object ScriptGenerator {
appendLine("until [ -d \"/sdcard/Android\" ]; do sleep 1; done")
appendLine("sleep 60")
appendLine()
appendLine("\"${'$'}SUSFS_BIN\" set_android_data_root_path '$androidDataPath'")
appendLine("echo \"$(get_current_time): Android Data路径设置为: $androidDataPath\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" set_android_data_root_path '$$androidDataPath'")
appendLine($$"echo \"$(get_current_time): Android Data路径设置为: $$androidDataPath\" >> \"$LOG_FILE\"")
appendLine()
appendLine("# 设置SD卡路径")
appendLine("\"${'$'}SUSFS_BIN\" set_sdcard_root_path '$sdcardPath'")
appendLine("echo \"$(get_current_time): SD卡路径设置为: $sdcardPath\" >> \"${'$'}LOG_FILE\"")
appendLine($$"\"$SUSFS_BIN\" set_sdcard_root_path '$$sdcardPath'")
appendLine($$"echo \"$(get_current_time): SD卡路径设置为: $$sdcardPath\" >> \"$LOG_FILE\"")
appendLine()
}

View File

@@ -382,21 +382,17 @@ Tanamkan: Secara permanen memasang ke sistem</string>
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Pengaturan Dasar</string>
<string name="susfs_tab_sus_paths">Jalur SUS</string>
<string name="susfs_tab_sus_mounts">Kaitan SUS</string>
<string name="susfs_tab_try_umount">Coba Lepas Kait</string>
<string name="susfs_tab_path_settings">Pengaturan Jalur</string>
<string name="susfs_tab_enabled_features">Status Fitur Diaktifkan</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">Tambah Jalur SUS</string>
<string name="susfs_add_sus_mount">Tambah Kaitan SUS</string>
<string name="susfs_add_try_umount">Tambah Coba Lepas Kait</string>
<string name="susfs_sus_path_added_success">Jalur SUS berhasil ditambahkan</string>
<string name="susfs_path_not_found_error">Kesalahan: Jalur tidak ditemukan</string>
<string name="susfs_path_label">Jalur</string>
<string name="susfs_mount_path_label">Jalur Kaitan</string>
<string name="susfs_path_placeholder">misalnya: /system/addon.d</string>
<string name="susfs_no_paths_configured">Tidak ada jalur SUS yang dikonfigurasi</string>
<string name="susfs_no_mounts_configured">Tidak ada kaitan SUS yang dikonfigurasi</string>
<string name="susfs_no_umounts_configured">Tidak ada coba lepas kait yang dikonfigurasi</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Mode Lepas Kait</string>
@@ -411,8 +407,6 @@ Tanamkan: Secara permanen memasang ke sistem</string>
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">Atur Ulang Jalur SUS</string>
<string name="susfs_reset_paths_message">Ini akan menghapus semua konfigurasi jalur SUS. Apakah Anda yakin ingin melanjutkan?</string>
<string name="susfs_reset_mounts_title">Atur Ulang Kaitan SUS</string>
<string name="susfs_reset_mounts_message">Ini akan menghapus semua konfigurasi kaitan SUS. Apakah Anda yakin ingin melanjutkan?</string>
<string name="susfs_reset_umounts_title">Atur Ulang Coba Lepas Kait</string>
<string name="susfs_reset_umounts_message">Ini akan menghapus semua konfigurasi coba lepas kait. Apakah Anda yakin ingin melanjutkan?</string>
<string name="susfs_reset_path_title">Atur Ulang Pengaturan Jalur</string>
@@ -428,18 +422,13 @@ Tanamkan: Secara permanen memasang ke sistem</string>
<string name="susfs_feature_disabled">Dinonaktifkan</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">Dukungan Jalur SUS</string>
<string name="sus_mount_feature_label">Dukungan Kaitan SUS</string>
<string name="try_umount_feature_label">Dukungan Coba Lepas Kait</string>
<string name="spoof_uname_feature_label">Dukungan Spoof Uname</string>
<string name="spoof_cmdline_feature_label">Spoof Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">Dukungan Open Redirect</string>
<string name="enable_log_feature_label">Dukungan Logging</string>
<string name="auto_default_mount_feature_label">Kaitan Bawaan Otomatis</string>
<string name="auto_bind_mount_feature_label">Kaitan Bind Otomatis</string>
<string name="auto_try_umount_bind_feature_label">Coba Lepas Kaitan Bind Otomatis</string>
<string name="hide_symbols_feature_label">Sembunyikan Simbol KSU SUSFS</string>
<string name="sus_kstat_feature_label">Dukungan SUS Kstat</string>
<string name="sus_su_feature_label">Fitur Toggle Mode SUS SU</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Fitur SuSFS yang Dapat Dikonfigurasi</string>
<string name="susfs_enable_log_label">Aktifkan Log SuSFS</string>

View File

@@ -389,21 +389,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Pengaturan Dasar</string>
<string name="susfs_tab_sus_paths">Jalur SUS</string>
<string name="susfs_tab_sus_mounts">Pemasangan SUS</string>
<string name="susfs_tab_try_umount">Coba Umount</string>
<string name="susfs_tab_path_settings">Pengaturan Path</string>
<string name="susfs_tab_enabled_features">Status Fitur yang Diaktifkan</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">Tambahkan Jalur SUS</string>
<string name="susfs_add_sus_mount">Tambahkan Pemasangan SUS</string>
<string name="susfs_add_try_umount">Tambahkan Coba Umount</string>
<string name="susfs_sus_path_added_success">Jalur SUS berhasil ditambahkan</string>
<string name="susfs_path_not_found_error">Kesalahan jalur tidak ditemukan</string>
<string name="susfs_path_label">Jalur</string>
<string name="susfs_mount_path_label">Jalur Pemasangan</string>
<string name="susfs_path_placeholder">contoh: /system/addon.d</string>
<string name="susfs_no_paths_configured">Tidak ada jalur SUS yang dikonfigurasi</string>
<string name="susfs_no_mounts_configured">Tidak ada pemasangan SUS yang dikonfigurasi</string>
<string name="susfs_no_umounts_configured">Tidak ada coba umount yang dikonfigurasi</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Mode Umount</string>
@@ -418,8 +414,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">Setel Ulang Jalur SUS</string>
<string name="susfs_reset_paths_message">Ini akan menghapus semua konfigurasi jalur SUS. Apakah Anda yakin ingin melanjutkan?</string>
<string name="susfs_reset_mounts_title">Setel Ulang Pemasangan SUS</string>
<string name="susfs_reset_mounts_message">Ini akan menghapus semua konfigurasi mount SUS. Apakah Anda yakin ingin melanjutkan?</string>
<string name="susfs_reset_umounts_title">Setel Ulang Coba Umount</string>
<string name="susfs_reset_umounts_message">Ini akan menghapus semua konfigurasi umount. Apakah Anda yakin ingin melanjutkan?</string>
<string name="susfs_reset_path_title">Setel Ulang Pengaturan Jalur</string>
@@ -435,18 +429,13 @@
<string name="susfs_feature_disabled">Dinonaktifkan</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">Dukungan Jalur SUS</string>
<string name="sus_mount_feature_label">Dukungan Pemasangan SUS</string>
<string name="try_umount_feature_label">Dukungan Coba Umount</string>
<string name="spoof_uname_feature_label">Dukungan Spoof uname</string>
<string name="spoof_cmdline_feature_label">Spoof Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">Dukungan Pengalihan Terbuka</string>
<string name="enable_log_feature_label">Dukungan Logging</string>
<string name="auto_default_mount_feature_label">Pemasangan Default Otomatis</string>
<string name="auto_bind_mount_feature_label">Pemasangan Bind Otomatis</string>
<string name="auto_try_umount_bind_feature_label">Coba Umount Bind Mount Otomatis</string>
<string name="hide_symbols_feature_label">Sembunyikan Simbol KSU SUSFS</string>
<string name="sus_kstat_feature_label">Dukungan SUS Kstat</string>
<string name="sus_su_feature_label">Fungsi pengalihan mode SUS SU</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Fitur SuSFS yang Dapat Dikonfigurasi</string>
<string name="susfs_enable_log_label">Aktifkan Log SuSFS</string>
@@ -542,7 +531,6 @@
<string name="cleanup_residue">Bersihkan Residu</string>
<string name="cleanup_residue_description">Bersihkan file dan direktori sisa dari berbagai modul dan alat (mungkin terhapus secara tidak sengaja, mengakibatkan kehilangan dan gagal memulai, gunakan dengan hati-hati)</string>
<string name="susfs_edit_sus_path">Edit Jalur SUS</string>
<string name="susfs_edit_sus_mount">Edit Pemasangan SUS</string>
<string name="susfs_edit_try_umount">Edit Coba Umount</string>
<string name="edit_kstat_statically_title">Edit Konfigurasi Statis Kstat</string>
<string name="edit_kstat_path_title">Edit Jalur Kstat</string>

View File

@@ -380,21 +380,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">基本設定</string>
<string name="susfs_tab_sus_paths">SUS のパス</string>
<string name="susfs_tab_sus_mounts">SUS マウント</string>
<string name="susfs_tab_try_umount">アンマウントを試す</string>
<string name="susfs_tab_path_settings">パスの設定</string>
<string name="susfs_tab_enabled_features">有効な機能のステータス</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">SUS パスを追加</string>
<string name="susfs_add_sus_mount">SUS マウントを追加</string>
<string name="susfs_add_try_umount">アンマウントを試すを追加</string>
<string name="susfs_sus_path_added_success">SUS パスが正常に追加されました</string>
<string name="susfs_path_not_found_error">パスが見つかりません</string>
<string name="susfs_path_label">パス</string>
<string name="susfs_mount_path_label">マウントのパス</string>
<string name="susfs_path_placeholder">例: /system/addon.d</string>
<string name="susfs_no_paths_configured">SUS パスが未構成です</string>
<string name="susfs_no_mounts_configured">SUS マウントが未構成です</string>
<string name="susfs_no_umounts_configured">アンマウントを試すが未構成です</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">アンマウントモード</string>
@@ -409,8 +405,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">SUS パスをリセット</string>
<string name="susfs_reset_paths_message">すべての SUS パスの構成が消去されます。続行してもよろしいですか?</string>
<string name="susfs_reset_mounts_title">SUS マウントをリセット</string>
<string name="susfs_reset_mounts_message">すべての SUS マウントの構成が消去されます。続行してもよろしいですか?</string>
<string name="susfs_reset_umounts_title">リセットしてアンマウントを試す</string>
<string name="susfs_reset_umounts_message">すべてのアンマウント構成がリセットされます。続行してもよろしいですか?</string>
<string name="susfs_reset_path_title">パスの設定をリセット</string>
@@ -426,18 +420,13 @@
<string name="susfs_feature_disabled">無効</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">SUS パスの対応</string>
<string name="sus_mount_feature_label">SUS マウントの対応</string>
<string name="try_umount_feature_label">アンマウントを試すの対応</string>
<string name="spoof_uname_feature_label">uname 偽装の対応</string>
<string name="spoof_cmdline_feature_label">Cmdline/Bootconfig を偽装</string>
<string name="open_redirect_feature_label">オープンリダイレクトの対応</string>
<string name="enable_log_feature_label">ログの対応</string>
<string name="auto_default_mount_feature_label">自動でデフォルトのマウント</string>
<string name="auto_bind_mount_feature_label">自動でバインドマウント</string>
<string name="auto_try_umount_bind_feature_label">自動でバインドマウントのアンマウントを試す</string>
<string name="hide_symbols_feature_label">KSU SUSFS シンボルを非表示</string>
<string name="sus_kstat_feature_label">SUS Kstat の対応</string>
<string name="sus_su_feature_label">SUS SU モード切り替え機能</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">構成可能な SuSFS の機能</string>
<string name="susfs_enable_log_label">SuSFS のログ取得を有効化</string>
@@ -533,7 +522,6 @@
<string name="cleanup_residue">残骸をクリーンアップ</string>
<string name="cleanup_residue_description">様々なモジュールや残骸となったツールのファイルとディレクトリをクリーンアップします (誤って削除すると損失や起動の失敗に繋がる可能性があるため、注意して使用してください)</string>
<string name="susfs_edit_sus_path">SUS のパスを編集</string>
<string name="susfs_edit_sus_mount">SUS マウントを編集</string>
<string name="susfs_edit_try_umount">アンマウントを試すを編集</string>
<string name="edit_kstat_statically_title">Kstat 静的構成を編集</string>
<string name="edit_kstat_path_title">Kstat のパスを編集</string>

View File

@@ -390,21 +390,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Базовые настройки</string>
<string name="susfs_tab_sus_paths">SUS пути</string>
<string name="susfs_tab_sus_mounts">SUS монтирование</string>
<string name="susfs_tab_try_umount">Попробовать размонтировать</string>
<string name="susfs_tab_path_settings">Настройки пути</string>
<string name="susfs_tab_enabled_features">Статус включённых функций</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">Добавить SUS путь</string>
<string name="susfs_add_sus_mount">Добавить SUS монтирование</string>
<string name="susfs_add_try_umount">Добавить попробовать размонтировать</string>
<string name="susfs_sus_path_added_success">Путь SUS успешно добавлен</string>
<string name="susfs_path_not_found_error">Ошибка пути</string>
<string name="susfs_path_label">Путь</string>
<string name="susfs_mount_path_label">Путь монтирования</string>
<string name="susfs_path_placeholder">например: /system/addon.d</string>
<string name="susfs_no_paths_configured">SUS пути не настроены</string>
<string name="susfs_no_mounts_configured">SUS монтирование не настроено</string>
<string name="susfs_no_umounts_configured">Попытка размонтировать не настроена</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Режим размонтирования</string>
@@ -419,8 +415,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">Сбросить SUS пути</string>
<string name="susfs_reset_paths_message">Это очистит все конфигурации пути SUS. Вы уверены, что хотите продолжить?</string>
<string name="susfs_reset_mounts_title">Сброс SUS монтирования</string>
<string name="susfs_reset_mounts_message">Это очистит все конфигурации SUS монтирования. Вы уверены, что хотите продолжить?</string>
<string name="susfs_reset_umounts_title">Сбросить Umount</string>
<string name="susfs_reset_umounts_message">Это очистит все конфигурации размонтирования. Вы уверены, что хотите продолжить?</string>
<string name="susfs_reset_path_title">Сбросить настройки пути</string>
@@ -436,18 +430,13 @@
<string name="susfs_feature_disabled">Выключено</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">Поддержка SUS пути</string>
<string name="sus_mount_feature_label">Поддержка SUS монтирования</string>
<string name="try_umount_feature_label">Поддержка размонтирования</string>
<string name="spoof_uname_feature_label">Поддержка подмены uname</string>
<string name="spoof_cmdline_feature_label">Подмена Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">Поддержка Open Redirect</string>
<string name="enable_log_feature_label">Поддержка логов</string>
<string name="auto_default_mount_feature_label">Автомонтирование по умолчанию</string>
<string name="auto_bind_mount_feature_label">Автоматическое бинд монтирование</string>
<string name="auto_try_umount_bind_feature_label">Автоматически попробовать размонтировать привязать монтировать</string>
<string name="hide_symbols_feature_label">Скрытие KSU SUSFS Symbols</string>
<string name="sus_kstat_feature_label">Поддержка SUS Kstat</string>
<string name="sus_su_feature_label">Функция переключения режима SUS SU</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Настраиваемые функции SuSFS</string>
<string name="susfs_enable_log_label">SuSFS включить лог</string>
@@ -543,7 +532,6 @@
<string name="cleanup_residue">Очистка</string>
<string name="cleanup_residue_description">Очистка остаточных файлов и каталогов различных модулей и инструментов (может быть удален по ошибке, в результате потери и неспособности начаться, используйте с осторожностью)</string>
<string name="susfs_edit_sus_path">Редактировать путь SUS</string>
<string name="susfs_edit_sus_mount">Редактировать точку монтирования SUS</string>
<string name="susfs_edit_try_umount">Изменить попробовать размонтировать</string>
<string name="edit_kstat_statically_title">Изменить статическую конфигурацию Kstat</string>
<string name="edit_kstat_path_title">Редактировать путь Kstat</string>

View File

@@ -387,21 +387,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Temel Ayarlar</string>
<string name="susfs_tab_sus_paths">SUS Yolları</string>
<string name="susfs_tab_sus_mounts">SUS Bağlama Noktaları</string>
<string name="susfs_tab_try_umount">Bağlamayı Kaldırmayı Dene</string>
<string name="susfs_tab_path_settings">Yol Ayarları</string>
<string name="susfs_tab_enabled_features">Etkinleştirilen Özellikler Durumu</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">SUS Yolu Ekle</string>
<string name="susfs_add_sus_mount">SUS Bağlama Noktası Ekle</string>
<string name="susfs_add_try_umount">Bağlamayı Kaldırmayı Dene Ekle</string>
<string name="susfs_sus_path_added_success">SUS yolu başarıyla eklendi</string>
<string name="susfs_path_not_found_error">Yol bulunamadı hatası</string>
<string name="susfs_path_label">Yol</string>
<string name="susfs_mount_path_label">Bağlama Yolu</string>
<string name="susfs_path_placeholder">örn.: /system/addon.d</string>
<string name="susfs_no_paths_configured">Yapılandırılmış SUS yolu yok</string>
<string name="susfs_no_mounts_configured">Yapılandırılmış SUS bağlama noktası yok</string>
<string name="susfs_no_umounts_configured">Yapılandırılmış bağlamayı kaldırmayı dene yok</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Bağlamayı Kaldır Modu</string>
@@ -416,8 +412,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">SUS Yollarını Sıfırla</string>
<string name="susfs_reset_paths_message">Bu, tüm SUS yol yapılandırmalarını temizleyecektir. Devam etmek istiyor musunuz?</string>
<string name="susfs_reset_mounts_title">SUS Bağlama Noktalarını Sıfırla</string>
<string name="susfs_reset_mounts_message">Bu, tüm SUS bağlama noktası yapılandırmalarını temizleyecektir. Devam etmek istiyor musunuz?</string>
<string name="susfs_reset_umounts_title">Bağlamayı Kaldırmayı Dene Sıfırla</string>
<string name="susfs_reset_umounts_message">Bu, tüm bağlamayı kaldırmayı dene yapılandırmalarını temizleyecektir. Devam etmek istiyor musunuz?</string>
<string name="susfs_reset_path_title">Yol Ayarlarını Sıfırla</string>
@@ -433,18 +427,13 @@
<string name="susfs_feature_disabled">Devre Dışı Bırakıldı</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">SUS Yol Desteği</string>
<string name="sus_mount_feature_label">SUS Bağlama Noktası Desteği</string>
<string name="try_umount_feature_label">Bağlamayı Kaldırmayı Dene Desteği</string>
<string name="spoof_uname_feature_label">Uname Taklit Desteği</string>
<string name="spoof_cmdline_feature_label">Cmdline/Bootconfig Taklit</string>
<string name="open_redirect_feature_label">ık Yönlendirme Desteği</string>
<string name="enable_log_feature_label">Günlük Kaydı Desteği</string>
<string name="auto_default_mount_feature_label">Otomatik Varsayılan Bağlama</string>
<string name="auto_bind_mount_feature_label">Otomatik Bağlama Noktası Bağlama</string>
<string name="auto_try_umount_bind_feature_label">Otomatik Bağlamayı Kaldırmayı Dene Bağlama</string>
<string name="hide_symbols_feature_label">KSU SUSFS Sembollerini Gizle</string>
<string name="sus_kstat_feature_label">SUS Kstat Desteği</string>
<string name="sus_su_feature_label">SUS SU mod değiştirme işlevi</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Yapılandırılabilir SuSFS Özellikleri</string>
<string name="susfs_enable_log_label">SuSFS Günlük Kaydını Etkinleştir</string>
@@ -540,7 +529,6 @@
<string name="cleanup_residue">Kalıntıları Temizle</string>
<string name="cleanup_residue_description">Çeşitli modüllerin ve araçların kalıntı dosyalarını ve dizinlerini temizleyin (yanlışlıkla silinerek kayba ve başlatılamamaya neden olabilir, dikkatli kullanın)</string>
<string name="susfs_edit_sus_path">SUS Yolunu Düzenle</string>
<string name="susfs_edit_sus_mount">SUS Bağlama Noktasını Düzenle</string>
<string name="susfs_edit_try_umount">Ayırmayı Deneme Yolunu Düzenle</string>
<string name="edit_kstat_statically_title">Kstat Statik Yapılandırmasını Düzenle</string>
<string name="edit_kstat_path_title">Kstat Yolunu Düzenle</string>

View File

@@ -377,21 +377,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Основні налаштування</string>
<string name="susfs_tab_sus_paths">Шляхи SUS</string>
<string name="susfs_tab_sus_mounts">Монтування SUS</string>
<string name="susfs_tab_try_umount">Спроба відмонтування</string>
<string name="susfs_tab_path_settings">Налаштування шляхів</string>
<string name="susfs_tab_enabled_features">Статус увімкнених функцій</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">Додати шлях SUS</string>
<string name="susfs_add_sus_mount">Додати монтування SUS</string>
<string name="susfs_add_try_umount">Додати спробу відмонтування</string>
<string name="susfs_sus_path_added_success">Шлях SUS успішно додано</string>
<string name="susfs_path_not_found_error">Помилка: шлях не знайдено</string>
<string name="susfs_path_label">Шлях</string>
<string name="susfs_mount_path_label">Шлях монтування</string>
<string name="susfs_path_placeholder">напр.: /system/addon.d</string>
<string name="susfs_no_paths_configured">Немає налаштованих шляхів SUS</string>
<string name="susfs_no_mounts_configured">Немає налаштованих монтувань SUS</string>
<string name="susfs_no_umounts_configured">Немає налаштованих спроб відмонтування</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Режим відмонтування</string>
@@ -406,8 +402,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">Скинути шляхи SUS</string>
<string name="susfs_reset_paths_message">Це видалить усі конфігурації шляхів SUS. Ви впевнені, що хочете продовжити?</string>
<string name="susfs_reset_mounts_title">Скинути монтування SUS</string>
<string name="susfs_reset_mounts_message">Це видалить усі конфігурації монтувань SUS. Ви впевнені, що хочете продовжити?</string>
<string name="susfs_reset_umounts_title">Скинути спроби відмонтування</string>
<string name="susfs_reset_umounts_message">Це видалить усі конфігурації спроб відмонтування. Ви впевнені, що хочете продовжити?</string>
<string name="susfs_reset_path_title">Скинути налаштування шляхів</string>
@@ -423,18 +417,13 @@
<string name="susfs_feature_disabled">Вимкнено</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">Підтримка шляхів SUS</string>
<string name="sus_mount_feature_label">Підтримка монтувань SUS</string>
<string name="try_umount_feature_label">Підтримка спроб відмонтування</string>
<string name="spoof_uname_feature_label">Підтримка підміни uname</string>
<string name="spoof_cmdline_feature_label">Підміна Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">Підтримка Open Redirect</string>
<string name="enable_log_feature_label">Підтримка логування</string>
<string name="auto_default_mount_feature_label">Автоматичне монтування за замовчуванням</string>
<string name="auto_bind_mount_feature_label">Автоматичне прив\'язане монтування</string>
<string name="auto_try_umount_bind_feature_label">Автоматична спроба відмонтування прив\'язаного монтування</string>
<string name="hide_symbols_feature_label">Приховати символи KSU SUSFS</string>
<string name="sus_kstat_feature_label">Підтримка SUS Kstat</string>
<string name="sus_su_feature_label">Функція перемикання режиму SUS SU</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Настроювані функції SuSFS</string>
<string name="susfs_enable_log_label">Увімкнути лог SuSFS</string>

View File

@@ -378,21 +378,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Cài đặt cơ bản</string>
<string name="susfs_tab_sus_paths">Đường dẫn SuS</string>
<string name="susfs_tab_sus_mounts">SuS Mount</string>
<string name="susfs_tab_try_umount">Try Umount</string>
<string name="susfs_tab_path_settings">Cài đặt Đường dẫn</string>
<string name="susfs_tab_enabled_features">Trạng thái tính năng</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">Thêm Đường dẫn SuS</string>
<string name="susfs_add_sus_mount">Thêm SuS Mount</string>
<string name="susfs_add_try_umount">Thêm Try Umount</string>
<string name="susfs_sus_path_added_success">Đường dẫn SuS đã được thêm thành công</string>
<string name="susfs_path_not_found_error">Lỗi không tìm thấy đường dẫn</string>
<string name="susfs_path_label">Đường dẫn</string>
<string name="susfs_mount_path_label">Đường dẫn Mount</string>
<string name="susfs_path_placeholder">Ví dụ: /system/addon.d</string>
<string name="susfs_no_paths_configured">Không có Đường dẫn SuS nào được cấu hình</string>
<string name="susfs_no_mounts_configured">Không có SuS Mount nào được cấu hình</string>
<string name="susfs_no_umounts_configured">Không có Try Umount nào được cấu hình</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Chế độ Umount</string>
@@ -407,8 +403,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">Đặt lại Đường dẫn SuS</string>
<string name="susfs_reset_paths_message">Thao tác này sẽ xóa tất cả các cấu hình Đường dẫn SuS. Bạn có chắc chắn muốn tiếp tục không?</string>
<string name="susfs_reset_mounts_title">Đặt lại SuS Mount</string>
<string name="susfs_reset_mounts_message">Thao tác này sẽ xóa tất cả các cấu hình SuS Mount. Bạn có chắc chắn muốn tiếp tục không?</string>
<string name="susfs_reset_umounts_title">Đặt lại Try Umount</string>
<string name="susfs_reset_umounts_message">Thao tác này sẽ xóa tất cả các cấu hình Try Umount. Bạn có chắc chắn muốn tiếp tục không?</string>
<string name="susfs_reset_path_title">Reset Cài đặt Đường dẫn</string>
@@ -424,18 +418,13 @@
<string name="susfs_feature_disabled">Đã tắt</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">Hỗ trợ Đường dẫn SuS</string>
<string name="sus_mount_feature_label">Hỗ trợ SuS Mount</string>
<string name="try_umount_feature_label">Hỗ trợ Try Umount</string>
<string name="spoof_uname_feature_label">Hỗ trợ giả mạo Uname</string>
<string name="spoof_cmdline_feature_label">Giả mạo Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">Mở hỗ trợ chuyển hướng</string>
<string name="enable_log_feature_label">Hỗ trợ ghi nhật ký</string>
<string name="auto_default_mount_feature_label">Tự động Mount mặc định</string>
<string name="auto_bind_mount_feature_label">Tự động Bind Mount</string>
<string name="auto_try_umount_bind_feature_label">Tự động Try Umount Bind Mount</string>
<string name="hide_symbols_feature_label">Ẩn biểu tượng KSU SuSFS</string>
<string name="sus_kstat_feature_label">Hỗ trợ SuS Kstat</string>
<string name="sus_su_feature_label">Chức năng chuyển đổi chế độ SuS SU</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Nhấn để bật/tắt ghi nhật ký</string>
<string name="susfs_enable_log_label">Kích hoạt nhật ký SuSFS</string>
@@ -531,7 +520,6 @@
<string name="cleanup_residue">Dọn rác</string>
<string name="cleanup_residue_description">Dọn dẹp các file và folder còn sót lại của các module và công cụ (Có thể bị xóa nhầm, dẫn đến mất dữ liệu và không khởi động được)</string>
<string name="susfs_edit_sus_path">Chỉnh sửa Đường dẫn SuS</string>
<string name="susfs_edit_sus_mount">Chỉnh sửa SuS Mount</string>
<string name="susfs_edit_try_umount">Chỉnh sửa Try Umount</string>
<string name="edit_kstat_statically_title">Chỉnh sửa cấu hình Kstat tĩnh</string>
<string name="edit_kstat_path_title">Chỉnh sửa Đường dẫn Kstat</string>

View File

@@ -396,21 +396,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">基本设置</string>
<string name="susfs_tab_sus_paths">SuS 路径</string>
<string name="susfs_tab_sus_mounts">SuS 挂载</string>
<string name="susfs_tab_try_umount">尝试卸载</string>
<string name="susfs_tab_path_settings">路径设置</string>
<string name="susfs_tab_enabled_features">启用功能状态</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">添加 SuS 路径</string>
<string name="susfs_add_sus_mount">添加 SuS 挂载</string>
<string name="susfs_add_try_umount">添加尝试卸载</string>
<string name="susfs_sus_path_added_success">SuS 路径添加成功</string>
<string name="susfs_path_not_found_error">路径未找到错误</string>
<string name="susfs_path_label">路径</string>
<string name="susfs_mount_path_label">挂载路径</string>
<string name="susfs_path_placeholder">例如: /system/addon.d</string>
<string name="susfs_no_paths_configured">暂无 SuS 路径配置</string>
<string name="susfs_no_mounts_configured">暂无 SuS 挂载配置</string>
<string name="susfs_no_umounts_configured">暂无尝试卸载配置</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">卸载模式</string>
@@ -425,8 +421,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">重置 SuS 路径</string>
<string name="susfs_reset_paths_message">这将清除所有 SuS 路径配置,确定要继续吗?</string>
<string name="susfs_reset_mounts_title">重置 SuS 挂载</string>
<string name="susfs_reset_mounts_message">这将清除所有 SuS 挂载配置,确定要继续吗?</string>
<string name="susfs_reset_umounts_title">重置尝试卸载</string>
<string name="susfs_reset_umounts_message">这将清除所有尝试卸载配置,确定要继续吗?</string>
<string name="susfs_reset_path_title">重置路径设置</string>
@@ -442,18 +436,13 @@
<string name="susfs_feature_disabled">已禁用</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">SuS 路径支持</string>
<string name="sus_mount_feature_label">SuS 挂载支持</string>
<string name="try_umount_feature_label">尝试卸载支持</string>
<string name="spoof_uname_feature_label">欺骗 uname 支持</string>
<string name="spoof_cmdline_feature_label">欺骗 Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">开放重定向支持</string>
<string name="enable_log_feature_label">日志记录支持</string>
<string name="auto_default_mount_feature_label">自动默认挂载</string>
<string name="auto_bind_mount_feature_label">自动绑定挂载</string>
<string name="auto_try_umount_bind_feature_label">自动尝试卸载绑定挂载</string>
<string name="hide_symbols_feature_label">隐藏 KSU SuSFS 符号</string>
<string name="sus_kstat_feature_label">SuS Kstat 支持</string>
<string name="sus_su_feature_label">SuS SU 模式切换功能</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">可配置的 SuSFS 功能</string>
<string name="susfs_enable_log_label">SuSFS 启用日志</string>
@@ -549,7 +538,6 @@
<string name="cleanup_residue">清理工具残留</string>
<string name="cleanup_residue_description">清理各种模块以及工具的残留文件和目录(可能会误删导致丢失以及无法启动,谨慎使用)</string>
<string name="susfs_edit_sus_path">编辑 SuS 路径</string>
<string name="susfs_edit_sus_mount">编辑 SuS 挂载</string>
<string name="susfs_edit_try_umount">编辑尝试卸载</string>
<string name="edit_kstat_statically_title">编辑 Kstat 静态配置</string>
<string name="edit_kstat_path_title">编辑 Kstat 路径</string>
@@ -736,7 +724,6 @@
<string name="umount_flags">卸载标志</string>
<string name="umount_flags_hint">0=正常卸载, 8=MNT_DETACH, -1=自动</string>
<string name="flags">标志</string>
<string name="default_entry">默认条目</string>
<string name="confirm_delete">确认删除</string>
<string name="confirm_delete_umount_path">确定要删除路径 %s 吗?</string>
<string name="umount_path_added">路径已添加,重启后生效</string>

View File

@@ -376,21 +376,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">基本配置</string>
<string name="susfs_tab_sus_paths">SuS 路徑</string>
<string name="susfs_tab_sus_mounts">SuS 掛載</string>
<string name="susfs_tab_try_umount">嘗試卸載</string>
<string name="susfs_tab_path_settings">路徑配置</string>
<string name="susfs_tab_enabled_features">啟用功能狀態</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">添加 SuS 路徑</string>
<string name="susfs_add_sus_mount">添加 SuS 掛載</string>
<string name="susfs_add_try_umount">嘗試添加卸載</string>
<string name="susfs_sus_path_added_success">SuS 路徑添加成功</string>
<string name="susfs_path_not_found_error">錯誤冇此找到路徑</string>
<string name="susfs_path_label">路徑</string>
<string name="susfs_mount_path_label">掛載路徑</string>
<string name="susfs_path_placeholder">例如: /system/addon.d</string>
<string name="susfs_no_paths_configured">暫冇 SuS 路徑配置</string>
<string name="susfs_no_mounts_configured">暫冇 SuS 掛載配置</string>
<string name="susfs_no_umounts_configured">暫冇嘗試卸載配置</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">卸載模式</string>
@@ -405,8 +401,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">重置 SuS 路徑</string>
<string name="susfs_reset_paths_message">這將清除所有 SuS 路徑配置,確定要繼續嗎?</string>
<string name="susfs_reset_mounts_title">重置 SuS 掛載</string>
<string name="susfs_reset_mounts_message">這將清除所有 SuS 掛載配置,確定要繼續嗎?</string>
<string name="susfs_reset_umounts_title">重置嘗試卸載</string>
<string name="susfs_reset_umounts_message">這將清除所有嘗試卸載配置,確定要繼續嗎?</string>
<string name="susfs_reset_path_title">重置路徑配置</string>
@@ -422,18 +416,13 @@
<string name="susfs_feature_disabled">已禁用</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">SuS 路徑支援</string>
<string name="sus_mount_feature_label">SuS 掛載支援</string>
<string name="try_umount_feature_label">嘗試卸載支援</string>
<string name="spoof_uname_feature_label">欺騙 uname 支援</string>
<string name="spoof_cmdline_feature_label">欺騙 Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">開放重定向支援</string>
<string name="enable_log_feature_label">日誌記錄支援</string>
<string name="auto_default_mount_feature_label">自動默認掛載</string>
<string name="auto_bind_mount_feature_label">自動綁定掛載</string>
<string name="auto_try_umount_bind_feature_label">自動嘗試卸載綁定掛載</string>
<string name="hide_symbols_feature_label">隱藏 KSU SuSFS 符號</string>
<string name="sus_kstat_feature_label">SuS Kstat 支援</string>
<string name="sus_su_feature_label">SuS SU 模式切換功能</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">可配置嘅 SuSFS 功能</string>
<string name="susfs_enable_log_label">SuSFS 啟用日誌</string>
@@ -529,7 +518,6 @@
<string name="cleanup_residue">清理工具殘留</string>
<string name="cleanup_residue_description">清理各種模組以及工具嘅殘留檔案同目錄(可能會誤刪導致丟失以及無法啟動,謹慎使用)</string>
<string name="susfs_edit_sus_path">編輯 SuS 路徑</string>
<string name="susfs_edit_sus_mount">編輯 SuS 掛載</string>
<string name="susfs_edit_try_umount">編輯嘗試解除安裝</string>
<string name="edit_kstat_statically_title">編輯 Kstat 靜態配置</string>
<string name="edit_kstat_path_title">編輯 Kstat 路徑</string>

View File

@@ -378,21 +378,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">基本設定</string>
<string name="susfs_tab_sus_paths">SuS 路徑</string>
<string name="susfs_tab_sus_mounts">SuS 掛載</string>
<string name="susfs_tab_try_umount">嘗試卸載</string>
<string name="susfs_tab_path_settings">路徑設定</string>
<string name="susfs_tab_enabled_features">啟用功能狀態</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">新增 SuS 路徑</string>
<string name="susfs_add_sus_mount">新增 SuS 掛載</string>
<string name="susfs_add_try_umount">新增嘗試卸載</string>
<string name="susfs_sus_path_added_success">成功添加 SuS 路径</string>
<string name="susfs_path_not_found_error">未找到路径</string>
<string name="susfs_path_label">路徑</string>
<string name="susfs_mount_path_label">掛載路徑</string>
<string name="susfs_path_placeholder">例如:/system/addon.d</string>
<string name="susfs_no_paths_configured">暫無 SuS 路徑設定</string>
<string name="susfs_no_mounts_configured">暫無 SuS 掛載設定</string>
<string name="susfs_no_umounts_configured">暫無嘗試卸載設定</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">卸載模式</string>
@@ -407,8 +403,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">重設 SuS 路徑</string>
<string name="susfs_reset_paths_message">這將清除所有 SuS 路徑設定,確定要繼續嗎?</string>
<string name="susfs_reset_mounts_title">重設 SuS 掛載</string>
<string name="susfs_reset_mounts_message">這將清除所有 SuS 掛載設定,確定要繼續嗎?</string>
<string name="susfs_reset_umounts_title">重設嘗試卸載</string>
<string name="susfs_reset_umounts_message">這將清除所有嘗試卸載設定,確定要繼續嗎?</string>
<string name="susfs_reset_path_title">重置路徑設定</string>
@@ -424,18 +418,13 @@
<string name="susfs_feature_disabled">已停用</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">SuS 路徑支援</string>
<string name="sus_mount_feature_label">SuS 掛載支援</string>
<string name="try_umount_feature_label">嘗試卸載支援</string>
<string name="spoof_uname_feature_label">偽裝 uname 支援</string>
<string name="spoof_cmdline_feature_label">偽裝 Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">開放重定向支援</string>
<string name="enable_log_feature_label">日誌記錄支援</string>
<string name="auto_default_mount_feature_label">自動預設掛載</string>
<string name="auto_bind_mount_feature_label">自動綁定掛載</string>
<string name="auto_try_umount_bind_feature_label">自動嘗試卸載綁定掛載</string>
<string name="hide_symbols_feature_label">隱藏 KSU SuSFS 符號</string>
<string name="sus_kstat_feature_label">SuS 內核統計支援</string>
<string name="sus_su_feature_label">SuS SU 模式切換功能</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">可設定的 SuSFS 功能</string>
<string name="susfs_enable_log_label">SuSFS 啟用日誌</string>
@@ -531,7 +520,6 @@
<string name="cleanup_residue">清理工具殘留</string>
<string name="cleanup_residue_description">清理各種模組以及工具的殘留檔案和目錄(可能會誤刪導致丟失以及無法啟動,謹慎使用)</string>
<string name="susfs_edit_sus_path">編輯 SuS 路徑</string>
<string name="susfs_edit_sus_mount">編輯 SuS 掛載</string>
<string name="susfs_edit_try_umount">編輯嘗試解除安裝</string>
<string name="edit_kstat_statically_title">編輯 Kstat 靜態配置</string>
<string name="edit_kstat_path_title">編輯 Kstat 路徑</string>

View File

@@ -399,21 +399,17 @@
<!-- SuSFS Tab Titles -->
<string name="susfs_tab_basic_settings">Basic Settings</string>
<string name="susfs_tab_sus_paths">SUS Paths</string>
<string name="susfs_tab_sus_mounts">SUS Mounts</string>
<string name="susfs_tab_try_umount">Try Umount</string>
<string name="susfs_tab_path_settings">Path Settings</string>
<string name="susfs_tab_enabled_features">Enabled Features Status</string>
<!-- SuSFS Path Management -->
<string name="susfs_add_sus_path">Add SUS Path</string>
<string name="susfs_add_sus_mount">Add SUS Mount</string>
<string name="susfs_add_try_umount">Add Try Umount</string>
<string name="susfs_sus_path_added_success">SUS path added successfully</string>
<string name="susfs_path_not_found_error">Path not found error</string>
<string name="susfs_path_label">Path</string>
<string name="susfs_mount_path_label">Mount Path</string>
<string name="susfs_path_placeholder">e.g.: /system/addon.d</string>
<string name="susfs_no_paths_configured">No SUS paths configured</string>
<string name="susfs_no_mounts_configured">No SUS mounts configured</string>
<string name="susfs_no_umounts_configured">No try umount configured</string>
<!-- SuSFS Umount Mode -->
<string name="susfs_umount_mode_label">Umount Mode</string>
@@ -428,8 +424,6 @@
<!-- SuSFS Reset Categories -->
<string name="susfs_reset_paths_title">Reset SUS Paths</string>
<string name="susfs_reset_paths_message">This will clear all SUS path configurations. Are you sure you want to continue?</string>
<string name="susfs_reset_mounts_title">Reset SUS Mounts</string>
<string name="susfs_reset_mounts_message">This will clear all SUS mount configurations. Are you sure you want to continue?</string>
<string name="susfs_reset_umounts_title">Reset Try Umount</string>
<string name="susfs_reset_umounts_message">This will clear all try umount configurations. Are you sure you want to continue?</string>
<string name="susfs_reset_path_title">Reset Path Settings</string>
@@ -445,18 +439,13 @@
<string name="susfs_feature_disabled">Disabled</string>
<!-- Feature Labels -->
<string name="sus_path_feature_label">SUS Path Support</string>
<string name="sus_mount_feature_label">SUS Mount Support</string>
<string name="try_umount_feature_label">Try Umount Support</string>
<string name="spoof_uname_feature_label">Spoof uname Support</string>
<string name="spoof_cmdline_feature_label">Spoof Cmdline/Bootconfig</string>
<string name="open_redirect_feature_label">Open Redirect Support</string>
<string name="enable_log_feature_label">Logging Support</string>
<string name="auto_default_mount_feature_label">Auto Default Mount</string>
<string name="auto_bind_mount_feature_label">Auto Bind Mount</string>
<string name="auto_try_umount_bind_feature_label">Auto Try Umount Bind Mount</string>
<string name="hide_symbols_feature_label">Hide KSU SUSFS Symbols</string>
<string name="sus_kstat_feature_label">SUS Kstat Support</string>
<string name="sus_su_feature_label">SUS SU mode switching function</string>
<!-- 可切换状态 -->
<string name="susfs_feature_configurable">Configurable SuSFS Features</string>
<string name="susfs_enable_log_label">SuSFS Enable Log</string>
@@ -552,7 +541,6 @@
<string name="cleanup_residue">Cleanup Residue</string>
<string name="cleanup_residue_description">Clean up the residual files and directories of various modules and tools (May be deleted by mistake, resulting in loss and failure to start, use with caution)</string>
<string name="susfs_edit_sus_path">Edit SUS Path</string>
<string name="susfs_edit_sus_mount">Edit SUS Mount</string>
<string name="susfs_edit_try_umount">Edit Try Umount</string>
<string name="edit_kstat_statically_title">Edit Kstat Static Configuration</string>
<string name="edit_kstat_path_title">Edit Kstat Path</string>
@@ -745,7 +733,6 @@ Important Note:\n
<string name="umount_flags">Unmount Flags</string>
<string name="umount_flags_hint">0=Normal unmount, 8=MNT_DETACH, -1=Auto</string>
<string name="flags">Flags</string>
<string name="default_entry">Default Entry</string>
<string name="confirm_delete">Confirm Delete</string>
<string name="confirm_delete_umount_path">Are you sure you want to delete the path %s?</string>
<string name="umount_path_added">Path added, will take effect after reboot</string>