parent
3a1641cd7b
commit
4a9c30aa34
|
|
@ -165,7 +165,7 @@ afterEvaluate {
|
|||
copy {
|
||||
from "${projectDir}/template_override"
|
||||
into zipPathMagiskReleasePath
|
||||
include 'riru.sh'
|
||||
include 'util_functions.sh'
|
||||
filter { line ->
|
||||
line.replaceAll('%%%RIRU_MODULE_ID%%%', riruModuleId)
|
||||
.replaceAll('%%%RIRU_MIN_API_VERSION%%%', moduleMinRiruApiVersion.toString())
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
SKIPUNZIP=1
|
||||
|
||||
abortC() {
|
||||
rm -rf "${MODPATH}"
|
||||
abort "$1"
|
||||
}
|
||||
|
||||
getRandomNameExist() {
|
||||
RAND_PATH=$4
|
||||
RAND_SUFFIX=$3
|
||||
|
|
@ -19,6 +24,7 @@ getRandomNameExist() {
|
|||
fi
|
||||
}
|
||||
|
||||
POUNDS="*********************************************************"
|
||||
RIRU_PATH="/data/adb/riru"
|
||||
RIRU_EDXP="$(getRandomNameExist 4 "libriru_" ".so" "
|
||||
/system/lib
|
||||
|
|
@ -30,195 +36,101 @@ RIRU_TARGET="${RIRU_MODULES}/${RIRU_EDXP}"
|
|||
VERSION=$(grep_prop version "${TMPDIR}/module.prop")
|
||||
RIRU_MIN_API_VERSION=$(grep_prop api "${TMPDIR}/module.prop")
|
||||
|
||||
PROP_MODEL=$(getprop ro.product.model)
|
||||
PROP_DEVICE=$(getprop ro.product.device)
|
||||
PROP_PRODUCT=$(getprop ro.build.product)
|
||||
PROP_BRAND=$(getprop ro.product.brand)
|
||||
PROP_MANUFACTURER=$(getprop ro.product.manufacturer)
|
||||
|
||||
LIB_RIRU_EDXP="libriru_${RIRU_EDXP}.so"
|
||||
LIB_SANDHOOK_EDXP="lib$(getRandomNameExist 13 "lib" ".so" "
|
||||
/system/lib
|
||||
/system/lib64
|
||||
").so"
|
||||
|
||||
MODEL="
|
||||
HD1900
|
||||
HD1910
|
||||
"
|
||||
DEVICE="
|
||||
OnePlus7T
|
||||
OnePlus7TPro
|
||||
"
|
||||
PRODUCT="
|
||||
OnePlus7T
|
||||
OnePlus7TPro
|
||||
"
|
||||
BRAND="
|
||||
HUAWEI
|
||||
HONOR
|
||||
"
|
||||
MANUFACTURER="
|
||||
HUAWEI
|
||||
"
|
||||
### lang start ###
|
||||
# Default en_US
|
||||
# customize
|
||||
LANG_CUST_INST_VERSION="version"
|
||||
LANG_CUST_INST_EXT_FILES="Extracting module files"
|
||||
LANG_CUST_INST_EXT_LIB_X86="Extracting x86 libraries"
|
||||
LANG_CUST_INST_EXT_LIB_X64="Extracting x86_64 libraries"
|
||||
LANG_CUST_INST_EXT_LIB_ARM="Extracting arm libraries"
|
||||
LANG_CUST_INST_EXT_LIB_ARM64="Extracting arm64 libraries"
|
||||
LANG_CUST_INST_STUB="Installing stub manager"
|
||||
LANG_CUST_INST_CONF_CREATE="Creating configuration directories"
|
||||
LANG_CUST_INST_CONF_OLD="Use previous path"
|
||||
LANG_CUST_INST_CONF_NEW="Use new path"
|
||||
LANG_CUST_INST_COPY_LIB="Copying framework libraries"
|
||||
LANG_CUST_INST_RAND_LIB_1="Resetting libraries path"
|
||||
LANG_CUST_INST_RAND_LIB_2="It may take a long time, please be patient"
|
||||
LANG_CUST_INST_RAND_LIB_3="Processing 32 bit libraries"
|
||||
LANG_CUST_INST_RAND_LIB_4="Processing 64 bit libraries"
|
||||
LANG_CUST_INST_REM_OLDCONF="Removing old configuration"
|
||||
LANG_CUST_INST_COPT_EXTRA="Copying extra files"
|
||||
LANG_CUST_INST_DONE="Welcome to"
|
||||
|
||||
OLD_MAGISK=false
|
||||
DETECTED_DEVICE=false
|
||||
#NO_PERSIST=false
|
||||
[[ "$(getenforce)" == "Enforcing" ]] && ENFORCE=true || ENFORCE=false
|
||||
LANG_CUST_ERR_VERIFY_FAIL_1="Unable to extract verify tool!"
|
||||
LANG_CUST_ERR_VERIFY_FAIL_2="This zip may be corrupted, please try downloading again"
|
||||
LANG_CUST_ERR_STUB="Stub install failed! Do not forget install EdXposed Manager manually"
|
||||
LANG_CUST_ERR_PERM="Can't set permission"
|
||||
LANG_CUST_ERR_CONF_CREATE="Can't create configuration path"
|
||||
LANG_CUST_ERR_CONF_STORE="Can't store configuration path"
|
||||
LANG_CUST_ERR_CONF_FIRST="Can't create first install flag"
|
||||
LANG_CUST_ERR_CONF_UNINST="Can't write uninstall script"
|
||||
LANG_CUST_ERR_EXTRA_CREATE="Can't create"
|
||||
|
||||
abortC() {
|
||||
rm -rf "${MODPATH}"
|
||||
abort "$1"
|
||||
}
|
||||
# verify
|
||||
LANG_VERIFY_SUCCESS="Verified"
|
||||
|
||||
require_new_magisk() {
|
||||
# if [[ "${NO_PERSIST}" == true ]]; then
|
||||
# ui_print "******************************"
|
||||
# ui_print "! Special device detected"
|
||||
# ui_print "! But persist is not found in your device, SEPolicy rules will not take effect correctly"
|
||||
# ui_print "! Deprecated custom Magisk v20.1 is required"
|
||||
# ui_print "! Change Magisk update channel to http://edxp.meowcat.org/repo/version.json"
|
||||
# ui_print "! And re-install Magisk"
|
||||
# abortC "******************************"
|
||||
# else
|
||||
ui_print "******************************"
|
||||
ui_print "! Special device detected"
|
||||
ui_print "! Magisk v20.2+ or custom Magisk v20.1(Deprecated) is required"
|
||||
ui_print "! You can update from 'Magisk Manager' or https://github.com/topjohnwu/Magisk/releases"
|
||||
abortC "******************************"
|
||||
# fi
|
||||
}
|
||||
LANG_VERIFY_ERR_MISMATCH="Failed to verify"
|
||||
LANG_VERIFY_ERR_NOT_EXIST="not exists"
|
||||
LANG_VERIFY_ERR_NOTICE="This zip may be corrupted, please try downloading again"
|
||||
|
||||
update_new_magisk() {
|
||||
ui_print "******************************"
|
||||
ui_print "- Deprecated custom Magisk v20.1 detected"
|
||||
ui_print "- We will still keep the rule file for you"
|
||||
ui_print "- You can update to the latest Magisk directly from official update channel"
|
||||
ui_print "******************************"
|
||||
}
|
||||
# util_functions
|
||||
LANG_UTIL_PLATFORM="Device platform"
|
||||
|
||||
require_yahfa() {
|
||||
ui_print "******************************"
|
||||
ui_print "! Architecture x86 or x86_64 detected"
|
||||
ui_print "! Only YAHFA variant supports x86 or x86_64 architecture devices"
|
||||
ui_print "! You can download from 'Magisk Manager' or 'EdXposed Manager'"
|
||||
abortC "******************************"
|
||||
}
|
||||
LANG_UTIL_ERR_RIRU_NOT_FOUND_1="is not installed"
|
||||
LANG_UTIL_ERR_RIRU_NOT_FOUND_2="Please install Riru from Magisk Manager"
|
||||
LANG_UTIL_ERR_RIRU_LOW_1="or above is required"
|
||||
LANG_UTIL_ERR_RIRU_LOW_2="Please upgrade Riru from Magisk Manager"
|
||||
LANG_UTIL_ERR_REQUIRE_YAHFA_1="Architecture x86 or x86_64 detected"
|
||||
LANG_UTIL_ERR_REQUIRE_YAHFA_2="Only YAHFA variant supports x86 or x86_64 architecture devices"
|
||||
LANG_UTIL_ERR_REQUIRE_YAHFA_3="You can download from 'Magisk Manager' or 'EdXposed Manager'"
|
||||
LANG_UTIL_ERR_ANDROID_UNSUPPORT_1="Unsupported Android version"
|
||||
LANG_UTIL_ERR_ANDROID_UNSUPPORT_2="(below Oreo)"
|
||||
LANG_UTIL_ERR_ANDROID_UNSUPPORT_3="Learn more from our GitHub Wiki"
|
||||
LANG_UTIL_ERR_PLATFORM_UNSUPPORT="Unsupported platform"
|
||||
|
||||
require_new_android() {
|
||||
ui_print "******************************"
|
||||
ui_print "! Old Android ${1} (below Oreo) detected"
|
||||
ui_print "! Only the original Xposed Framework can be used under Android 8.0"
|
||||
ui_print "! You can download from 'Xposed Installer' or 'Magisk Manager(Systemless-ly)'"
|
||||
ui_print "! Learn more: https://github.com/ElderDrivers/EdXposed/wiki/Available-Android-versions"
|
||||
abortC "******************************"
|
||||
}
|
||||
# Load lang
|
||||
if [[ ${BOOTMODE} == true ]]; then
|
||||
locale=$(getprop persist.sys.locale|awk -F "-" '{print $1"_"$NF}')
|
||||
[[ ${locale} == "" ]] && locale=$(settings get system system_locales|awk -F "," '{print $1}'|awk -F "-" '{print $1"_"$NF}')
|
||||
file=${locale}.sh
|
||||
unzip -o "$ZIPFILE" "${file}" -d "$TMPDIR" >&2
|
||||
unzip -o "$ZIPFILE" "${file}.s" -d "$TMPDIR" >&2
|
||||
(echo "$(cat "${TMPDIR}/${file}.s") ${TMPDIR}/${file}" | sha256sum -c -s -) && . "${TMPDIR}/${file}"
|
||||
fi
|
||||
### lang end ###
|
||||
|
||||
check_old_magisk_device() {
|
||||
OLD_MAGISK=true
|
||||
ui_print "******************************"
|
||||
ui_print "- Old Magisk ${1} (below v20.2) detected"
|
||||
ui_print "- The old Magisk may cause some problems (it may be fixed in new version)"
|
||||
ui_print "- And support may be cancelled in subsequent versions"
|
||||
ui_print "- In any case, you should update to the latest version in time"
|
||||
ui_print "******************************"
|
||||
if [[ "${DETECTED_DEVICE}" == true ]]; then
|
||||
require_new_magisk
|
||||
fi
|
||||
}
|
||||
|
||||
check_magisk_version() {
|
||||
for TARGET in ${MODEL}; do
|
||||
if [[ "${PROP_MODEL}" == "${TARGET}" ]]; then
|
||||
DETECTED_DEVICE=true
|
||||
fi
|
||||
done
|
||||
for TARGET in ${DEVICE}; do
|
||||
if [[ "${PROP_DEVICE}" == "${TARGET}" ]]; then
|
||||
DETECTED_DEVICE=true
|
||||
fi
|
||||
done
|
||||
for TARGET in ${PRODUCT}; do
|
||||
if [[ "${PROP_PRODUCT}" == "${TARGET}" ]]; then
|
||||
DETECTED_DEVICE=true
|
||||
fi
|
||||
done
|
||||
for TARGET in ${BRAND}; do
|
||||
if [[ "${PROP_BRAND}" == "${TARGET}" ]]; then
|
||||
DETECTED_DEVICE=true
|
||||
fi
|
||||
done
|
||||
for TARGET in ${MANUFACTURER}; do
|
||||
if [[ "${PROP_MANUFACTURER}" == "${TARGET}" ]]; then
|
||||
DETECTED_DEVICE=true
|
||||
fi
|
||||
done
|
||||
if [[ "${DETECTED_DEVICE}" == true ]]; then
|
||||
ui_print "- Special device detected"
|
||||
fi
|
||||
ui_print "- Magisk version: ${MAGISK_VER_CODE}"
|
||||
[[ ${MAGISK_VER_CODE} -ge 20101 ]] || check_old_magisk_device "${MAGISK_VER_CODE}"
|
||||
[[ ${MAGISK_VER_CODE} -eq 20101 ]] && update_new_magisk
|
||||
}
|
||||
|
||||
edxp_check_architecture() {
|
||||
if [[ "${MODID}" == "riru_edxposed_sandhook" ]]; then
|
||||
VARIANTS="SandHook"
|
||||
else
|
||||
VARIANTS="YAHFA"
|
||||
fi
|
||||
ui_print "- EdXposed Variant: ${VARIANTS}"
|
||||
if [[ "${ARCH}" != "arm" && "${ARCH}" != "arm64" && "${ARCH}" != "x86" && "${ARCH}" != "x64" ]]; then
|
||||
abortC "! Unsupported platform: ${ARCH}"
|
||||
else
|
||||
ui_print "- Device platform: ${ARCH}"
|
||||
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
|
||||
if [[ "${VARIANTS}" == "SandHook" ]]; then
|
||||
require_yahfa
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
check_android_version() {
|
||||
if [[ ${API} -ge 26 ]]; then
|
||||
ui_print "- Android sdk: ${API}"
|
||||
else
|
||||
require_new_android "${API}"
|
||||
fi
|
||||
}
|
||||
|
||||
#check_persist() {
|
||||
# if [[ "$(cat /proc/mounts | grep /sbin/.magisk/mirror/persist)" == "" ]]; then
|
||||
# NO_PERSIST=true
|
||||
# fi
|
||||
#}
|
||||
|
||||
ui_print "- EdXposed Version ${VERSION}"
|
||||
ui_print "- EdXposed ${LANG_CUST_INST_VERSION} ${VERSION}"
|
||||
|
||||
# extract verify.sh
|
||||
ui_print "- Extracting verify.sh"
|
||||
unzip -o "$ZIPFILE" 'verify.sh' -d "$TMPDIR" >&2
|
||||
if [ ! -f "$TMPDIR/verify.sh" ]; then
|
||||
ui_print "*********************************************************"
|
||||
ui_print "! Unable to extract verify.sh!"
|
||||
ui_print "! This zip may be corrupted, please try downloading again"
|
||||
abort "*********************************************************"
|
||||
ui_print "${POUNDS}"
|
||||
ui_print "! ${LANG_CUST_ERR_VERIFY_FAIL}"
|
||||
ui_print "! ${LANG_VERIFY_ERR_NOTICE}"
|
||||
abortC "${POUNDS}"
|
||||
fi
|
||||
. $TMPDIR/verify.sh
|
||||
|
||||
# extract riru.sh
|
||||
extract "$ZIPFILE" riru.sh "$MODPATH"
|
||||
. $MODPATH/riru.sh
|
||||
extract "$ZIPFILE" 'customize.sh' "${TMPDIR}"
|
||||
extract "$ZIPFILE" 'util_functions.sh' "${TMPDIR}"
|
||||
. ${TMPDIR}/util_functions.sh
|
||||
|
||||
#check_persist
|
||||
check_android_version
|
||||
check_magisk_version
|
||||
check_riru_version
|
||||
edxp_check_architecture
|
||||
|
||||
ui_print "- Extracting module files"
|
||||
ui_print "- ${LANG_CUST_INST_EXT_FILES}"
|
||||
|
||||
# extract module files
|
||||
extract "${ZIPFILE}" 'EdXposed.apk' "${MODPATH}"
|
||||
extract "${ZIPFILE}" 'module.prop' "${MODPATH}"
|
||||
extract "${ZIPFILE}" 'system.prop' "${MODPATH}"
|
||||
|
|
@ -233,75 +145,75 @@ extract "${ZIPFILE}" 'system/framework/edservice.dex' "${MODPATH}"
|
|||
extract "${ZIPFILE}" 'system/framework/edxp.dex' "${MODPATH}"
|
||||
|
||||
if [ "$ARCH" = "x86" ] || [ "$ARCH" = "x64" ]; then
|
||||
ui_print "- Extracting x86 libraries"
|
||||
extract "$ZIPFILE" 'system_x86/lib/libriru_edxp.so' "$MODPATH"
|
||||
mv "$MODPATH/system_x86/lib" "$MODPATH/system/lib"
|
||||
ui_print "- ${LANG_CUST_INST_EXT_LIB_X86}"
|
||||
extract "$ZIPFILE" 'system_x86/lib/libriru_edxp.so' "${MODPATH}"
|
||||
mv "${MODPATH}/system_x86/lib" "${MODPATH}/system/lib"
|
||||
|
||||
if [ "$IS64BIT" = true ]; then
|
||||
ui_print "- Extracting x64 libraries"
|
||||
extract "$ZIPFILE" 'system_x86/lib64/libriru_edxp.so' "$MODPATH"
|
||||
mv "$MODPATH/system_x86/lib64" "$MODPATH/system/lib64"
|
||||
ui_print "- ${LANG_CUST_INST_EXT_LIB_X64}"
|
||||
extract "$ZIPFILE" 'system_x86/lib64/libriru_edxp.so' "${MODPATH}"
|
||||
mv "${MODPATH}/system_x86/lib64" "${MODPATH}/system/lib64"
|
||||
fi
|
||||
else
|
||||
ui_print "- Extracting arm libraries"
|
||||
extract "$ZIPFILE" 'system/lib/libriru_edxp.so' "$MODPATH"
|
||||
ui_print "- ${LANG_CUST_INST_EXT_LIB_ARM}"
|
||||
extract "$ZIPFILE" 'system/lib/libriru_edxp.so' "${MODPATH}"
|
||||
if [[ "${VARIANTS}" == "SandHook" ]]; then
|
||||
extract "$ZIPFILE" 'system/lib/libsandhook.edxp.so' "$MODPATH"
|
||||
extract "$ZIPFILE" 'system/lib/libsandhook.edxp.so' "${MODPATH}"
|
||||
fi
|
||||
|
||||
if [ "$IS64BIT" = true ]; then
|
||||
ui_print "- Extracting arm64 libraries"
|
||||
extract "$ZIPFILE" 'system/lib64/libriru_edxp.so' "$MODPATH"
|
||||
ui_print "- ${LANG_CUST_INST_EXT_LIB_ARM64}"
|
||||
extract "$ZIPFILE" 'system/lib64/libriru_edxp.so' "${MODPATH}"
|
||||
if [[ "${VARIANTS}" == "SandHook" ]]; then
|
||||
extract "$ZIPFILE" 'system/lib64/libsandhook.edxp.so' "$MODPATH"
|
||||
extract "$ZIPFILE" 'system/lib64/libsandhook.edxp.so' "${MODPATH}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$(pm path org.meowcat.edxposed.manager)" == "" && "$(pm path de.robv.android.xposed.installer)" == "" ]]; then
|
||||
NO_MANAGER=true
|
||||
if [[ ${BOOTMODE} == true ]]; then
|
||||
[[ "$(pm path org.meowcat.edxposed.manager)" == "" && "$(pm path de.robv.android.xposed.installer)" == "" ]] && NO_MANAGER=true
|
||||
fi
|
||||
|
||||
if [[ ${BOOTMODE} == true && ${NO_MANAGER} == true ]]; then
|
||||
ui_print "- Installing stub apk"
|
||||
${ENFORCE} && setenforce 0
|
||||
(pm install "${MODPATH}/EdXposed.apk" >/dev/null 2>&2) || ui_print " - Stub install failed! Do not forget install EdXposed Manager manually"
|
||||
${ENFORCE} && setenforce 1
|
||||
ui_print "- ${LANG_CUST_INST_STUB}"
|
||||
cp "${MODPATH}/EdXposed.apk" "/data/local/tmp/EdXposed.apk"
|
||||
LOCAL_PATH_INFO=$(ls -ldZ "/data/local/tmp")
|
||||
LOCAL_PATH_OWNER=$(echo "${LOCAL_PATH_INFO}" | awk -F " " '{print $3":"$4}')
|
||||
LOCAL_PATH_CONTEXT=$(echo "${LOCAL_PATH_INFO}" | awk -F " " '{print $5}')
|
||||
chcon ${LOCAL_PATH_CONTEXT} "/data/local/tmp/EdXposed.apk"
|
||||
chown ${LOCAL_PATH_OWNER} "/data/local/tmp/EdXposed.apk"
|
||||
(pm install "/data/local/tmp/EdXposed.apk" >/dev/null 2>&2) || ui_print " ! ${LANG_CUST_ERR_STUB}"
|
||||
rm -f "/data/local/tmp/EdXposed.apk"
|
||||
fi
|
||||
|
||||
if [[ "${OLD_MAGISK}" == true ]]; then
|
||||
ui_print "- Removing SEPolicy rule for old Magisk"
|
||||
rm "${MODPATH}"/sepolicy.rule
|
||||
fi
|
||||
|
||||
ui_print "- Creating configuration directories"
|
||||
ui_print "- ${LANG_CUST_INST_CONF_CREATE}"
|
||||
if [[ -f /data/adb/edxp/misc_path ]]; then
|
||||
MISC_PATH=$(cat /data/adb/edxp/misc_path)
|
||||
ui_print "- Use previous path $MISC_PATH"
|
||||
ui_print " - ${LANG_CUST_INST_CONF_OLD} $MISC_PATH"
|
||||
else
|
||||
MISC_PATH="edxp_$(tr -cd 'A-Za-z0-9' < /dev/urandom | head -c16)"
|
||||
ui_print "- Use new path $MISC_PATH"
|
||||
mkdir -p /data/adb/edxp || abort "! Can't create adb path"
|
||||
echo "$MISC_PATH" > /data/adb/edxp/misc_path || abort "! Can't store configuration path"
|
||||
MISC_RAND=$(tr -cd 'A-Za-z0-9' < /dev/urandom | head -c16)
|
||||
MISC_PATH="edxp_${MISC_RAND}"
|
||||
ui_print " - ${LANG_CUST_INST_CONF_NEW} ${MISC_RAND}"
|
||||
mkdir -p /data/adb/edxp || abortC "! ${LANG_CUST_ERR_CONF_CREATE}"
|
||||
echo "$MISC_PATH" > /data/adb/edxp/misc_path || abortC "! ${LANG_CUST_ERR_CONF_STORE}"
|
||||
if [[ -d /data/user_de/0/org.meowcat.edxposed.manager/conf/ ]]; then
|
||||
mkdir -p /data/misc/$MISC_PATH/0/conf
|
||||
cp -r /data/user_de/0/org.meowcat.edxposed.manager/conf/* /data/misc/$MISC_PATH/0/conf/
|
||||
set_perm_recursive /data/misc/$MISC_PATH root root 0771 0660 "u:object_r:magisk_file:s0" || abort "! Can't set permission"
|
||||
set_perm_recursive /data/misc/$MISC_PATH root root 0771 0660 "u:object_r:magisk_file:s0" || abortC "! ${LANG_CUST_ERR_PERM}"
|
||||
fi
|
||||
fi
|
||||
touch /data/adb/edxp/new_install || abort "! Can't touch new install"
|
||||
set_perm_recursive /data/adb/edxp root root 0700 0600 "u:object_r:magisk_file:s0" || abort "! Can't set permission"
|
||||
mkdir -p /data/misc/$MISC_PATH || abort "! Can't create configuration path"
|
||||
set_perm /data/misc/$MISC_PATH root root 0771 "u:object_r:magisk_file:s0" || abort "! Can't set permission"
|
||||
echo "rm -rf /data/misc/$MISC_PATH" >> "$MODPATH/uninstall.sh" || abort "! Can't write uninstall.sh"
|
||||
echo "[[ -f /data/adb/edxp/new_install ]] || rm -rf /data/adb/edxp" >> "$MODPATH/uninstall.sh" || abort "! Can't write uninstall.sh"
|
||||
touch /data/adb/edxp/new_install || abortC "! ${LANG_CUST_ERR_CONF_FIRST}"
|
||||
set_perm_recursive /data/adb/edxp root root 0700 0600 "u:object_r:magisk_file:s0" || abortC "! ${LANG_CUST_ERR_PERM}"
|
||||
mkdir -p /data/misc/$MISC_PATH || abortC "! ${LANG_CUST_ERR_CONF_CREATE}"
|
||||
set_perm /data/misc/$MISC_PATH root root 0771 "u:object_r:magisk_file:s0" || abortC "! ${LANG_CUST_ERR_PERM}"
|
||||
echo "rm -rf /data/misc/$MISC_PATH" >> "${MODPATH}/uninstall.sh" || abortC "! ${LANG_CUST_ERR_CONF_UNINST}"
|
||||
echo "[[ -f /data/adb/edxp/new_install ]] || rm -rf /data/adb/edxp" >> "${MODPATH}/uninstall.sh" || abortC "! ${LANG_CUST_ERR_CONF_UNINST}"
|
||||
|
||||
|
||||
ui_print "- Copying framework libraries"
|
||||
ui_print "- ${LANG_CUST_INST_COPY_LIB}"
|
||||
|
||||
rm -rf "/data/misc/$MISC_PATH/framework"
|
||||
mv "${MODPATH}/system/framework" "/data/misc/$MISC_PATH/framework"
|
||||
set_perm_recursive /data/misc/$MISC_PATH/framework root root 0755 0644 "u:object_r:magisk_file:s0" || abort "! Can't set permission"
|
||||
set_perm_recursive /data/misc/$MISC_PATH/framework root root 0755 0644 "u:object_r:magisk_file:s0" || abortC "! ${LANG_CUST_ERR_PERM}"
|
||||
|
||||
mv "${MODPATH}/system/lib/libriru_edxp.so" "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
if [[ "${IS64BIT}" == true ]]; then
|
||||
|
|
@ -315,16 +227,19 @@ if [[ "${VARIANTS}" == "SandHook" ]]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
ui_print "- Resetting libraries path"
|
||||
ui_print "- ${LANG_CUST_INST_RAND_LIB_1}"
|
||||
ui_print " - ${LANG_CUST_INST_RAND_LIB_2}"
|
||||
ui_print " - ${LANG_CUST_INST_RAND_LIB_3}"
|
||||
sed -i 's:libriru_edxp.so:'"${LIB_RIRU_EDXP}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libsandhook.edxp.so:'"${LIB_SANDHOOK_EDXP}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
|
||||
ui_print " - ${LANG_CUST_INST_RAND_LIB_4}"
|
||||
if [[ "${IS64BIT}" == true ]]; then
|
||||
sed -i 's:libriru_edxp.so:'"${LIB_RIRU_EDXP}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libsandhook.edxp.so:'"${LIB_SANDHOOK_EDXP}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
fi
|
||||
|
||||
ui_print "- Removing old configuration"
|
||||
ui_print "- ${LANG_CUST_INST_REM_OLDCONF}"
|
||||
|
||||
if [[ -f "${RIRU_MODULES}/edxp.prop" ]]; then
|
||||
OLD_CONFIG=$(cat "${RIRU_MODULES}/edxp.prop")
|
||||
|
|
@ -336,32 +251,18 @@ if [[ -e "${RIRU_MODULES}/edxp" ]]; then
|
|||
fi
|
||||
|
||||
# extract Riru files
|
||||
ui_print "- Extracting Riru files"
|
||||
[ -d "$RIRU_TARGET" ] || mkdir -p "$RIRU_TARGET" || abort "! Can't create $RIRU_TARGET"
|
||||
ui_print "- ${LANG_CUST_INST_COPT_EXTRA}"
|
||||
|
||||
rm -f "$RIRU_TARGET/module.prop.new"
|
||||
extract "$ZIPFILE" 'riru/module.prop.new' "$RIRU_TARGET"
|
||||
mv "$RIRU_TARGET/riru/module.prop.new" "$RIRU_TARGET/module.prop"
|
||||
rm -rf "$RIRU_TARGET/riru/"
|
||||
set_perm "$RIRU_TARGET/module.prop" 0 0 0600 $RIRU_SECONTEXT
|
||||
|
||||
ui_print "- Copying extra files"
|
||||
|
||||
[[ -d "${RIRU_TARGET}" ]] || mkdir -p "${RIRU_TARGET}" || abort "! Can't mkdir -p ${RIRU_TARGET}"
|
||||
[[ -d "${RIRU_TARGET}" ]] || mkdir -p "${RIRU_TARGET}" || abortC "! ${LANG_CUST_ERR_EXTRA_CREATE} ${RIRU_TARGET}"
|
||||
|
||||
echo "${RIRU_EDXP}">"${RIRU_MODULES}/edxp.prop"
|
||||
|
||||
rm "${RIRU_TARGET}/module.prop"
|
||||
rm -f "${RIRU_TARGET}/module.prop"
|
||||
|
||||
cp "${MODPATH}/module.prop" "${RIRU_TARGET}/module.prop" || abort "! Can't create ${RIRU_TARGET}/module.prop"
|
||||
cp "${MODPATH}/module.prop" "${RIRU_TARGET}/module.prop" || abortC "! ${LANG_CUST_ERR_EXTRA_CREATE} ${RIRU_TARGET}/module.prop"
|
||||
|
||||
set_perm "$RIRU_TARGET/module.prop" 0 0 0600 $RIRU_SECONTEXT || abortC "! ${LANG_CUST_ERR_PERM}"
|
||||
|
||||
set_perm_recursive "${MODPATH}" 0 0 0755 0644
|
||||
ui_print "- Welcome to EdXposed ${VERSION}!"
|
||||
ui_print "- ${LANG_CUST_INST_DONE} EdXposed ${VERSION}!"
|
||||
|
||||
# before Magisk 16e4c67, sepolicy.rule is copied on the second reboot
|
||||
if [ "$MAGISK_VER_CODE" -lt 21006 ]; then
|
||||
ui_print "*******************************"
|
||||
ui_print "- Magisk version below 21006."
|
||||
ui_print "- You have to manually reboot twice."
|
||||
ui_print "*******************************"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ MODDIR=${0%/*}
|
|||
RIRU_PATH="/data/adb/riru"
|
||||
RIRU_PROP="$(magisk --path)/.magisk/modules/riru-core/module.prop"
|
||||
TARGET="${RIRU_PATH}/modules"
|
||||
[[ "$(getenforce)" == "Enforcing" ]] && ENFORCE=true || ENFORCE=false
|
||||
|
||||
EDXP_VERSION=$(grep_prop version "${MODDIR}/module.prop")
|
||||
EDXP_APICODE=$(grep_prop api "${MODDIR}/module.prop")
|
||||
|
|
@ -42,7 +41,7 @@ MAGISK_VERCODE=$(magisk -V)
|
|||
#PATH_PREFIX="/data/user_de/0/"
|
||||
#PATH_PREFIX_LEGACY="/data/user/0/"
|
||||
|
||||
sepolicy() {
|
||||
livePatch() {
|
||||
# Should be deprecated now. This is for debug only.
|
||||
supolicy --live "allow system_server system_server process execmem" \
|
||||
"allow system_server system_server memprotect mmap_zero"
|
||||
|
|
@ -102,32 +101,32 @@ start_log_cather () {
|
|||
if [[ ${START_NEW} == false ]]; then
|
||||
return
|
||||
fi
|
||||
touch ${LOG_FILE}
|
||||
touch ${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}
|
||||
echo "Device: ${DEVICE}">>${LOG_FILE}
|
||||
echo "Product: ${PRODUCT}">>${LOG_FILE}
|
||||
echo "Model: ${MODEL}">>${LOG_FILE}
|
||||
echo "Fingerprint: ${FINGERPRINT}">>${LOG_FILE}
|
||||
echo "ROM description: ${BUILD_DESC}">>${LOG_FILE}
|
||||
echo "Architecture: ${ARCH}">>${LOG_FILE}
|
||||
echo "Android build: ${BUILD}">>${LOG_FILE}
|
||||
echo "Android version: ${ANDROID}">>${LOG_FILE}
|
||||
echo "Android sdk: ${ANDROID_SDK}">>${LOG_FILE}
|
||||
echo "EdXposed version: ${EDXP_VERSION}">>${LOG_FILE}
|
||||
echo "EdXposed api: ${EDXP_APICODE}">>${LOG_FILE}
|
||||
echo "Riru version: ${RIRU_VERSION} (${RIRU_VERCODE})">>${LOG_FILE}
|
||||
echo "Riru api: ${RIRU_APICODE}">>${LOG_FILE}
|
||||
echo "Magisk: ${MAGISK_VERSION%:*} (${MAGISK_VERCODE})">>${LOG_FILE}
|
||||
loop_logcat -f ${LOG_FILE} *:S ${LOG_TAG_FILTERS} &
|
||||
touch "${LOG_FILE}"
|
||||
touch "${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}"
|
||||
echo "Device: ${DEVICE}">>"${LOG_FILE}"
|
||||
echo "Product: ${PRODUCT}">>"${LOG_FILE}"
|
||||
echo "Model: ${MODEL}">>"${LOG_FILE}"
|
||||
echo "Fingerprint: ${FINGERPRINT}">>"${LOG_FILE}"
|
||||
echo "ROM description: ${BUILD_DESC}">>"${LOG_FILE}"
|
||||
echo "Architecture: ${ARCH}">>"${LOG_FILE}"
|
||||
echo "Android build: ${BUILD}">>"${LOG_FILE}"
|
||||
echo "Android version: ${ANDROID}">>"${LOG_FILE}"
|
||||
echo "Android sdk: ${ANDROID_SDK}">>"${LOG_FILE}"
|
||||
echo "EdXposed version: ${EDXP_VERSION}">>"${LOG_FILE}"
|
||||
echo "EdXposed api: ${EDXP_APICODE}">>"${LOG_FILE}"
|
||||
echo "Riru version: ${RIRU_VERSION} (${RIRU_VERCODE})">>"${LOG_FILE}"
|
||||
echo "Riru api: ${RIRU_APICODE}">>"${LOG_FILE}"
|
||||
echo "Magisk: ${MAGISK_VERSION%:*} (${MAGISK_VERCODE})">>"${LOG_FILE}"
|
||||
loop_logcat -f "${LOG_FILE}" *:S "${LOG_TAG_FILTERS}" &
|
||||
LOG_PID=$!
|
||||
echo "${LOG_PID}">"${LOG_PATH}/${LOG_FILE_NAME}.pid"
|
||||
}
|
||||
|
|
@ -140,17 +139,22 @@ 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"
|
||||
|
||||
# install stub if manager not installed
|
||||
if [[ "$(pm path org.meowcat.edxposed.manager)" == "" && "$(pm path de.robv.android.xposed.installer)" == "" ]]; then
|
||||
if [[ "$(pm path org.meowcat.edxposed.manager 2>&1)" == "" && "$(pm path de.robv.android.xposed.installer 2>&1)" == "" ]]; then
|
||||
NO_MANAGER=true
|
||||
fi
|
||||
if [[ ${NO_MANAGER} == true ]]; then
|
||||
${ENFORCE} && setenforce 0
|
||||
pm install "${MODDIR}/EdXposed.apk"
|
||||
${ENFORCE} && setenforce 1
|
||||
cp "${MODDIR}/EdXposed.apk" "/data/local/tmp/EdXposed.apk"
|
||||
LOCAL_PATH_INFO=$(ls -ldZ "/data/local/tmp")
|
||||
LOCAL_PATH_OWNER=$(echo "${LOCAL_PATH_INFO}" | awk -F " " '{print $3":"$4}')
|
||||
LOCAL_PATH_CONTEXT=$(echo "${LOCAL_PATH_INFO}" | awk -F " " '{print $5}')
|
||||
chcon "${LOCAL_PATH_CONTEXT}" "/data/local/tmp/EdXposed.apk"
|
||||
chown "${LOCAL_PATH_OWNER}" "/data/local/tmp/EdXposed.apk"
|
||||
pm install "/data/local/tmp/EdXposed.apk"
|
||||
rm -f "/data/local/tmp/EdXposed.apk"
|
||||
fi
|
||||
|
||||
# execute live patch if rule not found
|
||||
[[ -f "${MODDIR}/sepolicy.rule" ]] || sepolicy
|
||||
[[ -f "${MODDIR}/sepolicy.rule" ]] || livePatch
|
||||
|
||||
# start_verbose_log_catcher
|
||||
start_log_cather all "EdXposed:V XSharedPreferences:V EdXposed-Bridge:V EdXposedManager:V XposedInstaller:V" true ${LOG_VERBOSE}
|
||||
|
|
@ -158,7 +162,6 @@ start_log_cather all "EdXposed:V XSharedPreferences:V EdXposed-Bridge:V EdXposed
|
|||
# start_bridge_log_catcher
|
||||
start_log_cather error "XSharedPreferences:V EdXposed-Bridge:V" true true
|
||||
|
||||
|
||||
if [[ -f "/data/adb/riru/modules/edxp.prop" ]]; then
|
||||
CONFIG=$(cat "/data/adb/riru/modules/edxp.prop")
|
||||
[[ -d "${TARGET}/${CONFIG}" ]] || mkdir -p "${TARGET}/${CONFIG}"
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
#!/sbin/sh
|
||||
RIRU_PATH="/data/adb/riru"
|
||||
RIRU_MODULE_ID="%%%RIRU_MODULE_ID%%%"
|
||||
RIRU_MODULE_PATH="$RIRU_PATH/modules/$RIRU_MODULE_ID"
|
||||
RIRU_SECONTEXT="u:object_r:magisk_file:s0"
|
||||
|
||||
check_riru_version() {
|
||||
RIRU_MIN_API_VERSION=%%%RIRU_MIN_API_VERSION%%%
|
||||
RIRU_MIN_VERSION_NAME="%%%RIRU_MIN_VERSION_NAME%%%"
|
||||
|
||||
if [ ! -f "$RIRU_PATH/api_version" ] && [ ! -f "$RIRU_PATH/api_version.new" ]; then
|
||||
ui_print "*********************************************************"
|
||||
ui_print "! Riru is not installed"
|
||||
ui_print "! Please install Riru from Magisk Manager or https://github.com/RikkaApps/Riru/releases"
|
||||
abort "*********************************************************"
|
||||
fi
|
||||
RIRU_API_VERSION=$(cat "$RIRU_PATH/api_version.new") || RIRU_API_VERSION=$(cat "$RIRU_PATH/api_version") || RIRU_API_VERSION=0
|
||||
[ "$RIRU_API_VERSION" -eq "$RIRU_API_VERSION" ] || RIRU_API_VERSION=0
|
||||
ui_print "- Riru API version: $RIRU_API_VERSION"
|
||||
if [ "$RIRU_API_VERSION" -lt $RIRU_MIN_API_VERSION ]; then
|
||||
ui_print "*********************************************************"
|
||||
ui_print "! Riru $RIRU_MIN_VERSION_NAME or above is required"
|
||||
ui_print "! Please upgrade Riru from Magisk Manager or https://github.com/RikkaApps/Riru/releases"
|
||||
abort "*********************************************************"
|
||||
fi
|
||||
}
|
||||
|
||||
check_architecture() {
|
||||
if [ "$ARCH" != "arm" ] && [ "$ARCH" != "arm64" ] && [ "$ARCH" != "x86" ] && [ "$ARCH" != "x64" ]; then
|
||||
abort "! Unsupported platform: $ARCH"
|
||||
else
|
||||
ui_print "- Device platform: $ARCH"
|
||||
fi
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#!/system/bin/sh
|
||||
|
||||
MODDIR=${0%/*}
|
||||
|
||||
if [[ -f "${MODDIR}/reboot_twice_flag" ]]; then
|
||||
rm -f "${MODDIR}/reboot_twice_flag"
|
||||
reboot
|
||||
fi
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
RIRU_PATH="/data/adb/riru"
|
||||
RIRU_MODULE_ID="%%%RIRU_MODULE_ID%%%"
|
||||
RIRU_MODULE_PATH="$RIRU_PATH/modules/$RIRU_MODULE_ID"
|
||||
RIRU_SECONTEXT="u:object_r:magisk_file:s0"
|
||||
|
||||
check_riru_version() {
|
||||
RIRU_MIN_API_VERSION=%%%RIRU_MIN_API_VERSION%%%
|
||||
RIRU_MIN_VERSION_NAME="%%%RIRU_MIN_VERSION_NAME%%%"
|
||||
|
||||
if [ ! -f "$RIRU_PATH/api_version" ] && [ ! -f "$RIRU_PATH/api_version.new" ]; then
|
||||
ui_print "${POUNDS}"
|
||||
ui_print "! ${LANG_UTIL_ERR_RIRU_NOT_FOUND_1}"
|
||||
ui_print "! ${LANG_UTIL_ERR_RIRU_NOT_FOUND_2}"
|
||||
[[ ${BOOTMODE} == true ]] && am start -a android.intent.action.VIEW -d https://github.com/RikkaApps/Riru/releases
|
||||
abortC "${POUNDS}"
|
||||
fi
|
||||
RIRU_API_VERSION=$(cat "$RIRU_PATH/api_version.new") || RIRU_API_VERSION=$(cat "$RIRU_PATH/api_version") || RIRU_API_VERSION=0
|
||||
[ "$RIRU_API_VERSION" -eq "$RIRU_API_VERSION" ] || RIRU_API_VERSION=0
|
||||
ui_print "- Riru API ${LANG_CUST_INST_VERSION}: $RIRU_API_VERSION"
|
||||
if [ "$RIRU_API_VERSION" -lt $RIRU_MIN_API_VERSION ]; then
|
||||
ui_print "${POUNDS}"
|
||||
ui_print "! Riru $RIRU_MIN_VERSION_NAME ${LANG_UTIL_ERR_RIRU_LOW_1}"
|
||||
ui_print "! ${LANG_UTIL_ERR_RIRU_LOW_2}"
|
||||
[[ ${BOOTMODE} == true ]] && am start -a android.intent.action.VIEW -d https://github.com/RikkaApps/Riru/releases
|
||||
abortC "${POUNDS}"
|
||||
fi
|
||||
}
|
||||
|
||||
check_magisk_version() {
|
||||
ui_print "- Magisk ${LANG_CUST_INST_VERSION}: ${MAGISK_VER_CODE}"
|
||||
# before Magisk 16e4c67, sepolicy.rule is copied on the second reboot
|
||||
if [[ "$MAGISK_VER_CODE" -lt 21006 ]]; then
|
||||
touch "${MODPATH}/reboot_twice_flag"
|
||||
fi
|
||||
}
|
||||
|
||||
require_yahfa() {
|
||||
ui_print "${POUNDS}"
|
||||
ui_print "! ${LANG_UTIL_ERR_REQUIRE_YAHFA_1}"
|
||||
ui_print "! ${LANG_UTIL_ERR_REQUIRE_YAHFA_2}"
|
||||
ui_print "! ${LANG_UTIL_ERR_REQUIRE_YAHFA_3}"
|
||||
abortC "${POUNDS}"
|
||||
}
|
||||
|
||||
require_new_android() {
|
||||
ui_print "${POUNDS}"
|
||||
ui_print "! ${LANG_UTIL_ERR_ANDROID_UNSUPPORT_1} ${1} ${LANG_UTIL_ERR_ANDROID_UNSUPPORT_2}"
|
||||
ui_print "! ${LANG_UTIL_ERR_ANDROID_UNSUPPORT_3}"
|
||||
[[ ${BOOTMODE} == true ]] && am start -a android.intent.action.VIEW -d https://github.com/ElderDrivers/EdXposed/wiki/Available-Android-versions
|
||||
abortC "${POUNDS}"
|
||||
}
|
||||
|
||||
edxp_check_architecture() {
|
||||
if [[ "${MODID}" == "riru_edxposed_sandhook" ]]; then
|
||||
VARIANTS="SandHook"
|
||||
else
|
||||
VARIANTS="YAHFA"
|
||||
fi
|
||||
if [[ "${ARCH}" != "arm" && "${ARCH}" != "arm64" && "${ARCH}" != "x86" && "${ARCH}" != "x64" ]]; then
|
||||
abortC "! ${LANG_UTIL_ERR_PLATFORM_UNSUPPORT}: ${ARCH}"
|
||||
else
|
||||
ui_print "- ${LANG_UTIL_PLATFORM}: ${ARCH}"
|
||||
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
|
||||
if [[ "${VARIANTS}" == "SandHook" ]]; then
|
||||
require_yahfa
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
check_android_version() {
|
||||
if [[ ${API} -ge 26 ]]; then
|
||||
ui_print "- Android SDK ${LANG_CUST_INST_VERSION}: ${API}"
|
||||
else
|
||||
require_new_android "${API}"
|
||||
fi
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@ mkdir "$TMPDIR_FOR_VERIFY"
|
|||
abort_verify() {
|
||||
ui_print "*********************************************************"
|
||||
ui_print "! $1"
|
||||
ui_print "! This zip may be corrupted, please try downloading again"
|
||||
ui_print "! ${LANG_VERIFY_ERR_NOTICE}"
|
||||
abort "*********************************************************"
|
||||
}
|
||||
|
||||
|
|
@ -29,11 +29,11 @@ extract() {
|
|||
fi
|
||||
|
||||
unzip $opts "$zip" "$file" -d "$dir" >&2
|
||||
[ -f "$file_path" ] || abort_verify "$file not exists"
|
||||
[ -f "$file_path" ] || abort_verify "$file ${LANG_VERIFY_ERR_NOT_EXIST}"
|
||||
|
||||
unzip $opts "$zip" "$file.s" -d "$TMPDIR_FOR_VERIFY" >&2
|
||||
[ -f "$hash_path" ] || abort_verify "$file.s not exists"
|
||||
[ -f "$hash_path" ] || abort_verify "$file.s ${LANG_VERIFY_ERR_NOT_EXIST}"
|
||||
|
||||
(echo "$(cat "$hash_path") $file_path" | sha256sum -c -s -) || abort_verify "Failed to verify $file"
|
||||
ui_print "- Verified $file" >&1
|
||||
(echo "$(cat "$hash_path") $file_path" | sha256sum -c -s -) || abort_verify "${LANG_VERIFY_ERR_MISMATCH} $file"
|
||||
ui_print "- ${LANG_VERIFY_SUCCESS} $file" >&1
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# Simplified Chinese (China) language file
|
||||
# Load this shell will replace en_US lang
|
||||
|
||||
# customize
|
||||
LANG_CUST_INST_VERSION="版本"
|
||||
LANG_CUST_INST_EXT_FILES="正在解压模块文件"
|
||||
LANG_CUST_INST_EXT_LIB_X86="正在解压 x86 运行库"
|
||||
LANG_CUST_INST_EXT_LIB_X64="正在解压 x86_64 运行库"
|
||||
LANG_CUST_INST_EXT_LIB_ARM="正在解压 arm 运行库"
|
||||
LANG_CUST_INST_EXT_LIB_ARM64="正在解压 arm64 运行库"
|
||||
LANG_CUST_INST_STUB="正在预装管理器"
|
||||
LANG_CUST_INST_CONF_CREATE="正在创建配置目录"
|
||||
LANG_CUST_INST_CONF_OLD="使用旧目录"
|
||||
LANG_CUST_INST_CONF_NEW="使用新目录"
|
||||
LANG_CUST_INST_COPY_LIB="正在复制框架运行库"
|
||||
LANG_CUST_INST_RAND_LIB_1="正在重设运行库路径"
|
||||
LANG_CUST_INST_RAND_LIB_2="可能会耗费一些时间,请耐心等待"
|
||||
LANG_CUST_INST_RAND_LIB_3="正在处理 32 位运行库"
|
||||
LANG_CUST_INST_RAND_LIB_4="正在处理 64 位运行库"
|
||||
LANG_CUST_INST_REM_OLDCONF="正在移除老旧配置"
|
||||
LANG_CUST_INST_COPT_EXTRA="正在复制文件"
|
||||
LANG_CUST_INST_DONE="欢迎使用"
|
||||
|
||||
LANG_CUST_ERR_VERIFY_FAIL="无法解压校验工具!"
|
||||
LANG_CUST_ERR_STUB="管理器预装失败! 请手动安装 EdXposed Manager"
|
||||
LANG_CUST_ERR_PERM="无法设置权限"
|
||||
LANG_CUST_ERR_CONF_CREATE="无法创建配置路径"
|
||||
LANG_CUST_ERR_CONF_STORE="无法写入配置路径"
|
||||
LANG_CUST_ERR_CONF_FIRST="无法创建首次安装标识"
|
||||
LANG_CUST_ERR_CONF_UNINST="无法写入卸载脚本"
|
||||
LANG_CUST_ERR_EXTRA_CREATE="无法创建"
|
||||
|
||||
# verify
|
||||
LANG_VERIFY_SUCCESS="已验证"
|
||||
|
||||
LANG_VERIFY_ERR_MISMATCH="校验失败"
|
||||
LANG_VERIFY_ERR_NOT_EXIST="不存在"
|
||||
LANG_VERIFY_ERR_NOTICE="模块可能已被损坏,请从官方重新下载"
|
||||
|
||||
# util_functions
|
||||
LANG_UTIL_PLATFORM="设备平台"
|
||||
|
||||
LANG_UTIL_ERR_RIRU_NOT_FOUND_1="未安装"
|
||||
LANG_UTIL_ERR_RIRU_NOT_FOUND_2="请先从 Magisk Manager 中安装 Riru"
|
||||
LANG_UTIL_ERR_RIRU_LOW_1="或更高版本需要被安装"
|
||||
LANG_UTIL_ERR_RIRU_LOW_2="请先从 Magisk Manager 中升级 Riru"
|
||||
LANG_UTIL_ERR_REQUIRE_YAHFA_1="侦测到 x86 或 x86_64 架构"
|
||||
LANG_UTIL_ERR_REQUIRE_YAHFA_2="仅 YAHFA 支持 x86 或 x86_64 架构的设备"
|
||||
LANG_UTIL_ERR_REQUIRE_YAHFA_3="可从 'Magisk Manager' 或 'EdXposed Manager' 中下载"
|
||||
LANG_UTIL_ERR_ANDROID_UNSUPPORT_1="不支持的 Android 版本"
|
||||
LANG_UTIL_ERR_ANDROID_UNSUPPORT_2="(Oreo 以下版本)"
|
||||
LANG_UTIL_ERR_ANDROID_UNSUPPORT_3="从我们的 GitHub Wiki 中了解更多"
|
||||
LANG_UTIL_ERR_PLATFORM_UNSUPPORT="不支持的设备平台"
|
||||
Loading…
Reference in New Issue