diff --git a/FCL/src/main/assets/app_runtime/caciocavallo11/cacio-shared-1.11.2-SNAPSHOT.jar b/FCL/src/main/assets/app_runtime/caciocavallo11/cacio-shared-1.11.2-SNAPSHOT.jar new file mode 100644 index 00000000..d5da4792 Binary files /dev/null and b/FCL/src/main/assets/app_runtime/caciocavallo11/cacio-shared-1.11.2-SNAPSHOT.jar differ diff --git a/FCL/src/main/assets/app_runtime/caciocavallo11/cacio-tta-1.11.2-SNAPSHOT.jar b/FCL/src/main/assets/app_runtime/caciocavallo11/cacio-tta-1.11.2-SNAPSHOT.jar new file mode 100644 index 00000000..94039e25 Binary files /dev/null and b/FCL/src/main/assets/app_runtime/caciocavallo11/cacio-tta-1.11.2-SNAPSHOT.jar differ diff --git a/FCL/src/main/assets/app_runtime/caciocavallo11/version b/FCL/src/main/assets/app_runtime/caciocavallo11/version new file mode 100644 index 00000000..56a6051c --- /dev/null +++ b/FCL/src/main/assets/app_runtime/caciocavallo11/version @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/FCL/src/main/assets/app_runtime/java/jre11/bin-arm.tar.xz b/FCL/src/main/assets/app_runtime/java/jre11/bin-arm.tar.xz index 97bc7d7f..69e4dd04 100644 Binary files a/FCL/src/main/assets/app_runtime/java/jre11/bin-arm.tar.xz and b/FCL/src/main/assets/app_runtime/java/jre11/bin-arm.tar.xz differ diff --git a/FCL/src/main/assets/app_runtime/java/jre11/bin-arm64.tar.xz b/FCL/src/main/assets/app_runtime/java/jre11/bin-arm64.tar.xz index c8926831..d878f182 100644 Binary files a/FCL/src/main/assets/app_runtime/java/jre11/bin-arm64.tar.xz and b/FCL/src/main/assets/app_runtime/java/jre11/bin-arm64.tar.xz differ diff --git a/FCL/src/main/assets/app_runtime/java/jre11/bin-x86.tar.xz b/FCL/src/main/assets/app_runtime/java/jre11/bin-x86.tar.xz index 10c68f6d..e35ec2a2 100644 Binary files a/FCL/src/main/assets/app_runtime/java/jre11/bin-x86.tar.xz and b/FCL/src/main/assets/app_runtime/java/jre11/bin-x86.tar.xz differ diff --git a/FCL/src/main/assets/app_runtime/java/jre11/bin-x86_64.tar.xz b/FCL/src/main/assets/app_runtime/java/jre11/bin-x86_64.tar.xz index 89979f42..1d379176 100644 Binary files a/FCL/src/main/assets/app_runtime/java/jre11/bin-x86_64.tar.xz and b/FCL/src/main/assets/app_runtime/java/jre11/bin-x86_64.tar.xz differ diff --git a/FCL/src/main/assets/app_runtime/java/jre11/universal.tar.xz b/FCL/src/main/assets/app_runtime/java/jre11/universal.tar.xz index 41e4cc62..d9cc32af 100644 Binary files a/FCL/src/main/assets/app_runtime/java/jre11/universal.tar.xz and b/FCL/src/main/assets/app_runtime/java/jre11/universal.tar.xz differ diff --git a/FCL/src/main/assets/app_runtime/java/jre11/version b/FCL/src/main/assets/app_runtime/java/jre11/version index d8263ee9..e440e5c8 100644 --- a/FCL/src/main/assets/app_runtime/java/jre11/version +++ b/FCL/src/main/assets/app_runtime/java/jre11/version @@ -1 +1 @@ -2 \ No newline at end of file +3 \ No newline at end of file diff --git a/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java b/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java index eccadf20..d90d4f69 100644 --- a/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java +++ b/FCL/src/main/java/com/tungsten/fcl/activity/ShellActivity.java @@ -50,24 +50,9 @@ public class ShellActivity extends FCLActivity { if (cmd.endsWith("\n")) { logWindow.appendLog("->" + cmd); editText.setText(""); - String javaDir = FCLPath.RUNTIME_DIR + "/java"; if (cmd.contains("clear")) { logWindow.cleanLog(); return; - } else if (cmd.contains("java21")) { - shellUtil.append("cd " + javaDir); - if (!new File(javaDir, "jre21").exists() && !new File(javaDir, "jre17_").exists()) { - shellUtil.append("cp " + new File(new File(FCLPath.SHARED_COMMON_DIR).getParentFile(), "jre21.zip").getAbsolutePath() + " ./"); - shellUtil.append("unzip jre21.zip"); - } - shellUtil.append("mv jre17 jre17_"); - shellUtil.append("mv jre21 jre17"); - return; - } else if (cmd.contains("java17")) { - shellUtil.append("cd " + javaDir); - shellUtil.append("mv jre17 jre21"); - shellUtil.append("mv jre17_ jre17"); - return; } shellUtil.append(cmd); } diff --git a/FCL/src/main/java/com/tungsten/fcl/fragment/RuntimeFragment.java b/FCL/src/main/java/com/tungsten/fcl/fragment/RuntimeFragment.java index 8d44d0ea..2d7af933 100644 --- a/FCL/src/main/java/com/tungsten/fcl/fragment/RuntimeFragment.java +++ b/FCL/src/main/java/com/tungsten/fcl/fragment/RuntimeFragment.java @@ -30,6 +30,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener boolean lwjgl = false; boolean cacio = false; + boolean cacio11 = false; boolean cacio17 = false; boolean java8 = false; boolean java11 = false; @@ -38,6 +39,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener private FCLProgressBar lwjglProgress; private FCLProgressBar cacioProgress; + private FCLProgressBar cacio11Progress; private FCLProgressBar cacio17Progress; private FCLProgressBar java8Progress; private FCLProgressBar java11Progress; @@ -46,6 +48,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener private FCLImageView lwjglState; private FCLImageView cacioState; + private FCLImageView cacio11State; private FCLImageView cacio17State; private FCLImageView java8State; private FCLImageView java11State; @@ -61,6 +64,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener lwjglProgress = findViewById(view, R.id.lwjgl_progress); cacioProgress = findViewById(view, R.id.cacio_progress); + cacio11Progress = findViewById(view, R.id.cacio11_progress); cacio17Progress = findViewById(view, R.id.cacio17_progress); java8Progress = findViewById(view, R.id.java8_progress); java11Progress = findViewById(view, R.id.java11_progress); @@ -69,6 +73,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener lwjglState = findViewById(view, R.id.lwjgl_state); cacioState = findViewById(view, R.id.cacio_state); + cacio11State = findViewById(view, R.id.cacio11_state); cacio17State = findViewById(view, R.id.cacio17_state); java8State = findViewById(view, R.id.java8_state); java11State = findViewById(view, R.id.java11_state); @@ -91,6 +96,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener try { lwjgl = RuntimeUtils.isLatest(FCLPath.LWJGL_DIR, "/assets/app_runtime/lwjgl"); cacio = RuntimeUtils.isLatest(FCLPath.CACIOCAVALLO_8_DIR, "/assets/app_runtime/caciocavallo"); + cacio11 = RuntimeUtils.isLatest(FCLPath.CACIOCAVALLO_11_DIR, "/assets/app_runtime/caciocavallo11"); cacio17 = RuntimeUtils.isLatest(FCLPath.CACIOCAVALLO_17_DIR, "/assets/app_runtime/caciocavallo17"); java8 = RuntimeUtils.isLatest(FCLPath.JAVA_8_PATH, "/assets/app_runtime/java/jre8"); java11 = RuntimeUtils.isLatest(FCLPath.JAVA_11_PATH, "/assets/app_runtime/java/jre11"); @@ -111,6 +117,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener lwjglState.setBackgroundDrawable(lwjgl ? stateDone : stateUpdate); cacioState.setBackgroundDrawable(cacio ? stateDone : stateUpdate); + cacio11State.setBackgroundDrawable(cacio11 ? stateDone : stateUpdate); cacio17State.setBackgroundDrawable(cacio17 ? stateDone : stateUpdate); java8State.setBackgroundDrawable(java8 ? stateDone : stateUpdate); java11State.setBackgroundDrawable(java11 ? stateDone : stateUpdate); @@ -120,7 +127,7 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener } private boolean isLatest() { - return lwjgl && cacio && cacio17 && java8 && java11 && java17 && java21; + return lwjgl && cacio && cacio11 && cacio17 && java8 && java11 && java17 && java21; } private void check() { @@ -178,6 +185,26 @@ public class RuntimeFragment extends FCLFragment implements View.OnClickListener } }).start(); } + if (!cacio11) { + cacio11State.setVisibility(View.GONE); + cacio11Progress.setVisibility(View.VISIBLE); + new Thread(() -> { + try { + RuntimeUtils.install(getContext(), FCLPath.CACIOCAVALLO_11_DIR, "app_runtime/caciocavallo11"); + cacio11 = true; + } catch (IOException e) { + e.printStackTrace(); + } + if (getActivity() != null) { + getActivity().runOnUiThread(() -> { + cacio11State.setVisibility(View.VISIBLE); + cacio11Progress.setVisibility(View.GONE); + refreshDrawables(); + check(); + }); + } + }).start(); + } if (!cacio17) { cacio17State.setVisibility(View.GONE); cacio17Progress.setVisibility(View.VISIBLE); diff --git a/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorLauncher.java b/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorLauncher.java index 31cafecc..4fbf3406 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorLauncher.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorLauncher.java @@ -14,7 +14,6 @@ import com.tungsten.fclcore.util.platform.MemoryUtils; import java.io.File; import java.io.IOException; -import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -64,7 +63,7 @@ public class JarExecutorLauncher extends Launcher { if (isJava8) { res.addDefault("-Dawt.toolkit=", "net.java.openjdk.cacio.ctc.CTCToolkit"); res.addDefault("-Djava.awt.graphicsenv=", "net.java.openjdk.cacio.ctc.CTCGraphicsEnvironment"); - } else if (!isJava11) { + } else { res.addDefault("-Dawt.toolkit=", "com.github.caciocavallosilano.cacio.ctc.CTCToolkit"); res.addDefault("-Djava.awt.graphicsenv=", "com.github.caciocavallosilano.cacio.ctc.CTCGraphicsEnvironment"); res.addDefault("-Djava.system.class.loader=", "com.github.caciocavallosilano.cacio.ctc.CTCPreloadClassLoader"); @@ -89,7 +88,7 @@ public class JarExecutorLauncher extends Launcher { StringBuilder cacioClasspath = new StringBuilder(); cacioClasspath.append("-Xbootclasspath/").append(isJava8 ? "p" : "a"); - File cacioDir = new File(isJava8 ? FCLPath.CACIOCAVALLO_8_DIR : FCLPath.CACIOCAVALLO_17_DIR); + File cacioDir = new File(isJava8 ? FCLPath.CACIOCAVALLO_8_DIR : isJava11 ? FCLPath.CACIOCAVALLO_11_DIR : FCLPath.CACIOCAVALLO_17_DIR); if (cacioDir.exists() && cacioDir.isDirectory()) { for (File file : Objects.requireNonNull(cacioDir.listFiles())) { if (file.getName().endsWith(".jar")) { diff --git a/FCL/src/main/res/layout/fragment_runtime.xml b/FCL/src/main/res/layout/fragment_runtime.xml index 9f12b256..b8fd4563 100644 --- a/FCL/src/main/res/layout/fragment_runtime.xml +++ b/FCL/src/main/res/layout/fragment_runtime.xml @@ -97,6 +97,47 @@ + + + + + + + + + + + + + + Install or update app runtime LWJGL Caciocavallo + Caciocavallo 11 Caciocavallo 17 JRE 8 JRE 11 diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java b/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java index 21a1d789..de80f9e9 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java @@ -237,7 +237,7 @@ public class DefaultLauncher extends Launcher { if (isJava8) { res.addDefault("-Dawt.toolkit=", "net.java.openjdk.cacio.ctc.CTCToolkit"); res.addDefault("-Djava.awt.graphicsenv=", "net.java.openjdk.cacio.ctc.CTCGraphicsEnvironment"); - } else if (!isJava11) { + } else { res.addDefault("-Dawt.toolkit=", "com.github.caciocavallosilano.cacio.ctc.CTCToolkit"); res.addDefault("-Djava.awt.graphicsenv=", "com.github.caciocavallosilano.cacio.ctc.CTCGraphicsEnvironment"); res.addDefault("-Djava.system.class.loader=", "com.github.caciocavallosilano.cacio.ctc.CTCPreloadClassLoader"); @@ -262,7 +262,7 @@ public class DefaultLauncher extends Launcher { StringBuilder cacioClasspath = new StringBuilder(); cacioClasspath.append("-Xbootclasspath/").append(isJava8 ? "p" : "a"); - File cacioDir = new File(isJava8 ? FCLPath.CACIOCAVALLO_8_DIR : FCLPath.CACIOCAVALLO_17_DIR); + File cacioDir = new File(isJava8 ? FCLPath.CACIOCAVALLO_8_DIR : isJava11 ? FCLPath.CACIOCAVALLO_11_DIR : FCLPath.CACIOCAVALLO_17_DIR); if (cacioDir.exists() && cacioDir.isDirectory()) { for (File file : Objects.requireNonNull(cacioDir.listFiles())) { if (file.getName().endsWith(".jar")) { diff --git a/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java b/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java index 477b2538..c4a7e167 100644 --- a/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java +++ b/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java @@ -21,6 +21,7 @@ public class FCLPath { public static String JAVA_21_PATH; public static String LWJGL_DIR; public static String CACIOCAVALLO_8_DIR; + public static String CACIOCAVALLO_11_DIR; public static String CACIOCAVALLO_17_DIR; public static String FILES_DIR; @@ -51,6 +52,7 @@ public class FCLPath { JAVA_21_PATH = RUNTIME_DIR + "/java/jre21"; LWJGL_DIR = RUNTIME_DIR + "/lwjgl"; CACIOCAVALLO_8_DIR = RUNTIME_DIR + "/caciocavallo"; + CACIOCAVALLO_11_DIR = RUNTIME_DIR + "/caciocavallo11"; CACIOCAVALLO_17_DIR = RUNTIME_DIR + "/caciocavallo17"; FILES_DIR = context.getFilesDir().getAbsolutePath(); @@ -74,6 +76,7 @@ public class FCLPath { init(JAVA_21_PATH); init(LWJGL_DIR); init(CACIOCAVALLO_8_DIR); + init(CACIOCAVALLO_11_DIR); init(CACIOCAVALLO_17_DIR); init(FILES_DIR); init(PLUGIN_DIR);