build: dyn namespaces
This commit is contained in:
@@ -7,7 +7,7 @@ plugins {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "me.rhunk.snapenhance"
|
||||
namespace = rootProject.ext["applicationId"].toString()
|
||||
compileSdk = 34
|
||||
|
||||
buildFeatures {
|
||||
|
||||
@@ -4,7 +4,7 @@ plugins {
|
||||
alias(libs.plugins.kotlinAndroid)
|
||||
}
|
||||
android {
|
||||
namespace = "me.rhunk.snapenhance.core"
|
||||
namespace = rootProject.ext["applicationId"].toString() + ".core"
|
||||
compileSdk = 34
|
||||
|
||||
buildFeatures {
|
||||
|
||||
@@ -5,7 +5,7 @@ plugins {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "me.rhunk.snapenhance.mapper"
|
||||
namespace = rootProject.ext["applicationId"].toString() + ".mapper"
|
||||
compileSdk = 34
|
||||
|
||||
kotlinOptions {
|
||||
|
||||
@@ -4,14 +4,33 @@ plugins {
|
||||
alias(libs.plugins.kotlinAndroid)
|
||||
}
|
||||
|
||||
val nativeName = System.nanoTime().toString(16)
|
||||
|
||||
android {
|
||||
namespace = "me.rhunk.snapenhance.nativelib"
|
||||
namespace = rootProject.ext["applicationId"].toString() + ".nativelib"
|
||||
compileSdk = 34
|
||||
|
||||
buildFeatures {
|
||||
buildConfig = true
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
buildConfigField("String", "NATIVE_NAME", "\"$nativeName\"")
|
||||
packaging {
|
||||
jniLibs {
|
||||
excludes += "**/libdobby.so"
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
cppFlags("")
|
||||
arguments += listOf(
|
||||
"-DOBFUSCATED_NAME=$nativeName",
|
||||
"-DBUILD_NAMESPACE=${namespace!!.replace(".", "/")}"
|
||||
)
|
||||
}
|
||||
ndk {
|
||||
//noinspection ChromeOsAbiSupport
|
||||
abiFilters += listOf("arm64-v8a", "armeabi-v7a")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,11 @@ add_library(${CMAKE_PROJECT_NAME} SHARED
|
||||
src/library.cpp
|
||||
)
|
||||
|
||||
add_compile_definitions(BUILD_NAMESPACE="${BUILD_NAMESPACE}")
|
||||
target_link_libraries(${CMAKE_PROJECT_NAME}
|
||||
android
|
||||
log
|
||||
dobby_static
|
||||
)
|
||||
|
||||
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${OBFUSCATED_NAME})
|
||||
@@ -112,9 +112,11 @@ void JNICALL init(JNIEnv *env, jobject clazz, jobject classloader) {
|
||||
|
||||
// native lib object
|
||||
native_lib_object = env->NewGlobalRef(clazz);
|
||||
native_lib_on_unary_call_method = env->GetMethodID(env->GetObjectClass(clazz),
|
||||
"onNativeUnaryCall",
|
||||
"(Ljava/lang/String;[B)Lme/rhunk/snapenhance/nativelib/NativeRequestData;");
|
||||
native_lib_on_unary_call_method = env->GetMethodID(
|
||||
env->GetObjectClass(clazz),
|
||||
"onNativeUnaryCall",
|
||||
"(Ljava/lang/String;[B)L" BUILD_NAMESPACE "/NativeRequestData;"
|
||||
);
|
||||
|
||||
// load libclient.so
|
||||
util::load_library(env, classloader, "client");
|
||||
@@ -124,7 +126,7 @@ void JNICALL init(JNIEnv *env, jobject clazz, jobject classloader) {
|
||||
return;
|
||||
}
|
||||
//client_module.base -= 0x1000; // debugging purposes
|
||||
LOGD("libclient.so offset=%u, size=%u", client_module.base, client_module.size);
|
||||
LOGD("libclient.so base=0x%0lx, size=0x%0lx", client_module.base, client_module.size);
|
||||
|
||||
// hooks
|
||||
DobbyHook((void *) DobbySymbolResolver("libc.so", "fstat"), (void *) fstat_hook,
|
||||
@@ -159,11 +161,11 @@ JNI_OnLoad(JavaVM *vm, void *_) {
|
||||
|
||||
auto methods = std::vector<JNINativeMethod>();
|
||||
methods.push_back({"init", "(Ljava/lang/ClassLoader;)V", (void *) init});
|
||||
methods.push_back({"loadConfig", "(Lme/rhunk/snapenhance/nativelib/NativeConfig;)V",
|
||||
methods.push_back({"loadConfig", "(L" BUILD_NAMESPACE "/NativeConfig;)V",
|
||||
(void *) load_config});
|
||||
|
||||
env->RegisterNatives(
|
||||
env->FindClass("me/rhunk/snapenhance/nativelib/NativeLib"),
|
||||
env->FindClass(std::string(BUILD_NAMESPACE "/NativeLib").c_str()),
|
||||
methods.data(),
|
||||
methods.size()
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user