mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2026-04-18 00:27:04 -04:00
fix: kilt crashing due to how caciocavallo17 is loaded
Fixes https://github.com/KiltMC/Kilt/issues/230 by using a javaagent instead of a custom classloader Uses https://github.com/AngelAuraMC/caciocavallo17/actions/runs/20203346684
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
20240411
|
||||
20251214-added-javaagent-preloader
|
||||
|
||||
@@ -359,7 +359,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTouc
|
||||
List<String> javaArgList = new ArrayList<>();
|
||||
|
||||
// Enable Caciocavallo
|
||||
Tools.getCacioJavaArgs(javaArgList,runtime.javaVersion == 8);
|
||||
Tools.getCacioJavaArgs(javaArgList,runtime.javaVersion == 8, this);
|
||||
if(javaArgs != null) {
|
||||
javaArgList.addAll(javaArgs);
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ import net.kdt.pojavlaunch.multirt.MultiRTUtils;
|
||||
import net.kdt.pojavlaunch.multirt.Runtime;
|
||||
import net.kdt.pojavlaunch.plugins.FFmpegPlugin;
|
||||
import net.kdt.pojavlaunch.prefs.LauncherPreferences;
|
||||
import net.kdt.pojavlaunch.tasks.AsyncAssetManager;
|
||||
import net.kdt.pojavlaunch.utils.DateUtils;
|
||||
import net.kdt.pojavlaunch.utils.DownloadUtils;
|
||||
import net.kdt.pojavlaunch.utils.FileUtils;
|
||||
@@ -349,7 +350,7 @@ public final class Tools {
|
||||
|
||||
List<String> javaArgList = new ArrayList<>();
|
||||
|
||||
getCacioJavaArgs(javaArgList, runtime.javaVersion == 8);
|
||||
getCacioJavaArgs(javaArgList, runtime.javaVersion == 8, activity);
|
||||
|
||||
if (versionInfo.logging != null) {
|
||||
String configFile = Tools.DIR_DATA + "/security/" + versionInfo.logging.client.file.id.replace("client", "log4j-rce-patch");
|
||||
@@ -533,7 +534,7 @@ public final class Tools {
|
||||
}
|
||||
}
|
||||
|
||||
public static void getCacioJavaArgs(List<String> javaArgList, boolean isJava8) {
|
||||
public static void getCacioJavaArgs(List<String> javaArgList, boolean isJava8, Activity activity) {
|
||||
// Caciocavallo config AWT-enabled version
|
||||
javaArgList.add("-Djava.awt.headless=false");
|
||||
javaArgList.add("-Dcacio.managed.screensize=" + AWTCanvasView.AWT_CANVAS_WIDTH + "x" + AWTCanvasView.AWT_CANVAS_HEIGHT);
|
||||
@@ -544,10 +545,20 @@ public final class Tools {
|
||||
javaArgList.add("-Dawt.toolkit=net.java.openjdk.cacio.ctc.CTCToolkit");
|
||||
javaArgList.add("-Djava.awt.graphicsenv=net.java.openjdk.cacio.ctc.CTCGraphicsEnvironment");
|
||||
} else {
|
||||
File caciocavavallo17Dir = new File(Tools.DIR_GAME_HOME, "caciocavallo17");
|
||||
File[] caciocavallo17Jars = caciocavavallo17Dir.listFiles((f, s) ->s.contains("cacio-tta"));
|
||||
if(caciocavallo17Jars == null || caciocavallo17Jars.length < 1) {
|
||||
// We wanna avoid the launch being interrupted so we extract again if it isn't found
|
||||
AsyncAssetManager.unpackComponents(activity);
|
||||
caciocavallo17Jars = caciocavavallo17Dir.listFiles((f, s) ->s.contains("cacio-tta"));
|
||||
if(caciocavallo17Jars == null || caciocavallo17Jars.length < 1)
|
||||
throw new RuntimeException("Failed to extract required assets!");
|
||||
}
|
||||
javaArgList.add("-javaagent:"+caciocavallo17Jars[0].getAbsolutePath());
|
||||
javaArgList.add("-Dawt.toolkit=com.github.caciocavallosilano.cacio.ctc.CTCToolkit");
|
||||
javaArgList.add("-Djava.awt.graphicsenv=com.github.caciocavallosilano.cacio.ctc.CTCGraphicsEnvironment");
|
||||
javaArgList.add("-Djava.system.class.loader=com.github.caciocavallosilano.cacio.ctc.CTCPreloadClassLoader");
|
||||
|
||||
// This approach breaks kilt so we use an agent instead
|
||||
// javaArgList.add("-Djava.system.class.loader=com.github.caciocavallosilano.cacio.ctc.CTCPreloadClassLoader");
|
||||
javaArgList.add("--add-exports=java.desktop/java.awt=ALL-UNNAMED");
|
||||
javaArgList.add("--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED");
|
||||
javaArgList.add("--add-exports=java.desktop/sun.awt.image=ALL-UNNAMED");
|
||||
|
||||
Reference in New Issue
Block a user