From e27d461eb09819f232e1d38f6c6aa3c1905569a1 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Fri, 19 Sep 2025 23:02:38 +0800 Subject: [PATCH] manager: Reworking the cleanup functionality for the runtime environment Fix the uid_scanner library filename in the build script --- .github/workflows/build-manager.yml | 6 ++-- .../com/sukisu/ultra/ui/screen/Settings.kt | 36 +++++++++++++++---- .../java/com/sukisu/ultra/ui/util/KsuCli.kt | 10 ------ 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build-manager.yml b/.github/workflows/build-manager.yml index b78abe61..16d900ca 100644 --- a/.github/workflows/build-manager.yml +++ b/.github/workflows/build-manager.yml @@ -250,9 +250,9 @@ jobs: mkdir -p app/src/main/jniLibs/arm64-v8a mkdir -p app/src/main/jniLibs/x86_64 mkdir -p app/src/main/jniLibs/armeabi-v7a - cp -f ../arm64-v8a/uid_scanner ../manager/app/src/main/jniLibs/arm64-v8a/uid_scanner.so - cp -f ../x86_64/uid_scanner ../manager/app/src/main/jniLibs/x86_64/uid_scanner.so - cp -f ../armeabi-v7a/uid_scanner ../manager/app/src/main/jniLibs/armeabi-v7a/uid_scanner.so + cp -f ../arm64-v8a/uid_scanner ../manager/app/src/main/jniLibs/arm64-v8a/libuid_scanner.so + cp -f ../x86_64/uid_scanner ../manager/app/src/main/jniLibs/x86_64/libuid_scanner.so + cp -f ../armeabi-v7a/uid_scanner ../manager/app/src/main/jniLibs/armeabi-v7a/libuid_scanner.so - name: Build with Gradle run: ./gradlew clean assembleRelease diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt index c84b8897..1b3c7a06 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt @@ -47,10 +47,11 @@ import com.sukisu.ultra.ui.theme.CardConfig.cardAlpha import com.sukisu.ultra.ui.theme.getCardColors import com.sukisu.ultra.ui.theme.getCardElevation import com.sukisu.ultra.ui.util.LocalSnackbarHost -import com.sukisu.ultra.ui.util.cleanRuntimeEnvironment import com.sukisu.ultra.ui.util.getBugreportFile +import com.sukisu.ultra.ui.util.getRootShell import com.sukisu.ultra.ui.util.setUidAutoScan import com.sukisu.ultra.ui.util.setUidMultiUserScan +import com.topjohnwu.superuser.ShellUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -201,7 +202,6 @@ fun SettingScreen(navigator: DestinationsNavigator) { uidAutoScanEnabled = enabled prefs.edit { putBoolean("uid_auto_scan", enabled) } - // 如果关闭了用户态扫描,则同时关闭多用户扫描 if (!enabled) { uidMultiUserScanEnabled = false prefs.edit { putBoolean("uid_multi_user_scan", false) } @@ -273,13 +273,18 @@ fun SettingScreen(navigator: DestinationsNavigator) { content = context.getString(R.string.clean_runtime_environment_confirm) ) if (result == ConfirmResult.Confirmed) { - uidAutoScanEnabled = false - prefs.edit { putBoolean("uid_auto_scan", false) } + val cleanResult = cleanRuntimeEnvironment() + if (cleanResult) { + uidAutoScanEnabled = false + prefs.edit { putBoolean("uid_auto_scan", false) } - uidMultiUserScanEnabled = false - prefs.edit { putBoolean("uid_multi_user_scan", false) } + uidMultiUserScanEnabled = false + prefs.edit { putBoolean("uid_multi_user_scan", false) } - snackBarHost.showSnackbar(context.getString(R.string.clean_runtime_environment_success)) + snackBarHost.showSnackbar(context.getString(R.string.clean_runtime_environment_success)) + } else { + snackBarHost.showSnackbar(context.getString(R.string.clean_runtime_environment_failed)) + } } } } @@ -454,6 +459,23 @@ fun SettingScreen(navigator: DestinationsNavigator) { } } +fun cleanRuntimeEnvironment(): Boolean { + val shell = getRootShell() + return try { + try { + ShellUtils.fastCmd(shell, "/data/adb/uid_scanner stop") + } catch (_: Exception) { + } + ShellUtils.fastCmdResult(shell, "rm -rf /data/misc/user_uid") + ShellUtils.fastCmdResult(shell, "rm -rf /data/adb/uid_scanner") + ShellUtils.fastCmdResult(shell, "rm -rf /data/adb/ksu/bin/user_uid") + ShellUtils.fastCmdResult(shell, "rm -rf /data/adb/service.d/uid_scanner.sh") + true + } catch (_: Exception) { + false + } +} + @Composable private fun SettingsGroupCard( title: String, diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/util/KsuCli.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/util/KsuCli.kt index f6acea8f..1c1b0709 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/util/KsuCli.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/util/KsuCli.kt @@ -614,13 +614,3 @@ fun setUidMultiUserScan(enabled: Boolean): Boolean { val result = ShellUtils.fastCmdResult(shell, cmd) return result } - -fun cleanRuntimeEnvironment(): Boolean { - val shell = getRootShell() - val cmd = "$targetPath stop && rm -f /data/misc/user_uid && rm -rf $targetPath && rm -rf /data/adb/ksu/bin/user_uid && rm -rf /data/adb/service.d/uid_scanner.sh" - return try { - ShellUtils.fastCmdResult(shell, cmd) - } catch (_: Exception) { - false - } -}