From ad922f352131f00b403794aaccefa6ff8e02088c Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Fri, 16 Oct 2020 15:34:09 +0700 Subject: [PATCH] Preload libjvm.so --- .../java/net/kdt/pojavlaunch/JREUtils.java | 22 +++++++++---------- app/src/main/jni/jre_launcher.c | 11 +++++----- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java b/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java index 575940045..219c21edb 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java +++ b/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java @@ -30,18 +30,16 @@ public class JREUtils public static void initJavaRuntime() { dlopen(findInLdLibPath("libjli.so")); - - // As we set LD_LIBRARY_PATH, so it's not required to preload them - /* - dlopen("libjvm.so"); - dlopen(Tools.homeJreDir + "/lib/libverify.so"); - dlopen(Tools.homeJreDir + "/lib/libjava.so"); - // dlopen(Tools.homeJreDir + "/lib/libjsig.so"); - dlopen(Tools.homeJreDir + "/lib/libnet.so"); - dlopen(Tools.homeJreDir + "/lib/libnio.so"); - dlopen(Tools.homeJreDir + "/lib/libawt.so"); - dlopen(Tools.homeJreDir + "/lib/libawt_headless.so"); - */ + dlopen(findInLdLibPath("libjvm.so")); + /* + dlopen(findInLdLibPath("libverify.so")); + dlopen(findInLdLibPath("libjava.so")); + // dlopen(findInLdLibPath("/lib/libjsig.so")); + dlopen(findInLdLibPath("libnet.so")); + dlopen(findInLdLibPath("libnio.so")); + dlopen(findInLdLibPath("libawt.so")); + dlopen(findInLdLibPath("libawt_headless.so")); + */ dlopen(nativeLibDir + "/libopenal.so"); if (LauncherPreferences.PREF_CUSTOM_OPENGL_LIBNAME.equals("libgl04es.so")) { diff --git a/app/src/main/jni/jre_launcher.c b/app/src/main/jni/jre_launcher.c index 6ad50b182..402e24b58 100644 --- a/app/src/main/jni/jre_launcher.c +++ b/app/src/main/jni/jre_launcher.c @@ -66,14 +66,13 @@ static void logArgs(int argc, char** argv) { } JNIEXPORT jint JNICALL Java_com_oracle_dalvik_VMLauncher_createLaunchMainJVM(JNIEnv *env, jclass clazz, jobjectArray vmArgArr, jstring mainClassStr, jobjectArray mainArgArr) { - /* void *libjvm = dlopen("libjvm.so", RTLD_NOW + RTLD_GLOBAL); if (libjvm == NULL) { LOGE("dlopen failed to open libjvm.so (dlerror %s).", dlerror()); return -1; } - */ - JNI_CreateJavaVM_func *jl_JNI_CreateJavaVM = (JNI_CreateJavaVM_func *) dlsym(RTLD_NEXT /* libjvm */, "JNI_CreateJavaVM"); + + JNI_CreateJavaVM_func *jl_JNI_CreateJavaVM = (JNI_CreateJavaVM_func *) dlsym(libjvm, "JNI_CreateJavaVM"); if (jl_JNI_CreateJavaVM == NULL) { LOGE("dlsym failed to get JNI_CreateJavaVM (dlerror %s).", dlerror()); return -1; @@ -116,7 +115,7 @@ JNIEXPORT jint JNICALL Java_com_oracle_dalvik_VMLauncher_createLaunchMainJVM(JNI static jint launchJVM(int argc, char** argv) { logArgs(argc, argv); -/* + void* libjli = dlopen("libjli.so", RTLD_LAZY | RTLD_GLOBAL); // Boardwalk: silence @@ -126,9 +125,9 @@ static jint launchJVM(int argc, char** argv) { return -1; } LOGD("Found JLI lib"); -*/ + JLI_Launch_func *pJLI_Launch = - (JLI_Launch_func *)dlsym(RTLD_NEXT /* libjli */, "JLI_Launch"); + (JLI_Launch_func *)dlsym(libjli, "JLI_Launch"); // Boardwalk: silence // LOGD("JLI_Launch = 0x%x", *(int*)&pJLI_Launch);