Initial upload

This commit is contained in:
Russell Reynolds 2024-01-23 08:55:55 -06:00 committed by GitHub
parent 5cf1088c7b
commit b29adbd26f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 562 additions and 0 deletions

12
Android.bp Normal file
View file

@ -0,0 +1,12 @@
//
// Copyright (C) 2023 The Android Open Source Project
// Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
//
// SPDX-License-Identifier: Apache-2.0
//
soong_namespace {
imports: [
"hardware/qcom-caf/bootctrl",
],
}

12
Android.mk Normal file
View file

@ -0,0 +1,12 @@
#
# Copyright (C) 2023 The Android Open Source Project
# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
#
# SPDX-License-Identifier: Apache-2.0
#
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_DEVICE),genevn)
include $(call all-subdir-makefiles,$(LOCAL_PATH))
endif

14
AndroidProducts.mk Normal file
View file

@ -0,0 +1,14 @@
#
# Copyright (C) 2023 The Android Open Source Project
# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
#
# SPDX-License-Identifier: Apache-2.0
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/twrp_genevn.mk
COMMON_LUNCH_CHOICES := \
twrp_genevn-user \
twrp_genevn-userdebug \
twrp_genevn-eng

255
BoardConfig.mk Normal file
View file

@ -0,0 +1,255 @@
#
# Copyright (C) 2023 The Android Open Source Project
# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
#
# SPDX-License-Identifier: Apache-2.0
#
DEVICE_PATH := device/motorola/genevn
DEVICE_PREBUILT_PATH := device/motorola/genevn/prebuilt
INCLUDE_PATH := $(DEVICE_PATH)/include
LC_ALL="C"
BUILD_BROKEN_DUP_RULES := true
BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
BUILD_BROKEN_MISSING_REQUIRED_MODULES := true
RELAX_USES_LIBRARY_CHECK := true
TARGET_DEVICE_ALT := genevn_g
# For building with minimal manifest
ALLOW_MISSING_DEPENDENCIES := true
# A/B
AB_OTA_UPDATER := true
BOARD_BUILD_SYSTEM_ROOT_IMAGE := false
AB_OTA_PARTITIONS += \
boot \
dtbo \
product \
system \
system_ext \
recovery \
vbmeta \
vbmeta_system \
vendor \
vendor_dlkm \
vendor_boot
# Architecture
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-2a-dotprod
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := cortex-a76
TARGET_CPU_VARIANT_RUNTIME := kryo300
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-2a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := cortex-a55
TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a55
# Bootloader
TARGET_NO_BOOTLOADER := false
TARGET_USES_UEFI := true
TARGET_USES_REMOTEPROC := true
TARGET_NO_RECOVERY := false
# Display
TARGET_SCREEN_DENSITY := 400
# Kernel
BOARD_BOOT_HEADER_VERSION := 4
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_TAGS_OFFSET := 0x00000100
BOARD_KERNEL_OFFSET := 0x00008000
BOARD_RAMDISK_OFFSET := 0x01000000
BOARD_DTB_OFFSET := 0x01f00000
BOARD_KERNEL_CMDLINE += video=vfb:640x400,bpp=32,memsize=3072000 printk.devkmsg=on firmware_class.path=/vendor/firmware_mnt/image bootconfig
BOARD_BOOTCONFIG += \
androidboot.hardware=qcom \
androidboot.memcg=1 \
androidboot.usbcontroller=a600000.dwc3 \
video=vfb:640x400,bpp=32,memsize=3072000 \
msm_rtb.filter=0x237 \
service_locator.enable=1 \
androidboot.selinux=permissive \
cgroup.memory=nokmem,nosocket
BOARD_KERNEL_IMAGE_NAME := Image
BOARD_KERNEL_PAGESIZE := 4096
BOARD_KERNEL_SEPARATED_DTBO := true
BOARD_MKBOOTIMG_ARGS += --base $(BOARD_KERNEL_BASE)
BOARD_MKBOOTIMG_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE)
BOARD_MKBOOTIMG_ARGS += --ramdisk_offset $(BOARD_RAMDISK_OFFSET)
BOARD_MKBOOTIMG_ARGS += --tags_offset $(BOARD_KERNEL_TAGS_OFFSET)
BOARD_MKBOOTIMG_ARGS += --kernel_offset $(BOARD_KERNEL_OFFSET)
BOARD_MKBOOTIMG_ARGS += --dtb $(DEVICE_PREBUILT_PATH)/dtb.img
BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
BOARD_INCLUDE_DTB_IN_BOOTIMG := true
TARGET_KERNEL_ARCH := arm64
TARGET_KERNEL_HEADER_ARCH := arm64
BOARD_RAMDISK_USE_LZ4 := true
TARGET_PREBUILT_KERNEL := $(DEVICE_PREBUILT_PATH)/kernel
TARGET_PREBUILT_DTB := $(DEVICE_PREBUILT_PATH)/dtb.img
# Copy DTB
PRODUCT_COPY_FILES += \
$(TARGET_PREBUILT_DTB):dtb.img
TARGET_FORCE_PREBUILT_KERNEL := true
BOARD_USES_FULL_RECOVERY_IMAGE := true
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE := true
BOARD_USES_GENERIC_KERNEL_IMAGE := true
# Partitions
BOARD_FLASH_BLOCK_SIZE := 262144 # (BOARD_KERNEL_PAGESIZE * 64)
BOARD_SUPER_PARTITION_GROUPS := qti_dynamic_partitions
BOARD_QTI_DYNAMIC_PARTITIONS_PARTITION_LIST := system system_ext product vendor vendor_dlkm
BOARD_QTI_DYNAMIC_PARTITIONS_SIZE := 9122611200
BOARD_SUPER_PARTITION_SIZE := 9126805504
BOARD_BOOTIMAGE_PARTITION_SIZE := 100663296
BOARD_KERNEL_GKI_BOOTIMAGE_PARTITION_SIZE := $(BOARD_BOOTIMAGE_PARTITION_SIZE)
BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 100663296
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 104857600
BOARD_SYSTEMIMAGE_PARTITION_TYPE := ext4
BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_USES_METADATA_PARTITION := true
TARGET_COPY_OUT_VENDOR := vendor
TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_USES_VENDOR_DLKMIMAGE := true
# Platform
TARGET_BOARD_PLATFORM := parrot
TARGET_BOOTLOADER_BOARD_NAME := parrot
QCOM_BOARD_PLATFORMS += parrot
# Properties
TARGET_SYSTEM_PROP += $(DEVICE_PATH)/system.prop
# Recovery
TARGET_RECOVERY_QCOM_RTC_FIX := true
TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
TARGET_RECOVERY_DEVICE_DIRS += $(DEVICE_PATH)
TARGET_RECOVERY_FSTAB := $(DEVICE_PATH)/recovery/root/system/etc/recovery.fstab
TARGET_USERIMAGES_USE_EXT3 := true
TARGET_USERIMAGES_USE_EXT4 := true
TARGET_USERIMAGES_USE_F2FS := true
TARGET_USERIMAGES_USE_EROFS := true
TARGET_USERIMAGES_USE_E2FSCK := true
TARGET_USERIMAGES_USE_VFAT := true
BOARD_HAS_LARGE_FILESYSTEM := true
BOARD_HAS_NO_SELECT_BUTTON := true
# Verified Boot
BOARD_AVB_ENABLE := true
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3
BOARD_AVB_RECOVERY_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
BOARD_AVB_RECOVERY_ALGORITHM := SHA256_RSA4096
BOARD_AVB_RECOVERY_ROLLBACK_INDEX := 1
BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 1
BOARD_AVB_VBMETA_SYSTEM := product system system_ext
BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 2
# Hack: prevent anti rollback
PLATFORM_SECURITY_PATCH := 2099-12-31
VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
PLATFORM_VERSION := 99.87.36
PLATFORM_VERSION_LAST_STABLE := $(PLATFORM_VERSION)
# Crypto
TW_INCLUDE_CRYPTO := true
TW_INCLUDE_CRYPTO_FBE := true
TW_INCLUDE_FBE_METADATA_DECRYPT := true
BOARD_USES_METADATA_PARTITION := true
BOARD_USES_QCOM_FBE_DECRYPTION := true
# TWRP Configuration
TARGET_SUPPORTS_64_BIT_APPS := true
TW_THEME := portrait_hdpi
TW_EXTRA_LANGUAGES := true
TW_INPUT_BLACKLIST := "hbtp_vm"
TW_INCLUDE_REPACKTOOLS := true
TW_INCLUDE_RESETPROP := true
TW_INCLUDE_LIBRESETPROP := true
TW_INCLUDE_NTFS_3G := true
TW_BACKUP_EXCLUSIONS := /data/fonts
TW_NO_SCREEN_BLANK := true
TW_SCREEN_BLANK_ON_BOOT := true
TW_MAX_BRIGHTNESS := 3515
TW_DEFAULT_BRIGHTNESS := 1024
TW_FRAMERATE := 60
TW_HAS_EDL_MODE := true
TW_INCLUDE_FASTBOOTD := true
TW_CUSTOM_CPU_TEMP_PATH := /sys/class/thermal/thermal_zone39/temp
TW_EXCLUDE_DEFAULT_USB_INIT := false
TARGET_USE_CUSTOM_LUN_FILE_PATH := /config/usb_gadget/g1/functions/mass_storage.0/lun.%d/file
TW_SUPPORT_INPUT_AIDL_HAPTICS := true
TW_SUPPORT_INPUT_AIDL_HAPTICS_FIX_OFF := true
TW_EXCLUDE_APEX := true
TW_FORCE_KEYMASTER_VER := false
TW_NO_SCREEN_TIMEOUT := true
# Excludes
TW_USE_SERIALNO_PROPERTY_FOR_DEVICE_ID := true
# OrangeFox Variables
OF_AB_DEVICE_WITH_RECOVERY_PARTITION := true
OF_FLASHLIGHT_ENABLE := true
OF_HIDE_NOTCH := true
OF_PATCH_AVB20 := true
OF_USE_LOCKSCREEN_BUTTON := true
FOX_ENABLE_APP_MANAGER := true
OF_FORCE_PREBUILT_KERNEL := true
OF_DEFAULT_KEYMASTER_VERSION := 4.1
OF_DISABLE_MIUI_SPECIFIC_FEATURES := true
OF_DONT_PATCH_ENCRYPTED_DEVICE := true
FOX_USE_BASH_SHELL := true
FOX_ASH_IS_BASH := true
FOX_USE_TAR_BINARY := true
FOX_USE_SED_BINARY := true
FOX_USE_XZ_UTILS := true
FOX_USE_LZ4_UTILS := true
OF_KEEP_DM_VERITY := true
OF_RUN_POST_FORMAT_PROCESS := true
OF_SUPPORT_ALL_BLOCK_OTA_UPDATES := true
OF_USE_GREEN_LED := true
OF_NO_TREBLE_COMPATIBILITY_CHECK := true
OF_STATUS_INDENT_LEFT := 64
OF_STATUS_INDENT_RIGHT := 64
OF_ADVANCED_SECURITY := true
FOX_VERSION := S12.1
FOX_DELETE_AROMAFM := true
FOX_RECOVERY_VENDOR_PARTITION := /dev/block/mapper/vendor
FOX_RECOVERY_SYSTEM_PARTITION := /dev/block/mapper/system
TW_OVERRIDE_SYSTEM_PROPS := "ro.build.fingerprint=ro.system.build.fingerprint;ro.build.version.incremental"
TW_NO_USB_STORAGE := false
RECOVERY_SDCARD_ON_DATA := false
TW_INCLUDE_FASTBOOTD := true
TW_INCLUDE_PYTHON := true
TARGET_USES_MKE2FS := true
# Magisk Specific Build Flags
OF_USE_LATEST_MAGISK := true
OF_USE_MAGISKBOOT_FOR_ALL_PATCHES := true
OF_USE_MAGISKBOOT := true
# TWRP Debug Flags
TARGET_USES_LOGD := true
TWRP_EVENT_LOGGING := false
TWRP_INCLUDE_LOGCAT := true
TARGET_RECOVERY_DEVICE_MODULES += debuggerd
TW_RECOVERY_ADDITIONAL_RELINK_FILES += $(TARGET_OUT_EXECUTABLES)/debuggerd
BOARD_RAMDISK_USE_LZMA := true
BUILD_BROKEN_MISSING_REQUIRED_MODULES := true

