From d8c1320a4a7d475a541d1bcbdb0763d4874ce015 Mon Sep 17 00:00:00 2001 From: Jim Wu Date: Sat, 4 Jan 2020 13:46:03 +0800 Subject: [PATCH] Support Magisk v20.2 SEPolicy API - Add custom sepolicy rule - Add Riru version to log - No hardcoded EdXposed version - Magisk v20.2+ required - No beta --- README.md | 16 +-- README_CN.md | 18 +-- appveyor.yml | 2 +- edxp-core/build.gradle | 2 +- edxp-core/template_override/customize.sh | 52 ++++---- edxp-core/template_override/post-fs-data.sh | 118 +++++++++++++++++- edxp-core/template_override/sepolicy.rule | 1 + edxp-core/template_override/uninstall.sh | 3 +- edxp-core/template_override/util_functions.sh | 97 -------------- edxp-core/tpl/module.prop.tpl | 2 +- 10 files changed, 167 insertions(+), 144 deletions(-) delete mode 100644 edxp-core/template_override/util_functions.sh diff --git a/README.md b/README.md index d33be7b9..f4c0c055 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ and zip binaries can be downloaded from [here](http://gnuwin32.sourceforge.net/p ## Install -1. Install Magisk v19.0+ (for latest EdXposed or Huawei devices, use at least official Magisk v20.2+ or use our custom Magisk: Change Magisk update channel to [this](http://edxp.meowcat.org/repo/version.json)). +1. Install Magisk v20.2+ 2. Install [Riru-Core](https://github.com/RikkaApps/Riru/releases) v19+ from Magisk repo. 3. [Download](#download) and install EdXposed in Magisk Manager or recovery mode. 4. Install [companion application](#companion-applications). @@ -40,8 +40,8 @@ and zip binaries can be downloaded from [here](http://gnuwin32.sourceforge.net/p Edxposed has three different builds -- Beta:Stable version after passing the test, suitable for general users, update slowly. -***Download Beta version in Magisk Manager's [Downloads] tab*** +- Stable:Stable version after passing the test, suitable for general users, update slowly. +***Download Stable version in Magisk Manager's [Downloads] tab*** - Alpha: Test version with multiple commits. ***Download Alpha version in [[Github Releases](https://github.com/ElderDrivers/EdXposed/releases)]*** @@ -51,6 +51,8 @@ Edxposed has three different builds ## Companion Applications +> Both Xposed Installer and EdXposed Installer are deprecated. Support will be stopped for later versions. Please use [EdXposed Manager](https://github.com/ElderDrivers/EdXposedManager) + - For v0.2.9.5 and before: [Xposed Installer](https://github.com/DVDAndroid/XposedInstaller). - For v0.2.9.6 and v0.2.9.7: [Xposed Installer](https://github.com/DVDAndroid/XposedInstaller) + [EdXp Manager](https://github.com/solohsu/EdXpManager)(optional). - For v0.2.9.8 and later: [EdXposed Installer](https://github.com/solohsu/XposedInstaller) and [EdXposed Manager](https://github.com/ElderDrivers/EdXposedManager). @@ -63,17 +65,17 @@ Edxposed has three different builds ## Known Issues - [ ] May not be compatible with all ART devices. -- [ ] (Provisional solved, Use magiskpolicy to enable needed SELinux policies) File access services are not implemented yet. -- [ ] (Provisional solved, #384) Wait for Magisk sepolicy update. +- [ ] (Provisional solved, Use Magisk SEPolicy API to enable needed SELinux policies) File access services are not implemented yet. +- [x] (Fixed) ~~Wait for Magisk sepolicy update.~~ - [ ] (Provisional solved, #386) SafetyNet and some app tripped EdXposed. -- [ ] (Provisional solved, #401) Some module cannot hook app, such as WeXposed. +- [ ] (Provisional solved, WeXposed fixed in v2.7) Some module cannot hook app, such as WeXposed. - [x] (Fixed, use EdXposed Manager v4.5.2 and newer) ~~Dynamic modules not work, caused by SELinux.~~ ## Get Help - GitHub issues: [Issues](https://github.com/ElderDrivers/EdXposed/issues/) -- Notice(for Chinese): In view of the low quality of issues submitted, please read the Chinese user report first[EdXposedIssuesReport_cn](http://edxp.meowcat.org/repo/EdXposedIssuesReport_cn.txt)(If you don't read the instructions, the submitted issue is likely to be closed) +- Notice(for Chinese): In view of the low quality of issues submitted, please read the Chinese user report first[EdXposedIssuesReport_cn](http://edxp.meowcat.org/assets/EdXposedIssuesReport_cn.txt)(If you don't read the instructions, the submitted issue is likely to be closed) ## For Developers diff --git a/README_CN.md b/README_CN.md index 899445ff..6c95c453 100644 --- a/README_CN.md +++ b/README_CN.md @@ -29,7 +29,7 @@ zip 可执行文件可以在 [这里](http://gnuwin32.sourceforge.net/packages/z ## 安装 -1. 安装 Magisk v19.0+ (对于最新的 EdXposed 构建或华为/荣耀设备, 请使用我们自定义的 Magisk: 将 Magisk 更新通道更改为 [http://edxp.meowcat.org/repo/version.json](http://edxp.meowcat.org/repo/version.json)). +1. 安装 Magisk v20.2+ 2. 在 Magisk 仓库中安装 [Riru-Core](https://github.com/RikkaApps/Riru/releases) v19 或更高版本. 3. [下载](#下载)并在恢复模式(Recovery)或经由 Magisk Manager 安装 EdXposed. 4. 安装 [框架管理应用](#框架管理应用). @@ -40,8 +40,8 @@ zip 可执行文件可以在 [这里](http://gnuwin32.sourceforge.net/packages/z Edxposed 拥有三个不同的版本 -- Beta:经过测试的稳定版, 适合一般用户,更新缓慢. -***在 [Magisk Manager] 中的 [下载] 页中下载 Beta 版本*** +- Stable:经过测试的稳定版, 适合一般用户,更新缓慢. +***在 [Magisk Manager] 中的 [下载] 页中下载 Stable 版本*** - Alpha: 多次提交更新的测试版. ***在 [[Github Releases](https://github.com/ElderDrivers/EdXposed/releases)] 中下载 Alpha 版本*** @@ -51,6 +51,8 @@ Edxposed 拥有三个不同的版本 ## 框架管理应用 +> Xposed Installer 和 EdXposed Installer 均已停更,后续版本将取消支持,请使用 [EdXposed Manager](https://github.com/ElderDrivers/EdXposedManager) + - 对于 v0.2.9.5 或更低版本: [Xposed Installer](https://github.com/DVDAndroid/XposedInstaller). - 对于 v0.2.9.6 和 v0.2.9.7: [Xposed Installer](https://github.com/DVDAndroid/XposedInstaller) + [EdXp Manager](https://github.com/solohsu/EdXpManager)(optional). - 对于 v0.2.9.8 或更高版本: [EdXposed Installer](https://github.com/solohsu/XposedInstaller) 或者 [EdXposed Manager](https://github.com/ElderDrivers/EdXposedManager). @@ -64,16 +66,16 @@ Edxposed 拥有三个不同的版本 - [ ] 可能不兼容部分 ART 设备. - [ ] (临时解决, 使用 magiskpolicy 来启用所需的 SELinux 策略)文件访问服务尚未实现. -- [ ] (临时解决, #384) 等待 Magisk 更新 SEPolicy. +- [x] (已修复) ~~等待 Magisk 更新 SEPolicy.~~ - [ ] (临时解决, #386) SafetyNet 和一些应用检测到了 EdXposed. -- [ ] (临时解决, #401) 一些模块无法工作,例如微X模块. +- [ ] (临时解决, 微X模块已在2.7版本修复) 一些模块无法工作,例如微X模块. - [x] (已修复, 使用 EdXposed Manager v4.5.2 或更高版本) ~~受制于 SELinux 策略,即时列表功能无法使用.~~ ## 获取帮助 -- GitHub issues: [Issues](https://github.com/solohsu/EdXposed/issues/) +- GitHub issues: [Issues](https://github.com/ElderDrivers/EdXposed/issues/) -- 注意: 鉴于部分用户提交的Issues质量过低,对于中文用户反馈,请先阅读[EdXposed错误提交说明_cn](https://raw.githubusercontent.com/ElderDrivers/Repository-Website/gh-pages/repo/EdXposedIssuesReport_cn.txt)(不看说明提交的Issue会有很大可能被close) +- 注意: 鉴于部分用户提交的Issues质量过低,对于中文用户反馈,请先阅读[EdXposed错误提交说明_cn](http://edxp.meowcat.org/assets/EdXposedIssuesReport_cn.txt)(不看说明提交的Issue会有很大可能被close) ## 社区交流 @@ -87,7 +89,7 @@ Edxposed 拥有三个不同的版本 - 显然,框架还不够稳定,欢迎使用PR贡献代码. :) - 如果你愿意,可以[请我喝杯咖啡](https://www.paypal.me/givin2u). -## 鸣谢 +## 鸣谢 - [YAHFA](https://github.com/rk700/YAHFA): ART hook 核心框架 - [Magisk](https://github.com/topjohnwu/Magisk/): 让一切成为可能 diff --git a/appveyor.yml b/appveyor.yml index ff7e8cb3..6bafc844 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: '0.4.6.0_beta({build})' +version: '0.4.6.1 ({build})' environment: ANDROID_HOME: C:\android-sdk-windows diff --git a/edxp-core/build.gradle b/edxp-core/build.gradle index 9ed5e112..224a46c7 100644 --- a/edxp-core/build.gradle +++ b/edxp-core/build.gradle @@ -4,7 +4,7 @@ import org.gradle.internal.os.OperatingSystem apply plugin: 'com.android.library' // Values set here will be overriden by AppVeyor, feel free to modify during development. -def buildVersionName = 'v0.4.6.0_beta' +def buildVersionName = 'v0.4.6.1' def buildVersionCode = 10000 if (System.env.APPVEYOR_BUILD_VERSION != null) { diff --git a/edxp-core/template_override/customize.sh b/edxp-core/template_override/customize.sh index e8b69661..e115db21 100644 --- a/edxp-core/template_override/customize.sh +++ b/edxp-core/template_override/customize.sh @@ -2,49 +2,59 @@ SKIPUNZIP=1 RIRU_PATH="/data/misc/riru" +require_new_magisk() { + ui_print "*******************************" + ui_print " Please install Magisk v20.2+! " + ui_print "*******************************" + abort +} + check_riru_version() { - [[ ! -f "$RIRU_PATH/api_version" ]] && abort "! Please Install Riru - Core v19 or above" - VERSION=$(cat "$RIRU_PATH/api_version") - ui_print "- Riru API version is $VERSION" - [[ "$VERSION" -ge 4 ]] || abort "! Please Install Riru - Core v19 or above" + [[ ! -f "${RIRU_PATH}/api_version" ]] && abort "! Please Install Riru - Core v19 or above" + VERSION=$(cat "${RIRU_PATH}/api_version") + ui_print "- Riru API version is ${VERSION}" + [[ "${VERSION}" -ge 4 ]] || abort "! Please Install Riru - Core v19 or above" } check_architecture() { - if [[ "$ARCH" != "arm" && "$ARCH" != "arm64" && "$ARCH" != "x86" && "$ARCH" != "x64" ]]; then - abort "! Unsupported platform: $ARCH" + if [[ "${ARCH}" != "arm" && "${ARCH}" != "arm64" && "${ARCH}" != "x86" && "${ARCH}" != "x64" ]]; then + abort "! Unsupported platform: ${ARCH}" else - ui_print "- Device platform: $ARCH" + ui_print "- Device platform: ${ARCH}" fi } +[[ ${MAGISK_VER_CODE} -ge 20110 ]] || require_new_magisk + check_architecture check_riru_version -unzip -o "$ZIPFILE" module.prop post-fs-data.sh sepolicy.rule system.prop util_functions.sh -d "$MODPATH" >&2 +ui_print "- Extracting module files" +unzip -o "${ZIPFILE}" post-fs-data.sh sepolicy.rule system.prop util_functions.sh -d "${MODPATH}" >&2 -if [[ "$ARCH" == "x86" || "$ARCH" == "x64" ]]; then +if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then ui_print "- Extracting x86/64 libraries" - unzip -o "$ZIPFILE" 'system_x86/*' -d "$MODPATH" >&2 - mv "$MODPATH/system_x86/lib" "$MODPATH/system/lib" - mv "$MODPATH/system_x86/lib64" "$MODPATH/system/lib64" + unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2 + mv "${MODPATH}/system_x86/lib" "${MODPATH}/system/lib" + mv "${MODPATH}/system_x86/lib64" "${MODPATH}/system/lib64" else ui_print "- Extracting arm/arm64 libraries" - unzip -o "$ZIPFILE" 'system/*' -d "$MODPATH" >&2 + unzip -o "${ZIPFILE}" 'system/*' -d "${MODPATH}" >&2 fi -if [[ "$IS64BIT" = false ]]; then +if [[ "${IS64BIT}" = false ]]; then ui_print "- Removing 64-bit libraries" - rm -rf "$MODPATH/system/lib64" + rm -rf "${MODPATH}/system/lib64" fi -TARGET="$RIRU_PATH/modules" +ui_print "- Copying extra files" -ui_print "- Extracting extra files" -unzip -o "$ZIPFILE" 'data/*' -d "$TMPDIR" >&2 +TARGET="${RIRU_PATH}/modules/edxp" -[[ -d "$TARGET" ]] || mkdir -p "$TARGET" || abort "! Can't mkdir -p $TARGET" -cp -af "$TMPDIR$TARGET/." "$TARGET" || abort "! Can't cp -af $TMPDIR$TARGET/. $TARGET" +[[ -d "${TARGET}" ]] || mkdir -p "${TARGET}" || abort "! Can't mkdir -p ${TARGET}" + +cp "${MODPATH}/module.prop" "${TARGET}/module.prop" || abort "! Can't create ${TARGET}/module.prop" ui_print "- Files copied" -set_perm_recursive "$MODPATH" 0 0 0755 0644 +set_perm_recursive "${MODPATH}" 0 0 0755 0644 diff --git a/edxp-core/template_override/post-fs-data.sh b/edxp-core/template_override/post-fs-data.sh index 66c2bd1c..ee350ebe 100644 --- a/edxp-core/template_override/post-fs-data.sh +++ b/edxp-core/template_override/post-fs-data.sh @@ -1,11 +1,117 @@ #!/system/bin/sh -# Please don't hardcode /magisk/modname/... ; instead, please use $MODDIR/... -# This will make your scripts compatible even if Magisk change its mount point in the future MODDIR=${0%/*} -# This script will be executed in post-fs-data mode -# More info in the main Magisk thread +grep_prop() { + local REGEX="s/^$1=//p" + shift + local FILES=$@ + [[ -z "$FILES" ]] && FILES='/system/build.prop' + sed -n "$REGEX" ${FILES} 2>/dev/null | head -n 1 +} -. ${MODDIR}/util_functions.sh +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` +MANUFACTURE=`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/ -start_log_catchers +if [[ ${ANDROID_SDK} -ge 24 ]] +then + PATH_PREFIX=${PATH_PREFIX_PROT} +else + PATH_PREFIX=${PATH_PREFIX_LEGACY} +fi + +DEFAULT_BASE_PATH=${PATH_PREFIX}${EDXP_INSTALLER} +BASE_PATH=${DEFAULT_BASE_PATH} + +if [[ ! -d ${BASE_PATH} ]] +then + BASE_PATH=${PATH_PREFIX}${EDXP_MANAGER} + if [[ ! -d ${BASE_PATH} ]] + then + BASE_PATH=${PATH_PREFIX}${XP_INSTALLER} + if [[ ! -d ${BASE_PATH} ]] + then + BASE_PATH=${DEFAULT_BASE_PATH} + fi + fi +fi + +LOG_PATH=${BASE_PATH}/log +CONF_PATH=${BASE_PATH}/conf +DISABLE_VERBOSE_LOG_FILE=${CONF_PATH}/disable_verbose_log +LOG_VERBOSE=true + +if [[ -f ${DISABLE_VERBOSE_LOG_FILE} ]] +then + LOG_VERBOSE=false +fi + +start_log_cather () { + LOG_FILE_NAME=$1 + LOG_TAG_FILTERS=$2 + CLEAN_OLD=$3 + START_NEW=$4 + LOG_FILE=${LOG_PATH}/${LOG_FILE_NAME} + mkdir -p ${LOG_PATH} + if [[ ${CLEAN_OLD} = true ]] + then + rm -rf ${LOG_FILE} + fi + if [[ ${START_NEW} = false ]] + then + return + fi + chmod + touch ${LOG_FILE} + chmod 777 ${LOG_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 "--------- beginning of information">>${LOG_FILE} + echo "Android version: ${ANDROID}">>${LOG_FILE} + echo "Android sdk: ${ANDROID_SDK}">>${LOG_FILE} + echo "Android build: ${BUILD}">>${LOG_FILE} + echo "Fingerprint: ${FINGERPRINT}">>${LOG_FILE} + echo "ROM build description: ${BUILD_DESC}">>${LOG_FILE} + echo "EdXposed Version: ${EDXP_VERSION} (api: 90.0)">>${LOG_FILE} + echo "Architecture: ${ARCH}">>${LOG_FILE} + echo "Device: ${DEVICE}">>${LOG_FILE} + echo "Manufacture: ${MANUFACTURE}">>${LOG_FILE} + echo "Brand: ${BRAND}">>${LOG_FILE} + echo "Product: ${PRODUCT}">>${LOG_FILE} + echo "Riru: ${RIRU_VERSION} (${RIRU_VERCODE}) (api: ${RIRU_APICODE})">>${LOG_FILE} + echo "Magisk: ${MAGISK_VERSION} (${MAGISK_VERCODE})">>${LOG_FILE} + logcat -f ${LOG_FILE} *:S ${LOG_TAG_FILTERS} & +} + +start_verbose_log_catcher () { + start_log_cather all.log "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_verbose_log_catcher + +start_bridge_log_catcher diff --git a/edxp-core/template_override/sepolicy.rule b/edxp-core/template_override/sepolicy.rule index 6a14063f..a0e13f24 100644 --- a/edxp-core/template_override/sepolicy.rule +++ b/edxp-core/template_override/sepolicy.rule @@ -1,5 +1,6 @@ # necessary for using mmap in system_server process allow system_server system_server process {execmem} +allow system_server system_server memprotect {mmap_zero} # for built-in apps // TODO maybe narrow down the target classes allow coredomain coredomain process {execmem} diff --git a/edxp-core/template_override/uninstall.sh b/edxp-core/template_override/uninstall.sh index 6ec47ab8..6a22522c 100644 --- a/edxp-core/template_override/uninstall.sh +++ b/edxp-core/template_override/uninstall.sh @@ -1,4 +1,3 @@ #!/sbin/sh -#rm -r -f /data/misc/riru/modules/edxposed/ -#rm -r -f /data/misc/riru/modules/edxp/ +rm -rf /data/misc/riru/modules/edxp diff --git a/edxp-core/template_override/util_functions.sh b/edxp-core/template_override/util_functions.sh deleted file mode 100644 index e4e83b44..00000000 --- a/edxp-core/template_override/util_functions.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/system/bin/sh - -EDXP_VERSION="%VERSION% (%BACKEND%)" -ANDROID_SDK=`getprop ro.build.version.sdk` -BUILD_DESC=`getprop ro.build.description` -PRODUCT=`getprop ro.build.product` -MANUFACTURE=`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` -MAGISKV=`su -v` -MAGISKC=`su -V` - -setup_log_path () { - 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} - else - PATH_PREFIX=${PATH_PREFIX_LEGACY} - fi - DEFAULT_BASE_PATH=${PATH_PREFIX}${EDXP_INSTALLER} - BASE_PATH=${DEFAULT_BASE_PATH} - if [[ ! -d ${BASE_PATH} ]] - then - BASE_PATH=${PATH_PREFIX}${EDXP_MANAGER} - if [[ ! -d ${BASE_PATH} ]] - then - BASE_PATH=${PATH_PREFIX}${XP_INSTALLER} - if [[ ! -d ${BASE_PATH} ]] - then - BASE_PATH=${DEFAULT_BASE_PATH} - fi - fi - fi - LOG_PATH=${BASE_PATH}/log - CONF_PATH=${BASE_PATH}/conf - DISABLE_VERBOSE_LOG_FILE=${CONF_PATH}/disable_verbose_log - LOG_VERBOSE=true - if [[ -f ${DISABLE_VERBOSE_LOG_FILE} ]]; then LOG_VERBOSE=false; fi -} - -start_log_cather () { - LOG_FILE_NAME=$1 - LOG_TAG_FILTERS=$2 - CLEAN_OLD=$3 - START_NEW=$4 - LOG_FILE=${LOG_PATH}/${LOG_FILE_NAME} - mkdir -p ${LOG_PATH} - if [[ ${CLEAN_OLD} = true ]]; then - rm -rf ${LOG_FILE} - fi - if [[ ${START_NEW} = false ]]; then - return - fi - touch ${LOG_FILE} - chmod 777 ${LOG_FILE} - echo "--------- beginning of head">>${LOG_FILE} - echo "EdXposed Log">>${LOG_FILE} - echo "Powered by Log Catcher">>${LOG_FILE} - echo "QQ chat group 855219808">>${LOG_FILE} - echo "--------- beginning of system info">>${LOG_FILE} - echo "Android version: ${ANDROID}">>${LOG_FILE} - echo "Android sdk: ${ANDROID_SDK}">>${LOG_FILE} - echo "Android build: ${BUILD}">>${LOG_FILE} - echo "Fingerprint: ${FINGERPRINT}">>${LOG_FILE} - echo "ROM build description: ${BUILD_DESC}">>${LOG_FILE} - echo "EdXposed Version: ${EDXP_VERSION}">>${LOG_FILE} - echo "Architecture: ${ARCH}">>${LOG_FILE} - echo "Device: ${DEVICE}">>${LOG_FILE} - echo "Manufacture: ${MANUFACTURE}">>${LOG_FILE} - echo "Brand: ${BRAND}">>${LOG_FILE} - echo "Product: ${PRODUCT}">>${LOG_FILE} - echo "Magisk: ${MAGISKV}(${MAGISKC})">>${LOG_FILE} - logcat -f ${LOG_FILE} *:S ${LOG_TAG_FILTERS} & -} - -start_verbose_log_catcher () { - start_log_cather all.log "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_catchers () { - start_bridge_log_catcher - start_verbose_log_catcher -} - -setup_log_path diff --git a/edxp-core/tpl/module.prop.tpl b/edxp-core/tpl/module.prop.tpl index 8f9511ef..c233029c 100644 --- a/edxp-core/tpl/module.prop.tpl +++ b/edxp-core/tpl/module.prop.tpl @@ -3,5 +3,5 @@ name=Riru - EdXposed version=${versionName} versionCode=${versionCode} author=${authorList} -description=Another implementation of Xposed Framework, require Riru - Core v19.0+ installed. You can download Alpha or Canary(Debug) version in EdXposed Manager. +description=Another implementation of Xposed Framework, require Riru - Core v20.2+ installed. You can download Alpha or Canary(Debug) version in EdXposed Manager. api=4