mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-03-28 09:42:16 +00:00
Support PATCHVBMETAFLAG env variable
This commit is contained in:
parent
b2cd24ed1b
commit
fd7bf2bc3a
@ -109,9 +109,10 @@ object Config : PreferenceModel, DBConfig {
|
|||||||
else
|
else
|
||||||
Value.DEFAULT_CHANNEL
|
Value.DEFAULT_CHANNEL
|
||||||
|
|
||||||
@JvmStatic var keepVerity = false
|
@JvmField var keepVerity = false
|
||||||
@JvmStatic var keepEnc = false
|
@JvmField var keepEnc = false
|
||||||
@JvmStatic var recovery = false
|
@JvmField var patchVbmeta = false
|
||||||
|
@JvmField var recovery = false
|
||||||
|
|
||||||
var bootId by preference(Key.BOOT_ID, "")
|
var bootId by preference(Key.BOOT_ID, "")
|
||||||
var askedHome by preference(Key.ASKED_HOME, false)
|
var askedHome by preference(Key.ASKED_HOME, false)
|
||||||
|
@ -34,6 +34,7 @@ object Info {
|
|||||||
@JvmField val isZygiskEnabled = System.getenv("ZYGISK_ENABLED") == "1"
|
@JvmField val isZygiskEnabled = System.getenv("ZYGISK_ENABLED") == "1"
|
||||||
@JvmStatic val isFDE get() = crypto == "block"
|
@JvmStatic val isFDE get() = crypto == "block"
|
||||||
@JvmField var ramdisk = false
|
@JvmField var ramdisk = false
|
||||||
|
@JvmField var vbmeta = false
|
||||||
@JvmField var hasGMS = true
|
@JvmField var hasGMS = true
|
||||||
@JvmField val isPixel = Build.BRAND == "google"
|
@JvmField val isPixel = Build.BRAND == "google"
|
||||||
@JvmField val isEmulator =
|
@JvmField val isEmulator =
|
||||||
|
@ -357,6 +357,7 @@ abstract class MagiskInstallImpl protected constructor(
|
|||||||
"cd $installDir",
|
"cd $installDir",
|
||||||
"KEEPFORCEENCRYPT=${Config.keepEnc} " +
|
"KEEPFORCEENCRYPT=${Config.keepEnc} " +
|
||||||
"KEEPVERITY=${Config.keepVerity} " +
|
"KEEPVERITY=${Config.keepVerity} " +
|
||||||
|
"PATCHVBMETAFLAG=${Config.patchVbmeta} " +
|
||||||
"RECOVERYMODE=${Config.recovery} " +
|
"RECOVERYMODE=${Config.recovery} " +
|
||||||
"sh boot_patch.sh $srcBoot")
|
"sh boot_patch.sh $srcBoot")
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ class ShellInit : Shell.Initializer() {
|
|||||||
Const.MAGISKTMP = getVar("MAGISKTMP")
|
Const.MAGISKTMP = getVar("MAGISKTMP")
|
||||||
Info.isSAR = getBool("SYSTEM_ROOT")
|
Info.isSAR = getBool("SYSTEM_ROOT")
|
||||||
Info.ramdisk = getBool("RAMDISKEXIST")
|
Info.ramdisk = getBool("RAMDISKEXIST")
|
||||||
|
Info.vbmeta = getBool("VBMETAEXIST")
|
||||||
Info.isAB = getBool("ISAB")
|
Info.isAB = getBool("ISAB")
|
||||||
Info.crypto = getVar("CRYPTOTYPE")
|
Info.crypto = getVar("CRYPTOTYPE")
|
||||||
|
|
||||||
@ -82,6 +83,7 @@ class ShellInit : Shell.Initializer() {
|
|||||||
Config.recovery = getBool("RECOVERYMODE")
|
Config.recovery = getBool("RECOVERYMODE")
|
||||||
Config.keepVerity = getBool("KEEPVERITY")
|
Config.keepVerity = getBool("KEEPVERITY")
|
||||||
Config.keepEnc = getBool("KEEPFORCEENCRYPT")
|
Config.keepEnc = getBool("KEEPFORCEENCRYPT")
|
||||||
|
Config.patchVbmeta = getBool("PATCHVBMETAFLAG")
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.topjohnwu.magisk.ui.install
|
package com.topjohnwu.magisk.ui.install
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
import androidx.databinding.Bindable
|
import androidx.databinding.Bindable
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.topjohnwu.magisk.BR
|
import com.topjohnwu.magisk.BR
|
||||||
@ -26,11 +27,11 @@ class InstallViewModel(
|
|||||||
) : BaseViewModel() {
|
) : BaseViewModel() {
|
||||||
|
|
||||||
val isRooted = Shell.rootAccess()
|
val isRooted = Shell.rootAccess()
|
||||||
val skipOptions = Info.isEmulator || (Info.ramdisk && !Info.isFDE && Info.isSAR)
|
val skipOptions = Info.ramdisk && !Info.isFDE && Info.isSAR && !(!Info.vbmeta && Build.VERSION.SDK_INT >= 30)
|
||||||
val noSecondSlot = !isRooted || Info.isPixel || Info.isVirtualAB || !Info.isAB || Info.isEmulator
|
val noSecondSlot = !isRooted || Info.isPixel || Info.isVirtualAB || !Info.isAB || Info.isEmulator
|
||||||
|
|
||||||
@get:Bindable
|
@get:Bindable
|
||||||
var step = if (skipOptions) 1 else 0
|
var step = if (Info.isEmulator || skipOptions) 1 else 0
|
||||||
set(value) = set(value, field, { field = it }, BR.step)
|
set(value) = set(value, field, { field = it }, BR.step)
|
||||||
|
|
||||||
var _method = -1
|
var _method = -1
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
<import type="com.topjohnwu.magisk.core.Config" />
|
<import type="com.topjohnwu.magisk.core.Config" />
|
||||||
|
|
||||||
|
<import type="android.os.Build" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="com.topjohnwu.magisk.ui.install.InstallViewModel" />
|
type="com.topjohnwu.magisk.ui.install.InstallViewModel" />
|
||||||
@ -34,7 +36,7 @@
|
|||||||
|
|
||||||
<com.google.android.material.card.MaterialCardView
|
<com.google.android.material.card.MaterialCardView
|
||||||
style="@style/WidgetFoundation.Card"
|
style="@style/WidgetFoundation.Card"
|
||||||
gone="@{viewModel.skipOptions}"
|
gone="@{viewModel.skipOptions || Info.isEmulator}"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/l1"
|
android:layout_marginStart="@dimen/l1"
|
||||||
@ -108,6 +110,15 @@
|
|||||||
android:text="@string/keep_force_encryption"
|
android:text="@string/keep_force_encryption"
|
||||||
app:tint="?colorPrimary" />
|
app:tint="?colorPrimary" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
style="@style/WidgetFoundation.Checkbox"
|
||||||
|
goneUnless="@{!Info.vbmeta && Build.VERSION.SDK_INT >= 30}"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checked="@={Config.patchVbmeta}"
|
||||||
|
android:text="@string/patch_vbmeta"
|
||||||
|
app:tint="?colorPrimary" />
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
style="@style/WidgetFoundation.Checkbox"
|
style="@style/WidgetFoundation.Checkbox"
|
||||||
gone="@{Info.ramdisk}"
|
gone="@{Info.ramdisk}"
|
||||||
|
@ -179,6 +179,12 @@ check_encryption() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_vbmeta_partition() {
|
||||||
|
if [ -e /dev/block/by-name/vbmeta_a ] || [ -e /dev/block/by-name/vbmeta ]; then
|
||||||
|
VBMETAEXIST=true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# Non-root util_functions
|
# Non-root util_functions
|
||||||
##########################
|
##########################
|
||||||
@ -211,6 +217,7 @@ app_init() {
|
|||||||
SHA1=$(grep_prop SHA1 $MAGISKTMP/config)
|
SHA1=$(grep_prop SHA1 $MAGISKTMP/config)
|
||||||
check_boot_ramdisk && RAMDISKEXIST=true || RAMDISKEXIST=false
|
check_boot_ramdisk && RAMDISKEXIST=true || RAMDISKEXIST=false
|
||||||
check_encryption
|
check_encryption
|
||||||
|
check_vbmeta_partition
|
||||||
# Make sure RECOVERYMODE has value
|
# Make sure RECOVERYMODE has value
|
||||||
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
|
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
<!--Install-->
|
<!--Install-->
|
||||||
<string name="keep_force_encryption">Preserve force encryption</string>
|
<string name="keep_force_encryption">Preserve force encryption</string>
|
||||||
<string name="keep_dm_verity">Preserve AVB 2.0/dm-verity</string>
|
<string name="keep_dm_verity">Preserve AVB 2.0/dm-verity</string>
|
||||||
|
<string name="patch_vbmeta">Patch vbmeta in boot image</string>
|
||||||
<string name="recovery_mode">Recovery Mode</string>
|
<string name="recovery_mode">Recovery Mode</string>
|
||||||
<string name="install_options_title">Options</string>
|
<string name="install_options_title">Options</string>
|
||||||
<string name="install_method_title">Method</string>
|
<string name="install_method_title">Method</string>
|
||||||
|
@ -403,7 +403,14 @@ get_flags() {
|
|||||||
KEEPFORCEENCRYPT=false
|
KEEPFORCEENCRYPT=false
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
[ -z $PATCHVBMETAFLAG ] && PATCHVBMETAFLAG=false
|
if [ -z $PATCHVBMETAFLAG ]; then
|
||||||
|
if [ -e /dev/block/by-name/vbmeta_a ] || [ -e /dev/block/by-name/vbmeta ]; then
|
||||||
|
PATCHVBMETAFLAG=false
|
||||||
|
else
|
||||||
|
PATCHVBMETAFLAG=true
|
||||||
|
ui_print "- Not found vbmeta partition, patch vbmetaflag"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
|
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user