diff --git a/app/src/main/java/com/oracle/dalvik/VMLauncher.java b/app/src/main/java/com/oracle/dalvik/VMLauncher.java new file mode 100644 index 000000000..9586e15fc --- /dev/null +++ b/app/src/main/java/com/oracle/dalvik/VMLauncher.java @@ -0,0 +1,7 @@ +package com.oracle.dalvik; + +public final class VMLauncher { + private VMLauncher() { + } + public static native int launchJVM(String[] args); +} diff --git a/app/src/main/java/net/kdt/pojavlaunch/BinaryExecutor.java b/app/src/main/java/net/kdt/pojavlaunch/BinaryExecutor.java index 9396f2e5c..59517c7fa 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/BinaryExecutor.java +++ b/app/src/main/java/net/kdt/pojavlaunch/BinaryExecutor.java @@ -4,6 +4,8 @@ package net.kdt.pojavlaunch; public class BinaryExecutor { public static void initJavaRuntime() { + chdir(Tools.MAIN_PATH); + dlopen(Tools.homeJreDir + "/lib/jli/libjli.so"); dlopen(Tools.homeJreDir + "/lib/server/libjvm.so"); dlopen(Tools.homeJreDir + "/lib/libverify.so"); @@ -12,8 +14,6 @@ public class BinaryExecutor dlopen(Tools.homeJreDir + "/lib/libnio.so"); dlopen(Tools.homeJreDir + "/lib/libawt.so"); dlopen(Tools.homeJreDir + "/lib/libawt_headless.so"); - - chdir(Tools.MAIN_PATH); } public static native int chdir(String path); diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index c2f5a4097..4379dd5ec 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -29,6 +29,7 @@ import org.lwjgl.input.*; import org.lwjgl.opengl.*; import android.app.AlertDialog; +import com.oracle.dalvik.*; public class MainActivity extends AppCompatActivity implements OnTouchListener, OnClickListener { @@ -673,7 +674,8 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, AndroidContextImplementation.display = egl10.eglGetCurrentDisplay(); AndroidContextImplementation.read = egl10.eglGetCurrentSurface(EGL10.EGL_READ); AndroidContextImplementation.draw = egl10.eglGetCurrentSurface(EGL10.EGL_DRAW); - egl10.eglMakeCurrent(AndroidContextImplementation.display, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT); + // egl10.eglMakeCurrent(AndroidContextImplementation.display, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT); + System.out.println(new StringBuffer().append("Gave up context: ").append(AndroidContextImplementation.context).toString()); AndroidDisplay.windowWidth += navBarHeight; @@ -1018,10 +1020,11 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, launchClassPath = Tools.generateLaunchClassPath(mProfile.getVersion()); launchLibrarySearchPath = getApplicationInfo().nativeLibraryDir; - +/* System.out.println("> Running Minecraft with classpath:"); System.out.println(launchClassPath); System.out.println(); +*/ redirectStdio(); BinaryExecutor.initJavaRuntime(); @@ -1029,7 +1032,8 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, BinaryExecutor.dlopen(Tools.homeJreDir + "/bin/java"); List javaArgList = new ArrayList(); - javaArgList.add(Tools.homeJreDir + "/bin/java"); + // javaArgList.add(Tools.homeJreDir + "/bin/java"); + javaArgList.add("java"); // javaArgList.add("-Xms512m"); javaArgList.add("-Xmx512m"); @@ -1058,6 +1062,10 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, javaArgList.add(mVersionInfo.mainClass); javaArgList.addAll(Arrays.asList(launchArgs)); + StringBuilder strb = new StringBuilder(); + for (String cmd : javaArgList) {strb.append(cmd + " ");} + appendlnToLog("Java arguments: " + strb.toString() + "\n", false); + /* ShellProcessOperation sp = new ShellProcessOperation(new ShellProcessOperation.OnPrintListener(){ @@ -1071,7 +1079,9 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, sp.writeToProcess(javaArgList.toArray(new String[0])); */ - BinaryExecutor.executeBinary(javaArgList.toArray(new String[0])); + // BinaryExecutor.executeBinary(javaArgList.toArray(new String[0])); + + VMLauncher.launchJVM(javaArgList.toArray(new String[0])); /* "-Dorg.apache.logging.log4j.level=INFO", diff --git a/app/src/main/jniLibs/arm64-v8a/libbinexecutor.so b/app/src/main/jniLibs/arm64-v8a/libbinexecutor.so index d5d67f662..b73da1c75 100644 Binary files a/app/src/main/jniLibs/arm64-v8a/libbinexecutor.so and b/app/src/main/jniLibs/arm64-v8a/libbinexecutor.so differ diff --git a/app/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so b/app/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so index 3fe8ee6d1..506323fcd 100644 Binary files a/app/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so and b/app/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so differ diff --git a/app/src/main/jniLibs/armeabi-v7a/libbinexecutor.so b/app/src/main/jniLibs/armeabi-v7a/libbinexecutor.so index a19de2b5b..dcc4c4e22 100644 Binary files a/app/src/main/jniLibs/armeabi-v7a/libbinexecutor.so and b/app/src/main/jniLibs/armeabi-v7a/libbinexecutor.so differ diff --git a/app/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so b/app/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so index 108bb03ea..719f8db65 100644 Binary files a/app/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so and b/app/src/main/jniLibs/armeabi-v7a/liblwjgl_opengl.so differ diff --git a/app/src/main/jniLibs/x86/libbinexecutor.so b/app/src/main/jniLibs/x86/libbinexecutor.so index 441575ff8..9a7480674 100644 Binary files a/app/src/main/jniLibs/x86/libbinexecutor.so and b/app/src/main/jniLibs/x86/libbinexecutor.so differ diff --git a/app/src/main/jniLibs/x86/liblwjgl_opengl.so b/app/src/main/jniLibs/x86/liblwjgl_opengl.so index 13926a85f..d3a513e5f 100644 Binary files a/app/src/main/jniLibs/x86/liblwjgl_opengl.so and b/app/src/main/jniLibs/x86/liblwjgl_opengl.so differ diff --git a/app/src/main/jniLibs/x86_64/libbinexecutor.so b/app/src/main/jniLibs/x86_64/libbinexecutor.so index f33718e50..bf89a7c46 100644 Binary files a/app/src/main/jniLibs/x86_64/libbinexecutor.so and b/app/src/main/jniLibs/x86_64/libbinexecutor.so differ diff --git a/app/src/main/jniLibs/x86_64/liblwjgl_opengl.so b/app/src/main/jniLibs/x86_64/liblwjgl_opengl.so index 13d5e105a..7bd5e099d 100644 Binary files a/app/src/main/jniLibs/x86_64/liblwjgl_opengl.so and b/app/src/main/jniLibs/x86_64/liblwjgl_opengl.so differ