54
README.md Normal file
View file

@ -0,0 +1,54 @@
Device configuration for Moto G Stylus 5G (2023) (codenamed "genevn")
=========================================
The Motorola Moto G Stylus 5G (2023) (codenamed _"genevn"_) is a mid-range smartphone from Motorola Mobility announced in May 2023.
## Device specifications
Basic | Spec Sheet
-------:|:-------------------------
SoC | Qualcomm SM6450 Snapdragon 6 Gen 1 (4 nm)
CPU | Octa-core (4x2.20 GHz Cortex-A78 & 4x1.8GHz Cortex-A55)
GPU | Adreno 710
Memory | 6 GB RAM (LPDDR4X)
Shipped Android Version | 13.0, My UX 3.0 (Global)
Storage | 128 GB | 256 GB (UFS 3.1)
Battery | Non-removable Li-Po 5000 mAh battery
Display | LTPS, 120 Hz, 2400 x 1080 pixels, 6.67 inches (~403 ppi density)
Camera | 50MP (Wide) + 8MP (Ultra-wide) + 16MP (Selfie)
## Device picture
![Motorola Moto G Stylus 5G (2023)](https://fdn2.gsmarena.com/vv/pics/motorola/motorola-moto-g-stylus-5g-2023-1.jpg)
# Status
Current state of features:
- [x] Correct screen/recovery size
- [x] Working touch, display
- [x] Screen goes off and on
- [x] Backup/restore to/from internal/external storage and adb
- [x] Poweroff
- [x] Reboot to system, bootloader, recovery, fastboot, edl
- [x] ADB (including sideload)
- [x] Support EROFS/F2FS/EXT4/exFAT/FAT32/NTFS
- [x] Decrypt /data
- [x] Flashing zip/images
- [x] MTP export
- [x] All important partitions listed in wipe/mount/backup lists
- [x] Input devices via USB-OTG
- [x] USB mass storage export
- [x] Correct date
- [x] Battery level
- [x] Set brightness
- [x] Vibrate and set vibration
- [x] Screenshot
- [x] Advanced features
# Building
```bash
export ALLOW_MISSING_DEPENDENCIES=true
source build/envsetup.sh
lunch twrp_genevn-eng
mka recoveryimage -j$(nproc --all)
```
**Copyright (C) 2023 Team Win Recovery Project**

125
device.mk Normal file
View file

@ -0,0 +1,125 @@
#
# Copyright (C) 2023 The Android Open Source Project
# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
#
# SPDX-License-Identifier: Apache-2.0
#
# Soong namespaces
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
# API
BOARD_SHIPPING_API_LEVEL := 31
BOARD_API_LEVEL := 31
PRODUCT_SHIPPING_API_LEVEL := 31
SHIPPING_API_LEVEL := 31
# A/B
AB_OTA_POSTINSTALL_CONFIG += \
RUN_POSTINSTALL_system=true \
POSTINSTALL_PATH_system=system/bin/otapreopt_script \
FILESYSTEM_TYPE_system=ext4 \
POSTINSTALL_OPTIONAL_system=true
AB_OTA_POSTINSTALL_CONFIG += \
RUN_POSTINSTALL_vendor=true \
POSTINSTALL_PATH_vendor=bin/checkpoint_gc \
FILESYSTEM_TYPE_vendor=ext4 \
POSTINSTALL_OPTIONAL_vendor=true
# Boot control HAL
PRODUCT_PACKAGES += \
android.hardware.boot@1.2-impl-qti \
android.hardware.boot@1.2-impl-qti.recovery \
android.hardware.boot@1.2-service
PRODUCT_PACKAGES_DEBUG += \
bootctl
PRODUCT_PACKAGES += \
otapreopt_script \
checkpoint_gc \
update_engine \
update_engine_client \
update_verifier \
update_engine_sideload
# Crypto
PRODUCT_PACKAGES += \
qcom_decrypt \
qcom_decrypt_fbe
# Dynamic partitions
PRODUCT_USE_DYNAMIC_PARTITIONS := true
# F2FS utilities
PRODUCT_PACKAGES += \
sg_write_buffer \
f2fs_io \
check_f2fs \
mtpfs
# Fastbootd
PRODUCT_PACKAGES += \
fastbootd \
android.hardware.fastboot@1.1-impl-mock
# FUSE
PRODUCT_PRODUCT_PROPERTIES += \
persist.sys.fuse.passthrough.enable=true
# Host Adb
PRODUCT_HOST_PACKAGES += \
adbd \
mtpd
# HACK: Set vendor patch level
PRODUCT_PROPERTY_OVERRIDES += \
ro.bootimage.build.date.utc=0 \
ro.build.date.utc=0
# OEM otacert
PRODUCT_EXTRA_RECOVERY_KEYS += \
$(LOCAL_PATH)/security/ota
# Take a few libraries from sources
TARGET_RECOVERY_DEVICE_MODULES += \
android.hardware.vibrator-V2-ndk_platform.so \
android.hidl.allocator@1.0 \
android.hidl.memory@1.0 \
android.hidl.memory.token@1.0 \
libdmabufheap \
libhidlmemory \
libion \
libnetutils \
libxml2 \
vendor.display.config@1.0 \
vendor.display.config@2.0 \
libdisplayconfig.qti
RECOVERY_LIBRARY_SOURCE_FILES += \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator-V2-ndk_platform.so \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.allocator@1.0.so \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.memory@1.0.so \
$(TARGET_OUT_SHARED_LIBRARIES)/android.hidl.memory.token@1.0.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libdmabufheap.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libhidlmemory.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libion.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libnetutils.so \
$(TARGET_OUT_SHARED_LIBRARIES)/libxml2.so \
$(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.0.so \
$(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@2.0.so \
$(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/libdisplayconfig.qti.so
# TZDATA
PRODUCT_PACKAGES += \
tzdata_twrp
# Virtual ab device
PRODUCT_PROPERTY_OVERRIDES += \
ro.virtual_ab.enabled=true
# Namespace definition for librecovery_updater
SOONG_CONFIG_NAMESPACES += ufsbsg
SOONG_CONFIG_ufsbsg += ufsframework
SOONG_CONFIG_ufsbsg_ufsframework := bsg

32
system.prop Normal file
View file

@ -0,0 +1,32 @@
# Product informations
ro.product.board=parrot
ro.board.platform=parrot
# ADB
ro.adb.secure=0
# Battery Property
ro.charger.enable_suspend=1
# Crypto
ro.crypto.allow_encrypt_override=true
vendor.gatekeeper.disable_spu=true
fbe.metadata.wrappedkey=true
ro.crypto.volume.filenames_mode=aes-256-cts
ro.vendor.qti.va_aosp.support=1
ro.crypto.volume.metadata.method=dm-default-key
# MTP
vendor.usb.use_ffs_mtp=1
# PASSTHROUGH
persist.sys.isUsbOtgEnabled=true
sys.usb.controller=a600000.dwc3
# Storage
external_storage.projid.enabled=1
external_storage.casefold.enabled=1
external_storage.sdcardfs.enabled=0
# Virtual AB device
ro.virtual_ab.enabled=true

35
twrp_genevn.mk Normal file
View file

@ -0,0 +1,35 @@
#
# Copyright (C) 2023 The Android Open Source Project
# Copyright (C) 2023 SebaUbuntu's TWRP device tree generator
#
# SPDX-License-Identifier: Apache-2.0
#
# Inherit from those products. Most specific first.
$(call inherit-product, $(SRC_TARGET_DIR)/product/base.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_keys.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk)
# Inherit some common TWRP stuff.
$(call inherit-product, vendor/twrp/config/common.mk)
# Inherit from genevn device
$(call inherit-product, device/motorola/genevn/device.mk)
PRODUCT_DEVICE := genevn
PRODUCT_NAME := twrp_genevn
PRODUCT_BRAND := motorola
PRODUCT_MODEL := motorola moto g stylus 5g (2023)
PRODUCT_MANUFACTURER := motorola
PRODUCT_GMS_CLIENTID_BASE := android-motorola
PRODUCT_BUILD_PROP_OVERRIDES += \
TARGET_PRODUCT=genevn \
PRIVATE_BUILD_DESC="genevn-user 12 T1TGN33.60-114 7117f-b6786 release-keys"
BUILD_FINGERPRINT := motorola/genevn/genevn:12/T1TGN33.60-114/7117f-b6786:user/release-keys

23
vendorsetup.sh Normal file
View file

@ -0,0 +1,23 @@
export DEVICE_PATH=device/motorola/genevn
export INCLUDE_PATH=$DEVICE_PATH/include
export OF_MAINTAINER_AVATAR=$("ls" ~/avatar/sosRR.png)
export OF_MAINTAINER=sosRR
export FOX_BUILD_TYPE="Stable"
# run a process after formatting data to work-around MTP issues
export OF_RUN_POST_FORMAT_PROCESS=1
export OF_FBE_METADATA_MOUNT_IGNORE=1
export OF_ENABLE_LPTOOLS=1
export OF_UNBIND_SDCARD_F2FS=1
export OF_KEEP_DM_VERITY=1
export OF_SUPPORT_ALL_BLOCK_OTA_UPDATES=1
export OF_FIX_OTA_UPDATE_MANUAL_FLASH_ERROR=1
export OF_SUPPORT_ALL_PAYLOAD_OTA_UPDATES=1
#
export OF_ENABLE_USB_STORAGE=1
export FOX_USE_TWRP_RECOVERY_IMAGE_BUILDER=1
export OF_NO_TREBLE_COMPATIBILITY_CHECK=1
export OF_SUPPORT_OZIP_DECRYPTION=1
export TW_OZIP_DECRYPT_KEY="0000"
# export FOX_USE_SPECIFIC_MAGISK_ZIP="~/magisk/Magisk-v26.4.zip"
export FOX_USE_SPECIFIC_MAGISK_ZIP=$("ls" ~/Magisk/Magisk-v26.4.zip)
export OF_USE_LATEST_MAGISK=1