diff --git a/core/build.gradle.kts b/core/build.gradle.kts index ffa53506..626738e8 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -90,8 +90,8 @@ android { externalNativeBuild { cmake { abiFilters("arm64-v8a", "armeabi-v7a", "x86", "x86_64") - cppFlags("-std=c++17 -ffixed-x18 -Qunused-arguments -frtti -fomit-frame-pointer -fpie -fPIC") - cFlags("-std=gnu99 -ffixed-x18 -Qunused-arguments -frtti -fomit-frame-pointer -fpie -fPIC") + cppFlags("-std=c++20 -ffixed-x18 -Qunused-arguments -fno-rtti -fno-exceptions -fomit-frame-pointer -fpie -fPIC") + cFlags("-std=c11 -ffixed-x18 -Qunused-arguments -fno-rtti -fno-exceptions -fomit-frame-pointer -fpie -fPIC") arguments("-DRIRU_MODULE_API_VERSION=$moduleMaxRiruApiVersion", "-DRIRU_MODULE_VERSION=$verCode", "-DRIRU_MODULE_VERSION_NAME:STRING=\"$verName\"") diff --git a/core/src/main/cpp/main/src/context.cpp b/core/src/main/cpp/main/src/context.cpp index 6dfdd225..ffd5eed1 100644 --- a/core/src/main/cpp/main/src/context.cpp +++ b/core/src/main/cpp/main/src/context.cpp @@ -26,8 +26,6 @@ #include #include #include "jni/pending_hooks.h" -#include -#include #include "context.h" #include "native_hook.h" #include "jni/logger.h" @@ -59,12 +57,15 @@ namespace lspd { void Context::PreLoadDex(const std::string &dex_path) { if (LIKELY(!dex.empty())) return; - std::ifstream is(dex_path); - if (!is.good()) { - LOGE("Failed to read dex"); - return; + FILE *f = fopen(dex_path.c_str(), "rb"); + fseek(f, 0, SEEK_END); + dex.resize(ftell(f)); + rewind(f); + if (dex.size() != fread(dex.data(), 1, dex.size(), f)) { + LOGE("Read dex failed"); + dex.resize(0); } - dex.assign(std::istreambuf_iterator(is), std::istreambuf_iterator()); + fclose(f); LOGI("Loaded %s with size %zu", dex_path.c_str(), dex.size()); } diff --git a/core/src/main/cpp/main/src/context.h b/core/src/main/cpp/main/src/context.h index e00bf376..fa06516d 100644 --- a/core/src/main/cpp/main/src/context.h +++ b/core/src/main/cpp/main/src/context.h @@ -70,7 +70,7 @@ namespace lspd { jclass class_linker_class_ = nullptr; jmethodID post_fixup_static_mid_ = nullptr; bool skip_ = false; - std::vector dex{}; + std::vector dex{}; Context() {} diff --git a/core/src/main/cpp/main/src/jni/logger.cpp b/core/src/main/cpp/main/src/jni/logger.cpp index 98170e0a..6db42ac4 100644 --- a/core/src/main/cpp/main/src/jni/logger.cpp +++ b/core/src/main/cpp/main/src/jni/logger.cpp @@ -21,7 +21,6 @@ #include "logger.h" #include "native_util.h" #include "jni_helper.h" -#include #include namespace lspd { diff --git a/core/template_override/util_functions.sh b/core/template_override/util_functions.sh index 73404f80..1490f021 100644 --- a/core/template_override/util_functions.sh +++ b/core/template_override/util_functions.sh @@ -23,17 +23,20 @@ RIRU_MODULE_API_VERSION=%%%RIRU_MODULE_API_VERSION%%% RIRU_MODULE_MIN_API_VERSION=%%%RIRU_MODULE_MIN_API_VERSION%%% RIRU_MODULE_MIN_RIRU_VERSION_NAME="%%%RIRU_MODULE_MIN_RIRU_VERSION_NAME%%%" +if [ "$MAGISK_VER_CODE" -ge 21000 ]; then + MAGISK_CURRENT_RIRU_MODULE_PATH=$(magisk --path)/.magisk/modules/riru-core +else + MAGISK_CURRENT_RIRU_MODULE_PATH=/sbin/.magisk/modules/riru-core +fi check_riru_version() { - RIRU_CORE_MODULES_PATH=/data/adb/modules/riru-core - RIRU_CORE_MODULES_UPDATE_PATH=/data/adb/modules_update/riru-core - if [ ! -f "$RIRU_CORE_MODULES_UPDATE_PATH/api_version" ] && [ ! -f "$RIRU_CORE_MODULES_PATH/api_version" ]; then + if [ ! -f "$MAGISK_CURRENT_RIRU_MODULE_PATH/api_version" ] && [ ! -f "/data/adb/riru/api_version" ] && [ ! -f "/data/adb/riru/api_version.new" ]; then ui_print "*********************************************************" ui_print "! Riru $RIRU_MODULE_MIN_RIRU_VERSION_NAME or above is required" ui_print "! Please install Riru from Magisk Manager or https://github.com/RikkaApps/Riru/releases" abort "*********************************************************" fi - RIRU_API=$(cat "$RIRU_CORE_MODULES_UPDATE_PATH/api_version") || RIRU_API=$(cat "$RIRU_CORE_MODULES_PATH/api_version") || RIRU_API=0 + RIRU_API=$(cat "$MAGISK_CURRENT_RIRU_MODULE_PATH/api_version") || RIRU_API=$(cat "/data/adb/riru/api_version.new") || RIRU_API=$(cat "/data/adb/riru/api_version") || RIRU_API=0 [ "$RIRU_API" -eq "$RIRU_API" ] || RIRU_API=0 ui_print "- Riru API version: $RIRU_API" if [ "$RIRU_API" -lt $RIRU_MODULE_MIN_API_VERSION ]; then