[Code cleanup] Unnecessary codes, JVM launch types

This commit is contained in:
khanhduytran0
2020-11-05 19:53:34 +07:00
parent ffa6d7d0d7
commit 7c0f688f89
5 changed files with 39 additions and 170 deletions

View File

@@ -4,6 +4,4 @@ public final class VMLauncher {
private VMLauncher() {
}
public static native int launchJVM(String[] args);
public static native int createLaunchMainJVM(String[] vmArgs, String mainClass, String[] mainArgs);
}

View File

@@ -141,7 +141,7 @@ public class InstallModActivity extends LoggableActivity {
System.out.println(Arrays.toString(javaArgList.toArray(new String[0])));
//JREUtils.redirectStdio(false);
JREUtils.setJavaEnvironment(this, Tools.LAUNCH_TYPE);
JREUtils.setJavaEnvironment(this);
JREUtils.initJavaRuntime();
JREUtils.chdir(Tools.MAIN_PATH);

View File

@@ -150,21 +150,21 @@ public class JREUtils
LD_LIBRARY_PATH = ldLibraryPath.toString();
}
public static void setJavaEnvironment(Context ctx, int launchType) throws Throwable {
setEnvironment(launchType, "JAVA_HOME", Tools.homeJreDir);
setEnvironment(launchType, "HOME", Tools.MAIN_PATH);
setEnvironment(launchType, "TMPDIR", ctx.getCacheDir().getAbsolutePath());
setEnvironment(launchType, "LIBGL_MIPMAP", "3");
setEnvironment(launchType, "MESA_GLSL_CACHE_DIR", ctx.getCacheDir().getAbsolutePath());
setEnvironment(launchType, "LD_LIBRARY_PATH", LD_LIBRARY_PATH);
setEnvironment(launchType, "PATH", Tools.homeJreDir + "/bin:" + Os.getenv("PATH"));
public static void setJavaEnvironment(Context ctx) throws Throwable {
setEnvironment("JAVA_HOME", Tools.homeJreDir);
setEnvironment("HOME", Tools.MAIN_PATH);
setEnvironment("TMPDIR", ctx.getCacheDir().getAbsolutePath());
setEnvironment("LIBGL_MIPMAP", "3");
setEnvironment("MESA_GLSL_CACHE_DIR", ctx.getCacheDir().getAbsolutePath());
setEnvironment("LD_LIBRARY_PATH", LD_LIBRARY_PATH);
setEnvironment("PATH", Tools.homeJreDir + "/bin:" + Os.getenv("PATH"));
setEnvironment(launchType, "REGAL_GL_VENDOR", "Android");
setEnvironment(launchType, "REGAL_GL_RENDERER", "Regal");
setEnvironment(launchType, "REGAL_GL_VERSION", "4.5");
setEnvironment("REGAL_GL_VENDOR", "Android");
setEnvironment("REGAL_GL_RENDERER", "Regal");
setEnvironment("REGAL_GL_VERSION", "4.5");
setEnvironment(launchType, "AWTSTUB_WIDTH", Integer.toString(CallbackBridge.windowWidth));
setEnvironment(launchType, "AWTSTUB_HEIGHT", Integer.toString(CallbackBridge.windowHeight));
setEnvironment("AWTSTUB_WIDTH", Integer.toString(CallbackBridge.windowWidth));
setEnvironment("AWTSTUB_HEIGHT", Integer.toString(CallbackBridge.windowHeight));
File customEnvFile = new File(Tools.MAIN_PATH, "custom_env.txt");
if (customEnvFile.exists() && customEnvFile.isFile()) {
@@ -173,7 +173,7 @@ public class JREUtils
while ((line = reader.readLine()) != null) {
// Not use split() as only split first one
int index = line.indexOf("=");
setEnvironment(launchType, line.substring(0, index), line.substring(index + 1));
setEnvironment(line.substring(0, index), line.substring(index + 1));
}
reader.close();
}
@@ -185,10 +185,7 @@ public class JREUtils
// return ldLibraryPath;
}
private static void setEnvironment(int launchType, String name, String value) throws Throwable {
if (launchType == Tools.LTYPE_PROCESS) {
Tools.mLaunchShell.writeToProcess("export " + name + "=" + value);
}
private static void setEnvironment(String name, String value) throws Throwable {
Os.setenv(name, value, true);
}

View File

@@ -67,12 +67,6 @@ public final class Tools
"1.9"
};
public static final int LTYPE_PROCESS = 0;
public static final int LTYPE_INVOCATION = 1;
public static final int LTYPE_CREATEJAVAVM = 2;
public static final int LAUNCH_TYPE = LTYPE_INVOCATION;
public static ShellProcessOperation mLaunchShell;
private static int exitCode = 0;
public static void launchMinecraft(final LoggableActivity ctx, MCProfile.Builder profile, JMinecraftVersionList.Version versionInfo) throws Throwable {
@@ -88,100 +82,40 @@ public final class Tools
String launchClassPath = generateLaunchClassPath(profile.getVersion());
System.out.println("Java Classpath: " + launchClassPath);
if (LAUNCH_TYPE == LTYPE_CREATEJAVAVM) {
javaArgList.add("-Djava.class.path=" + launchClassPath);
} else {
/*
if (LAUNCH_TYPE == LTYPE_PROCESS) {
javaArgList.add("-Dglfwstub.eglContext=" + Tools.getEGLAddress("Context", AndroidContextImplementation.context));
String eglDisplay = Tools.getEGLAddress("Display", AndroidContextImplementation.display);
if (eglDisplay.equals("1")) {
eglDisplay = Tools.getEGLAddress("Display", ((EGL10) EGLContext.getEGL()).eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY));
}
javaArgList.add("-Dglfwstub.eglDisplay=" + eglDisplay);
javaArgList.add("-Dglfwstub.eglSurfaceRead=" + Tools.getEGLAddress("Surface", AndroidContextImplementation.read));
javaArgList.add("-Dglfwstub.eglSurfaceDraw=" + Tools.getEGLAddress("Surface", AndroidContextImplementation.draw));
}
*/
getJavaArgs(ctx, javaArgList);
getJavaArgs(ctx, javaArgList);
javaArgList.add("-cp");
/*
if (versionInfo.mainClass.equals("net.minecraft.launchwrapper.Launch")) {
// Also preload LWJGL3 to fix crash on send input events
javaArgList.add(Tools.MAIN_PATH + "/lwjgl3/ClassWrapper.jar:" + getLWJGL3ClassPath());
javaArgList.add("ClassWrapper");
javaArgList.add(launchClassPath);
} else { */
javaArgList.add(getLWJGL3ClassPath() + ":" + launchClassPath);
// }
javaArgList.add("-cp");
/*
if (versionInfo.mainClass.equals("net.minecraft.launchwrapper.Launch")) {
// Also preload LWJGL3 to fix crash on send input events
javaArgList.add(Tools.MAIN_PATH + "/lwjgl3/ClassWrapper.jar:" + getLWJGL3ClassPath());
javaArgList.add("ClassWrapper");
javaArgList.add(launchClassPath);
} else { */
javaArgList.add(getLWJGL3ClassPath() + ":" + launchClassPath);
// }
javaArgList.add(versionInfo.mainClass);
javaArgList.addAll(Arrays.asList(launchArgs));
/*
javaArgList.add("-cp");
javaArgList.add(launchClassPath);
javaArgList.add(versionInfo.mainClass);
javaArgList.addAll(Arrays.asList(launchArgs));
*/
}
if (LAUNCH_TYPE == LTYPE_PROCESS) {
mLaunchShell = new ShellProcessOperation(new ShellProcessOperation.OnPrintListener(){
@Override
public void onPrintLine(String text) {
// ctx.appendToLog(text, false);
}
});
mLaunchShell.initInputStream(ctx);
}
javaArgList.add(versionInfo.mainClass);
javaArgList.addAll(Arrays.asList(launchArgs));
// can fix java?
// setEnvironment("ORIGIN", Tools.homeJreDir + "/lib");
JREUtils.setJavaEnvironment(ctx, Tools.LAUNCH_TYPE);
JREUtils.setJavaEnvironment(ctx);
if (LAUNCH_TYPE == LTYPE_PROCESS) {
mLaunchShell.writeToProcess("cd $HOME");
JREUtils.initJavaRuntime();
JREUtils.chdir(Tools.MAIN_PATH);
mLaunchShell.writeToProcess(javaArgList.toArray(new String[0]));
int exitCode = mLaunchShell.waitFor();
if (exitCode != 0) {
Tools.showError(ctx, new ErrnoException("java", exitCode), false);
}
} else { // Type Invocation
// Is it need?
/*
Os.dup2(FileDescriptor.err, OsConstants.STDERR_FILENO);
Os.dup2(FileDescriptor.out, OsConstants.STDOUT_FILENO);
*/
JREUtils.initJavaRuntime();
JREUtils.chdir(Tools.MAIN_PATH);
if (new File(Tools.MAIN_PATH, "strace.txt").exists()) {
startStrace(android.os.Process.myTid());
}
if (LAUNCH_TYPE == LTYPE_CREATEJAVAVM) {
VMLauncher.createLaunchMainJVM(javaArgList.toArray(new String[0]), versionInfo.mainClass, launchArgs);
} else {
// Test
/*
VMLauncher.launchJVM(new String[]{
Tools.homeJreDir + "/bin/java",
"-invalidarg"
});
*/
exitCode = VMLauncher.launchJVM(javaArgList.toArray(new String[0]));
ctx.appendlnToLog("Java Exit code: " + exitCode);
}
if (new File(Tools.MAIN_PATH, "strace.txt").exists()) {
startStrace(android.os.Process.myTid());
}
exitCode = VMLauncher.launchJVM(javaArgList.toArray(new String[0]));
ctx.appendlnToLog("Java Exit code: " + exitCode);
ctx.runOnUiThread(new Runnable(){
@Override
public void run() {