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