From 84e1bd7bc373efc50f9e7423b20449dc323196ad Mon Sep 17 00:00:00 2001 From: vvb2060 Date: Wed, 8 Mar 2023 14:43:41 +0800 Subject: [PATCH] Refactor sepolicy.rules resolve app --- .../com/topjohnwu/magisk/events/dialog/EnvFixDialog.kt | 6 ++++-- .../java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt | 5 +++-- app/src/main/res/raw/manager.sh | 9 ++++++--- app/src/main/res/values/strings.xml | 1 + 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/events/dialog/EnvFixDialog.kt b/app/src/main/java/com/topjohnwu/magisk/events/dialog/EnvFixDialog.kt index 56294594e..9784ebfa0 100644 --- a/app/src/main/java/com/topjohnwu/magisk/events/dialog/EnvFixDialog.kt +++ b/app/src/main/java/com/topjohnwu/magisk/events/dialog/EnvFixDialog.kt @@ -10,7 +10,7 @@ import com.topjohnwu.magisk.ui.home.HomeViewModel import com.topjohnwu.magisk.view.MagiskDialog import kotlinx.coroutines.launch -class EnvFixDialog(private val vm: HomeViewModel) : DialogEvent() { +class EnvFixDialog(private val vm: HomeViewModel, private val code: Int) : DialogEvent() { override fun build(dialog: MagiskDialog) { dialog.apply { @@ -38,8 +38,10 @@ class EnvFixDialog(private val vm: HomeViewModel) : DialogEvent() { } } - if (Info.env.versionCode != BuildConfig.VERSION_CODE || + if (code == 2 || // No rules block, module policy not loaded + Info.env.versionCode != BuildConfig.VERSION_CODE || Info.env.versionString != BuildConfig.VERSION_NAME) { + dialog.setMessage(R.string.env_full_fix_msg) dialog.setButton(MagiskDialog.ButtonType.POSITIVE) { text = android.R.string.ok onClick { diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt index b107a9ffb..f08474bd3 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt @@ -135,8 +135,9 @@ class HomeViewModel( private suspend fun ensureEnv() { if (magiskState == State.INVALID || checkedEnv) return val cmd = "env_check ${Info.env.versionString} ${Info.env.versionCode}" - if (!Shell.cmd(cmd).await().isSuccess) { - EnvFixDialog(this).publish() + val code = Shell.cmd(cmd).await().code + if (code != 0) { + EnvFixDialog(this, code).publish() } checkedEnv = true } diff --git a/app/src/main/res/raw/manager.sh b/app/src/main/res/raw/manager.sh index 1dea66f3b..756302dae 100644 --- a/app/src/main/res/raw/manager.sh +++ b/app/src/main/res/raw/manager.sh @@ -13,8 +13,11 @@ env_check() { if [ "$2" -ge 25000 ]; then [ -f "$MAGISKBIN/magiskpolicy" ] || return 1 fi - grep -xqF "MAGISK_VER='$1'" "$MAGISKBIN/util_functions.sh" || return 1 - grep -xqF "MAGISK_VER_CODE=$2" "$MAGISKBIN/util_functions.sh" || return 1 + if [ "$2" -ge 25210 ]; then + [ -b "$MAGISKTMP/block/rules" ] || return 2 + fi + grep -xqF "MAGISK_VER='$1'" "$MAGISKBIN/util_functions.sh" || return 3 + grep -xqF "MAGISK_VER_CODE=$2" "$MAGISKBIN/util_functions.sh" || return 3 return 0 } @@ -41,7 +44,7 @@ fix_env() { rm -rf $MAGISKBIN/* mkdir -p $MAGISKBIN 2>/dev/null chmod 700 $NVBASE - rm $1/stub.apk + rm $1/stub.apk 2>/dev/null cp_readlink $1 $MAGISKBIN rm -rf $1 chown -R 0:0 $MAGISKBIN diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 26d912099..33e39e969 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -219,6 +219,7 @@ Setup failed Requires Additional Setup Your device needs additional setup for Magisk to work properly. Do you want to proceed and reboot? + Your device needs reflash Magisk to work properly. Please reinstall Magisk within app, recovery mode cannot get correct device info. Running environment setup… Authenticate Unsupported Magisk Version