From 773c9cab4e2df91133963d0c0f21cb955c6fa221 Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Sat, 28 Nov 2020 12:22:32 +0800 Subject: [PATCH 1/2] Remove edconfig.jar thing --- build.gradle | 15 +++++++ edxp-common/build.gradle | 6 +++ .../riru/edxp/config/BaseEdxpConfig.java | 4 -- .../riru/edxp/config/ConfigManager.java | 2 - .../edxp/hooker/XposedInstallerHooker.java | 42 ++++++++++++------- edxp-core/build.gradle | 39 ++++------------- .../src/main/cpp/main/src/config_manager.h | 3 -- .../cpp/main/src/jni/edxp_config_manager.cpp | 5 --- edxp-core/template_override/customize.sh | 7 ---- edxp-core/tpl/edconfig.tpl | 5 --- .../riru/edxp/config/EdxpConfig.java | 2 - 11 files changed, 55 insertions(+), 75 deletions(-) delete mode 100644 edxp-core/tpl/edconfig.tpl diff --git a/build.gradle b/build.gradle index ddd888e98..92d6c69c1 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,22 @@ buildscript { } allprojects { + // Values set here will be overriden by AppVeyor, feel free to modify during development. + def buildVersionName = 'v0.5.0.8' + def buildVersionCode = 233 + + if (System.env.APPVEYOR_BUILD_VERSION != null) { + buildVersionName = "v${System.getenv('appveyor_build_version')}" + } + + if (System.env.APPVEYOR_BUILD_NUMBER != null) { + // Split is necessary because PRs set the build number to "1234-something". + def parts = System.env.APPVEYOR_BUILD_NUMBER.split('-') + buildVersionCode = Integer.valueOf(parts[0]) + } ext { + versionCode = buildVersionCode + versionName = buildVersionName templateRootPath = project(":edxp-core").projectDir.path + "/template_override/" templateSystemPath = templateRootPath + "/system/" templateSystemx86Path = templateRootPath + "/system_x86/" diff --git a/edxp-common/build.gradle b/edxp-common/build.gradle index 3d07b3003..3f5ff791d 100644 --- a/edxp-common/build.gradle +++ b/edxp-common/build.gradle @@ -14,6 +14,12 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + buildConfigField("String", "VERSION_NAME", "\"${rootProject.ext.versionName}\"") + buildConfigField("Integer", "VERSION_CODE", String.valueOf(rootProject.ext.versionCode)) + } + debug { + buildConfigField("String", "VERSION_NAME", "\"${rootProject.ext.versionName}\"") + buildConfigField("Integer", "VERSION_CODE", String.valueOf(rootProject.ext.versionCode)) } } diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java index 345635fde..cd3a36822 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java @@ -19,10 +19,6 @@ public String getInstallerPackageName() { return ConfigManager.getInstallerPackageName(); } - @Override - public String getXposedPropPath() { - return ConfigManager.getXposedPropPath(); - } @Override public String getLibSandHookName() { return ConfigManager.getLibSandHookName(); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java index 6c2dd834c..c58f1003f 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java @@ -39,8 +39,6 @@ private static boolean isFileExists(String path) { public static native String getInstallerPackageName(); - public static native String getXposedPropPath(); - public static native String getLibSandHookName(); public static native String getInstallerConfigPath(String suffix); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java index 07953b168..80bb8ce20 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java @@ -1,14 +1,14 @@ package com.elderdrivers.riru.edxp.hooker; -import com.elderdrivers.riru.edxp.config.ConfigManager; +import com.elderdrivers.riru.edxp.common.BuildConfig; +import com.elderdrivers.riru.edxp.core.EdxpImpl; +import com.elderdrivers.riru.edxp.core.Main; import com.elderdrivers.riru.edxp.util.Utils; -import java.io.File; -import java.io.FileInputStream; +import java.io.ByteArrayInputStream; import java.io.IOException; import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XC_MethodReplacement; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; @@ -43,10 +43,27 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Utils.logD("reloadXposedProp already done, skip..."); return; } - File file = new File(ConfigManager.getXposedPropPath()); - FileInputStream is = null; - try { - is = new FileInputStream(file); + //version=92.0-$version ($backend) + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("version="); + stringBuilder.append(XposedBridge.getXposedVersion()); + stringBuilder.append(".0-"); + stringBuilder.append(BuildConfig.VERSION_NAME); + stringBuilder.append(" ("); + String variant = "None"; + switch (Main.getEdxpVariant()) { + case EdxpImpl.NONE: + break; + case EdxpImpl.YAHFA: + variant = "YAHFA"; + break; + case EdxpImpl.SANDHOOK: + variant = "SandHook"; + break; + } + stringBuilder.append(variant); + stringBuilder.append(")"); + try (ByteArrayInputStream is = new ByteArrayInputStream(stringBuilder.toString().getBytes())) { Object props = XposedHelpers.callStaticMethod(InstallZipUtil, "parseXposedProp", is); synchronized (thisObject) { @@ -55,14 +72,7 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Utils.logD("reloadXposedProp done..."); param.setResult(null); } catch (IOException e) { - Utils.logE("Could not read " + file.getPath(), e); - } finally { - if (is != null) { - try { - is.close(); - } catch (IOException ignored) { - } - } + Utils.logE("Could not reloadXposedProp", e); } } }); diff --git a/edxp-core/build.gradle b/edxp-core/build.gradle index e2bc209d5..872c941d1 100644 --- a/edxp-core/build.gradle +++ b/edxp-core/build.gradle @@ -8,29 +8,12 @@ apply plugin: 'com.android.library' static def calcSha256(file) { def md = MessageDigest.getInstance("SHA-256") file.eachByte 4096, { bytes, size -> - md.update(bytes, 0, size); + md.update(bytes, 0, size) } return md.digest().encodeHex() } -// Values set here will be overriden by AppVeyor, feel free to modify during development. -def buildVersionName = 'v0.5.0.8' -def buildVersionCode = 233 - -if (System.env.APPVEYOR_BUILD_VERSION != null) { - buildVersionName = "v${System.getenv('appveyor_build_version')}" -} - -if (System.env.APPVEYOR_BUILD_NUMBER != null) { - // Split is necessary because PRs set the build number to "1234-something". - def parts = System.env.APPVEYOR_BUILD_NUMBER.split('-') - buildVersionCode = Integer.valueOf(parts[0]) -} - -version buildVersionName - ext { - versionCode = buildVersionCode module_name = "EdXposed" jar_dest_dir = "${projectDir}/template_override/system/framework/" is_windows = OperatingSystem.current().isWindows() @@ -60,8 +43,8 @@ android { cppFlags "-std=c++17 -ffixed-x18 -Qunused-arguments -frtti -fomit-frame-pointer" cFlags "-std=gnu99 -ffixed-x18 -Qunused-arguments -frtti -fomit-frame-pointer" arguments "-DRIRU_MODULE_API_VERSION=$moduleMaxRiruApiVersion", - "-DRIRU_MODULE_VERSION=$buildVersionCode", - "-DRIRU_MODULE_VERSION_NAME:STRING=\"$buildVersionName\"" + "-DRIRU_MODULE_VERSION=$rootProject.ext.versionCode", + "-DRIRU_MODULE_VERSION_NAME:STRING=\"$rootProject.ext.versionName\"" } } } @@ -123,19 +106,13 @@ afterEvaluate { dependsOn prepareJarsTask, "assemble${variantCapped}" delete file(zipPathMagiskRelease) doFirst { - copy { - from "${projectDir}/tpl/edconfig.tpl" - into templateFrameworkPath - rename "edconfig.tpl", "edconfig.jar" - expand(version: "$version", backend: "$backend") - } copy { from "${projectDir}/tpl/module.prop.tpl" into templateRootPath rename "module.prop.tpl", "module.prop" expand(moduleId: "$magiskModuleId", backend: "$backendCapped", - versionName: "$version" + " ($backend)", - versionCode: "$versionCode", authorList: "$authorList") + versionName: "$rootProject.ext.versionName" + " ($backend)", + versionCode: "$rootProject.ext.versionCode", authorList: "$authorList") filter(FixCrLfFilter.class, eol: FixCrLfFilter.CrLf.newInstance("lf")) } copy { @@ -143,8 +120,8 @@ afterEvaluate { into "$templateRootPath/riru" rename "riru_module.prop.tpl", "module.prop.new" expand(minApi: "$moduleMinRiruApiVersion", - versionName: "$version" + " ($backend)", - versionCode: "$versionCode", authorList: "$authorList") + versionName: "$rootProject.ext.versionName" + " ($backend)", + versionCode: "$rootProject.ext.versionCode", authorList: "$authorList") filter(FixCrLfFilter.class, eol: FixCrLfFilter.CrLf.newInstance("lf")) } } @@ -196,7 +173,7 @@ afterEvaluate { def zipTask = task("zip${backendCapped}${variantCapped}", type: Zip) { dependsOn prepareMagiskFilesTask - archiveName "${module_name}-${backend}-${project.version}-${variantLowered}.zip" + archiveName "${module_name}-${backend}-${rootProject.ext.versionName}-${variantLowered}.zip" destinationDir file("$projectDir/release") from "$zipPathMagiskRelease" } diff --git a/edxp-core/src/main/cpp/main/src/config_manager.h b/edxp-core/src/main/cpp/main/src/config_manager.h index 45815473b..b5f1be1c5 100644 --- a/edxp-core/src/main/cpp/main/src/config_manager.h +++ b/edxp-core/src/main/cpp/main/src/config_manager.h @@ -15,7 +15,6 @@ namespace edxp { static const std::string kPrimaryInstallerPkgName = "org.meowcat.edxposed.manager"; static const std::string kLegacyInstallerPkgName = "de.robv.android.xposed.installer"; - static const std::string kXposedPropPath = "/system/framework/edconfig.jar"; class ConfigManager { public: @@ -44,8 +43,6 @@ namespace edxp { inline auto GetInstallerPackageName() const { return installer_pkg_name_; } - inline auto GetXposedPropPath() const { return kXposedPropPath; } - inline auto GetLibSandHookName() const { return kLibSandHookName; } inline auto GetDataPathPrefix() const { return data_path_prefix_; } diff --git a/edxp-core/src/main/cpp/main/src/jni/edxp_config_manager.cpp b/edxp-core/src/main/cpp/main/src/jni/edxp_config_manager.cpp index 1190ce4d9..1321de28c 100644 --- a/edxp-core/src/main/cpp/main/src/jni/edxp_config_manager.cpp +++ b/edxp-core/src/main/cpp/main/src/jni/edxp_config_manager.cpp @@ -31,10 +31,6 @@ namespace edxp { return env->NewStringUTF(ConfigManager::GetInstance()->GetInstallerPackageName().c_str()); } - static jstring ConfigManager_getXposedPropPath(JNI_START) { - return env->NewStringUTF(ConfigManager::GetInstance()->GetXposedPropPath().c_str()); - } - static jstring ConfigManager_getLibSandHookName(JNI_START) { return env->NewStringUTF(ConfigManager::GetInstance()->GetLibSandHookName().c_str()); } @@ -67,7 +63,6 @@ namespace edxp { NATIVE_METHOD(ConfigManager, isDeoptBootImageEnabled, "()Z"), NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"), NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"), - NATIVE_METHOD(ConfigManager, getXposedPropPath, "()Ljava/lang/String;"), NATIVE_METHOD(ConfigManager, getLibSandHookName, "()Ljava/lang/String;"), NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"), NATIVE_METHOD(ConfigManager, getInstallerConfigPath, diff --git a/edxp-core/template_override/customize.sh b/edxp-core/template_override/customize.sh index dd1502161..ea34a7e26 100644 --- a/edxp-core/template_override/customize.sh +++ b/edxp-core/template_override/customize.sh @@ -45,9 +45,6 @@ JAR_EDDALVIKDX="$(getRandomNameExist 8 "" ".dex" " JAR_EDDEXMAKER="$(getRandomNameExist 8 "" ".dex" " /system/framework ").dex" -#JAR_EDCONFIG="$(getRandomNameExist 8 "" ".jar" " -#/system/framework -#").jar" LIB_RIRU_EDXP="libriru_${RIRU_EDXP}.so" LIB_SANDHOOK_EDXP="lib$(getRandomNameExist 13 "lib" ".so" " /system/lib @@ -238,7 +235,6 @@ extract "${ZIPFILE}" 'sepolicy.rule' "${MODPATH}" extract "${ZIPFILE}" 'post-fs-data.sh' "${MODPATH}" extract "${ZIPFILE}" 'uninstall.sh' "${MODPATH}" -extract "${ZIPFILE}" 'system/framework/edconfig.jar' "${MODPATH}" extract "${ZIPFILE}" 'system/framework/eddalvikdx.dex' "${MODPATH}" extract "${ZIPFILE}" 'system/framework/eddexmaker.dex' "${MODPATH}" extract "${ZIPFILE}" 'system/framework/edxp.dex' "${MODPATH}" @@ -292,7 +288,6 @@ ui_print "- Copying framework libraries" mv "${MODPATH}/system/framework/eddalvikdx.dex" "${MODPATH}/system/framework/${JAR_EDDALVIKDX}" mv "${MODPATH}/system/framework/edxp.dex" "${MODPATH}/system/framework/${JAR_EDXP}" mv "${MODPATH}/system/framework/eddexmaker.dex" "${MODPATH}/system/framework/${JAR_EDDEXMAKER}" -#mv "${MODPATH}/system/framework/edconfig.jar" "${MODPATH}/system/framework/${JAR_EDCONFIG}" mv "${MODPATH}/system/lib/libriru_edxp.so" "${MODPATH}/system/lib/${LIB_RIRU_EDXP}" if [[ "${IS64BIT}" == true ]]; then @@ -309,13 +304,11 @@ fi ui_print "- Resetting libraries path" sed -i 's:/system/framework/edxp.dex\:/system/framework/eddalvikdx.dex\:/system/framework/eddexmaker.dex:/system/framework/'"${JAR_EDXP}"'\:/system/framework/'"${JAR_EDDALVIKDX}"'\:/system/framework/'"${JAR_EDDEXMAKER}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}" -#sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}" 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}" if [[ "${IS64BIT}" == true ]]; then sed -i 's:/system/framework/edxp.dex\:/system/framework/eddalvikdx.dex\:/system/framework/eddexmaker.dex:/system/framework/'"${JAR_EDXP}"'\:/system/framework/'"${JAR_EDDALVIKDX}"'\:/system/framework/'"${JAR_EDDEXMAKER}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}" -# sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}" 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 diff --git a/edxp-core/tpl/edconfig.tpl b/edxp-core/tpl/edconfig.tpl deleted file mode 100644 index 41f743549..000000000 --- a/edxp-core/tpl/edconfig.tpl +++ /dev/null @@ -1,5 +0,0 @@ -version=92.0-$version ($backend) -arch=arm64 -minsdk=26 -maxsdk=29 -requires:fbe_aware=1 diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java index fde28f5c2..fbfe8c374 100644 --- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java @@ -8,8 +8,6 @@ public interface EdxpConfig { String getInstallerPackageName(); - String getXposedPropPath(); - String getLibSandHookName(); boolean isDynamicModulesMode(); From d1c8d809b2a3e2fe0bddfafddd2a8589675cf569 Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Sat, 28 Nov 2020 12:23:50 +0800 Subject: [PATCH 2/2] Drop support for ancient xposed installer --- edxp-core/src/main/cpp/main/src/config_manager.cpp | 8 +------- edxp-core/src/main/cpp/main/src/config_manager.h | 1 - edxp-core/template_override/customize.sh | 2 +- edxp-core/template_override/post-fs-data.sh | 2 +- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/edxp-core/src/main/cpp/main/src/config_manager.cpp b/edxp-core/src/main/cpp/main/src/config_manager.cpp index 9ec80252f..b1f54f880 100644 --- a/edxp-core/src/main/cpp/main/src/config_manager.cpp +++ b/edxp-core/src/main/cpp/main/src/config_manager.cpp @@ -29,11 +29,6 @@ namespace edxp { LOGI("using installer %s", kPrimaryInstallerPkgName.c_str()); return kPrimaryInstallerPkgName; } - data_test_path = data_path_prefix_ / kLegacyInstallerPkgName; - if (path_exists(data_test_path)) { - LOGI("using installer %s", kLegacyInstallerPkgName.c_str()); - return kLegacyInstallerPkgName; - } LOGE("no supported installer app found, using default: %s", kPrimaryInstallerPkgName.c_str()); return kPrimaryInstallerPkgName; @@ -134,8 +129,7 @@ namespace edxp { package_name.c_str()); use_white_list = use_white_list_snapshot_; } - if (package_name == kPrimaryInstallerPkgName - || package_name == kLegacyInstallerPkgName) { + if (package_name == kPrimaryInstallerPkgName) { // always hook installer apps return true; } diff --git a/edxp-core/src/main/cpp/main/src/config_manager.h b/edxp-core/src/main/cpp/main/src/config_manager.h index b5f1be1c5..657c31298 100644 --- a/edxp-core/src/main/cpp/main/src/config_manager.h +++ b/edxp-core/src/main/cpp/main/src/config_manager.h @@ -14,7 +14,6 @@ namespace edxp { static const std::string kPrimaryInstallerPkgName = "org.meowcat.edxposed.manager"; - static const std::string kLegacyInstallerPkgName = "de.robv.android.xposed.installer"; class ConfigManager { public: diff --git a/edxp-core/template_override/customize.sh b/edxp-core/template_override/customize.sh index ea34a7e26..9529ce1a0 100644 --- a/edxp-core/template_override/customize.sh +++ b/edxp-core/template_override/customize.sh @@ -267,7 +267,7 @@ else fi fi -if [[ "$(pm path org.meowcat.edxposed.manager)" == "" && "$(pm path de.robv.android.xposed.installer)" == "" ]]; then +if [[ "$(pm path org.meowcat.edxposed.manager)" == "" ]]; then NO_MANAGER=true fi diff --git a/edxp-core/template_override/post-fs-data.sh b/edxp-core/template_override/post-fs-data.sh index b0de91309..96281fd32 100644 --- a/edxp-core/template_override/post-fs-data.sh +++ b/edxp-core/template_override/post-fs-data.sh @@ -146,7 +146,7 @@ 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)" == "" ]]; then NO_MANAGER=true fi if [[ ${NO_MANAGER} == true ]]; then