Fix bootloop caused by multiple reasons
This commit is contained in:
parent
c3b13354c4
commit
ad202b870d
|
|
@ -1,9 +1,44 @@
|
|||
#!/system/bin/sh
|
||||
MODDIR=${0%/*}
|
||||
RIRU_PATH="/data/misc/riru"
|
||||
TARGET="${RIRU_PATH}/modules/edxp"
|
||||
EDXP_VERSION=$(grep_prop version ${MODDIR}/module.prop)
|
||||
ANDROID_SDK=$(getprop ro.build.version.sdk)
|
||||
BUILD_DESC=$(getprop ro.build.description)
|
||||
PRODUCT=$(getprop ro.build.product)
|
||||
MODEL=$(getprop ro.product.model)
|
||||
MANUFACTURER=$(getprop ro.product.manufacturer)
|
||||
BRAND=$(getprop ro.product.brand)
|
||||
FINGERPRINT=$(getprop ro.build.fingerprint)
|
||||
ARCH=$(getprop ro.product.cpu.abi)
|
||||
DEVICE=$(getprop ro.product.device)
|
||||
ANDROID=$(getprop ro.build.version.release)
|
||||
BUILD=$(getprop ro.build.id)
|
||||
RIRU_VERSION=$(grep_prop version ${MODDIR}/../riru-core/module.prop)
|
||||
RIRU_VERCODE=$(grep_prop versionCode ${MODDIR}/../riru-core/module.prop)
|
||||
RIRU_APICODE=$(cat /data/misc/riru/api_version)
|
||||
MAGISK_VERSION=$(su -v)
|
||||
MAGISK_VERCODE=$(su -V)
|
||||
EDXP_MANAGER="org.meowcat.edxposed.manager"
|
||||
XP_INSTALLER="de.robv.android.xposed.installer"
|
||||
PATH_PREFIX_PROT="/data/user_de/0/"
|
||||
PATH_PREFIX_LEGACY="/data/user/0/"
|
||||
|
||||
if [[ -z "${MODDIR}/sepolicy.sh" ]]; then
|
||||
. ${MODDIR}/sepolicy.sh
|
||||
fi
|
||||
sepolicy() {
|
||||
# necessary for using mmap in system_server process
|
||||
supolicy --live "allow system_server system_server process {execmem}"
|
||||
supolicy --live "allow system_server system_server memprotect {mmap_zero}"
|
||||
|
||||
# for built-in apps // TODO maybe narrow down the target classes
|
||||
supolicy --live "allow coredomain coredomain process {execmem}"
|
||||
|
||||
# read configs set in our app
|
||||
supolicy --live "allow coredomain app_data_file * *"
|
||||
supolicy --live "attradd {system_app platform_app} mlstrustedsubject"
|
||||
|
||||
# read module apk file in zygote
|
||||
supolicy --live "allow zygote apk_data_file * *"
|
||||
}
|
||||
|
||||
grep_prop() {
|
||||
local REGEX="s/^$1=//p"
|
||||
|
|
@ -13,52 +48,29 @@ grep_prop() {
|
|||
sed -n "$REGEX" ${FILES} 2>/dev/null | head -n 1
|
||||
}
|
||||
|
||||
EDXP_VERSION=`grep_prop version ${MODDIR}/module.prop`
|
||||
ANDROID_SDK=`getprop ro.build.version.sdk`
|
||||
BUILD_DESC=`getprop ro.build.description`
|
||||
PRODUCT=`getprop ro.build.product`
|
||||
MODEL=`getprop ro.product.model`
|
||||
MANUFACTURER=`getprop ro.product.manufacturer`
|
||||
BRAND=`getprop ro.product.brand`
|
||||
FINGERPRINT=`getprop ro.build.fingerprint`
|
||||
ARCH=`getprop ro.product.cpu.abi`
|
||||
DEVICE=`getprop ro.product.device`
|
||||
ANDROID=`getprop ro.build.version.release`
|
||||
BUILD=`getprop ro.build.id`
|
||||
RIRU_VERSION=`grep_prop version ${MODDIR}/../riru-core/module.prop`
|
||||
RIRU_VERCODE=`grep_prop versionCode ${MODDIR}/../riru-core/module.prop`
|
||||
RIRU_APICODE=`cat /data/misc/riru/api_version`
|
||||
MAGISK_VERSION=`su -v`
|
||||
MAGISK_VERCODE=`su -V`
|
||||
EDXP_INSTALLER=com.solohsu.android.edxp.manager
|
||||
EDXP_MANAGER=org.meowcat.edxposed.manager
|
||||
XP_INSTALLER=de.robv.android.xposed.installer
|
||||
PATH_PREFIX_PROT=/data/user_de/0/
|
||||
PATH_PREFIX_LEGACY=/data/user/0/
|
||||
|
||||
if [[ ${ANDROID_SDK} -ge 24 ]]; then
|
||||
PATH_PREFIX=${PATH_PREFIX_PROT}
|
||||
PATH_PREFIX="${PATH_PREFIX_PROT}"
|
||||
else
|
||||
PATH_PREFIX=${PATH_PREFIX_LEGACY}
|
||||
PATH_PREFIX="${PATH_PREFIX_LEGACY}"
|
||||
fi
|
||||
|
||||
DEFAULT_BASE_PATH=${PATH_PREFIX}${EDXP_INSTALLER}
|
||||
BASE_PATH=${DEFAULT_BASE_PATH}
|
||||
DEFAULT_BASE_PATH="${PATH_PREFIX}${EDXP_MANAGER}"
|
||||
BASE_PATH="${DEFAULT_BASE_PATH}"
|
||||
|
||||
if [[ ! -d ${BASE_PATH} ]]; then
|
||||
BASE_PATH=${PATH_PREFIX}${EDXP_MANAGER}
|
||||
BASE_PATH="${PATH_PREFIX}${XP_INSTALLER}"
|
||||
if [[ ! -d ${BASE_PATH} ]]; then
|
||||
BASE_PATH=${PATH_PREFIX}${XP_INSTALLER}
|
||||
if [[ ! -d ${BASE_PATH} ]]; then
|
||||
BASE_PATH=${DEFAULT_BASE_PATH}
|
||||
fi
|
||||
BASE_PATH="${DEFAULT_BASE_PATH}"
|
||||
fi
|
||||
fi
|
||||
|
||||
LOG_PATH=${BASE_PATH}/log
|
||||
CONF_PATH=${BASE_PATH}/conf
|
||||
DISABLE_VERBOSE_LOG_FILE=${CONF_PATH}/disable_verbose_log
|
||||
LOG_PATH="${BASE_PATH}/log"
|
||||
CONF_PATH="${BASE_PATH}/conf"
|
||||
DISABLE_VERBOSE_LOG_FILE="${CONF_PATH}/disable_verbose_log"
|
||||
LOG_VERBOSE=true
|
||||
PATH_INFO=$(ls -ldZ "${BASE_PATH}")
|
||||
PATH_OWNER=$(echo "${PATH_INFO}" | awk -F " " '{print $3":"$4}')
|
||||
PATH_CONTEXT=$(echo "${PATH_INFO}" | awk -F " " '{print $5}')
|
||||
|
||||
if [[ -f ${DISABLE_VERBOSE_LOG_FILE} ]]; then
|
||||
LOG_VERBOSE=false
|
||||
|
|
@ -69,22 +81,31 @@ start_log_cather () {
|
|||
LOG_TAG_FILTERS=$2
|
||||
CLEAN_OLD=$3
|
||||
START_NEW=$4
|
||||
LOG_FILE=${LOG_PATH}/${LOG_FILE_NAME}
|
||||
LOG_FILE="${LOG_PATH}/${LOG_FILE_NAME}.log"
|
||||
PID_FILE="${LOG_PATH}/${LOG_FILE_NAME}.pid"
|
||||
mkdir -p ${LOG_PATH}
|
||||
if [[ ${CLEAN_OLD} = true ]]; then
|
||||
rm -rf ${LOG_FILE}
|
||||
rm "${LOG_FILE}.old"
|
||||
mv "${LOG_FILE}" "${LOG_FILE}.old"
|
||||
fi
|
||||
rm "${LOG_PATH}/${LOG_FILE_NAME}.pid"
|
||||
if [[ ${START_NEW} = false ]]; then
|
||||
return
|
||||
fi
|
||||
chmod
|
||||
touch ${LOG_FILE}
|
||||
chmod 777 ${LOG_FILE}
|
||||
chcon PATH_CONTEXT "${LOG_FILE}"
|
||||
chown PATH_OWNER "${LOG_FILE}"
|
||||
chmod 644 ${LOG_FILE}
|
||||
touch ${PID_FILE}
|
||||
chcon PATH_CONTEXT "${PID_FILE}"
|
||||
chown PATH_OWNER "${PID_FILE}"
|
||||
chmod 644 ${PID_FILE}
|
||||
echo "--------- beginning of head">>${LOG_FILE}
|
||||
echo "EdXposed Log">>${LOG_FILE}
|
||||
echo "Powered by Log Catcher">>${LOG_FILE}
|
||||
echo "QQ support group: 855219808">>${LOG_FILE}
|
||||
echo "Telegram support group: @Code_Of_MeowCat">>${LOG_FILE}
|
||||
echo "Telegram channel: @EdXposed">>${LOG_FILE}
|
||||
echo "--------- beginning of information">>${LOG_FILE}
|
||||
echo "Manufacturer: ${MANUFACTURER}">>${LOG_FILE}
|
||||
echo "Brand: ${BRAND}">>${LOG_FILE}
|
||||
|
|
@ -103,16 +124,31 @@ start_log_cather () {
|
|||
echo "Riru api: ${RIRU_APICODE}">>${LOG_FILE}
|
||||
echo "Magisk: ${MAGISK_VERSION} (${MAGISK_VERCODE})">>${LOG_FILE}
|
||||
logcat -f ${LOG_FILE} *:S ${LOG_TAG_FILTERS} &
|
||||
LOG_PID=$!
|
||||
echo "${LOG_PID}">"${LOG_PATH}/${LOG_FILE_NAME}.pid"
|
||||
}
|
||||
|
||||
start_verbose_log_catcher () {
|
||||
start_log_cather all.log "EdXposed:V XSharedPreferences:V EdXposed-Bridge:V EdXposedManager:V XposedInstaller:V" true ${LOG_VERBOSE}
|
||||
start_log_cather all "EdXposed:V XSharedPreferences:V EdXposed-Bridge:V EdXposedManager:V XposedInstaller:V" true ${LOG_VERBOSE}
|
||||
}
|
||||
|
||||
start_bridge_log_catcher () {
|
||||
start_log_cather error.log "XSharedPreferences:V EdXposed-Bridge:V" true true
|
||||
start_log_cather error "XSharedPreferences:V EdXposed-Bridge:V" true true
|
||||
}
|
||||
|
||||
start_verbose_log_catcher
|
||||
chcon -R u:object_r:system_file:s0 "${MODDIR}"
|
||||
|
||||
# Backup app_process to avoid bootloop caused by original Xposed replacement
|
||||
rm -rf "${MODDIR}/system/bin"
|
||||
mkdir "${MODDIR}/system/bin"
|
||||
cp -f "/system/bin/app_process32" "${MODDIR}/system/bin/app_process32"
|
||||
[[ -f "/system/bin/app_process64" ]] && cp -f "/system/bin/app_process64" "${MODDIR}/system/bin/app_process64"
|
||||
|
||||
start_verbose_log_catcher
|
||||
start_bridge_log_catcher
|
||||
|
||||
[[ -d "${TARGET}" ]] || mkdir -p "${TARGET}"
|
||||
|
||||
cp "${MODDIR}/module.prop" "${TARGET}/module.prop"
|
||||
|
||||
[[ -f "${MODDIR}/sepolicy.rule" ]] || sepolicy
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#!/system/bin/sh
|
||||
|
||||
# necessary for using mmap in system_server process
|
||||
supolicy --live "allow system_server system_server process {execmem}"
|
||||
supolicy --live "allow system_server system_server memprotect {mmap_zero}"
|
||||
|
||||
# for built-in apps // TODO maybe narrow down the target classes
|
||||
supolicy --live "allow coredomain coredomain process {execmem}"
|
||||
|
||||
# read configs set in our app
|
||||
supolicy --live "allow coredomain app_data_file * *"
|
||||
supolicy --live "attradd {system_app platform_app} mlstrustedsubject"
|
||||
|
||||
# read module apk file in zygote
|
||||
supolicy --live "allow zygote apk_data_file * *"
|
||||
Loading…
Reference in New Issue