manager: Reworking the cleanup functionality for the runtime environment
Fix the uid_scanner library filename in the build script
This commit is contained in:
6
.github/workflows/build-manager.yml
vendored
6
.github/workflows/build-manager.yml
vendored
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user