diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Info.kt b/app/src/main/java/com/topjohnwu/magisk/core/Info.kt
index 376cf387e..57e6c7566 100644
--- a/app/src/main/java/com/topjohnwu/magisk/core/Info.kt
+++ b/app/src/main/java/com/topjohnwu/magisk/core/Info.kt
@@ -28,21 +28,23 @@ object Info {
// Device state
@JvmStatic val env by lazy { loadState() }
- @JvmStatic var isSAR = false
+ @JvmField var isSAR = false
var isAB = false
val isVirtualAB = getProperty("ro.virtual_ab.enabled", "false") == "true"
@JvmField val isZygiskEnabled = System.getenv("ZYGISK_ENABLED") == "1"
@JvmStatic val isFDE get() = crypto == "block"
@JvmField var ramdisk = false
@JvmField var vbmeta = false
- @JvmField var hasGMS = true
- @JvmField val isPixel = Build.BRAND == "google"
- @JvmField val isEmulator =
- getProperty("ro.kernel.qemu", "0") == "1" ||
- getProperty("ro.boot.qemu", "0") == "1"
var crypto = ""
var noDataExec = false
+ @JvmField var hasGMS = true
+ @JvmField val isPixel = Build.BRAND == "google"
+ val isSamsung = Build.MANUFACTURER.equals("samsung", ignoreCase = true)
+ @JvmField val isEmulator =
+ getProperty("ro.kernel.qemu", "0") == "1" ||
+ getProperty("ro.boot.qemu", "0") == "1"
+
val isConnected by lazy {
ObservableBoolean(false).also { field ->
NetworkObserver.observe(AppContext) {
diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
index 3db8ca7f0..052fce210 100644
--- a/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
+++ b/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
@@ -1,7 +1,6 @@
package com.topjohnwu.magisk.ui.install
import android.net.Uri
-import android.os.Build
import androidx.databinding.Bindable
import androidx.lifecycle.viewModelScope
import com.topjohnwu.magisk.BR
@@ -27,11 +26,12 @@ class InstallViewModel(
) : BaseViewModel() {
val isRooted = Shell.rootAccess()
- val skipOptions = Info.ramdisk && !Info.isFDE && Info.isSAR && !(!Info.vbmeta && Build.VERSION.SDK_INT >= 30)
+ val hideVbmeta = Info.vbmeta || Info.isSamsung || Info.isAB
+ val skipOptions = Info.isEmulator || (Info.isSAR && !Info.isFDE && hideVbmeta && Info.ramdisk)
val noSecondSlot = !isRooted || Info.isPixel || Info.isVirtualAB || !Info.isAB || Info.isEmulator
@get:Bindable
- var step = if (Info.isEmulator || skipOptions) 1 else 0
+ var step = if (skipOptions) 1 else 0
set(value) = set(value, field, { field = it }, BR.step)
var _method = -1
diff --git a/app/src/main/res/layout/fragment_install_md2.xml b/app/src/main/res/layout/fragment_install_md2.xml
index fefd90d83..b814c1920 100644
--- a/app/src/main/res/layout/fragment_install_md2.xml
+++ b/app/src/main/res/layout/fragment_install_md2.xml
@@ -9,8 +9,6 @@
-
-
@@ -36,7 +34,7 @@