manager: Reworking the cleanup functionality for the runtime environment

Fix the uid_scanner library filename in the build script
This commit is contained in:
ShirkNeko
2025-09-19 23:02:38 +08:00
parent a77faa1fe2
commit e27d461eb0
3 changed files with 32 additions and 20 deletions

View File

@@ -250,9 +250,9 @@ jobs:
mkdir -p app/src/main/jniLibs/arm64-v8a mkdir -p app/src/main/jniLibs/arm64-v8a
mkdir -p app/src/main/jniLibs/x86_64 mkdir -p app/src/main/jniLibs/x86_64
mkdir -p app/src/main/jniLibs/armeabi-v7a 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 ../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/uid_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/uid_scanner.so cp -f ../armeabi-v7a/uid_scanner ../manager/app/src/main/jniLibs/armeabi-v7a/libuid_scanner.so
- name: Build with Gradle - name: Build with Gradle
run: ./gradlew clean assembleRelease run: ./gradlew clean assembleRelease

View File

@@ -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.getCardColors
import com.sukisu.ultra.ui.theme.getCardElevation import com.sukisu.ultra.ui.theme.getCardElevation
import com.sukisu.ultra.ui.util.LocalSnackbarHost 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.getBugreportFile
import com.sukisu.ultra.ui.util.getRootShell
import com.sukisu.ultra.ui.util.setUidAutoScan import com.sukisu.ultra.ui.util.setUidAutoScan
import com.sukisu.ultra.ui.util.setUidMultiUserScan import com.sukisu.ultra.ui.util.setUidMultiUserScan
import com.topjohnwu.superuser.ShellUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -201,7 +202,6 @@ fun SettingScreen(navigator: DestinationsNavigator) {
uidAutoScanEnabled = enabled uidAutoScanEnabled = enabled
prefs.edit { putBoolean("uid_auto_scan", enabled) } prefs.edit { putBoolean("uid_auto_scan", enabled) }
// 如果关闭了用户态扫描,则同时关闭多用户扫描
if (!enabled) { if (!enabled) {
uidMultiUserScanEnabled = false uidMultiUserScanEnabled = false
prefs.edit { putBoolean("uid_multi_user_scan", 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) content = context.getString(R.string.clean_runtime_environment_confirm)
) )
if (result == ConfirmResult.Confirmed) { if (result == ConfirmResult.Confirmed) {
uidAutoScanEnabled = false val cleanResult = cleanRuntimeEnvironment()
prefs.edit { putBoolean("uid_auto_scan", false) } if (cleanResult) {
uidAutoScanEnabled = false
prefs.edit { putBoolean("uid_auto_scan", false) }
uidMultiUserScanEnabled = false uidMultiUserScanEnabled = false
prefs.edit { putBoolean("uid_multi_user_scan", 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 @Composable
private fun SettingsGroupCard( private fun SettingsGroupCard(
title: String, title: String,

View File

@@ -614,13 +614,3 @@ fun setUidMultiUserScan(enabled: Boolean): Boolean {
val result = ShellUtils.fastCmdResult(shell, cmd) val result = ShellUtils.fastCmdResult(shell, cmd)
return result 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
}
}