From e06c6f9fea7b52919aac7bf398c29b7bd0fb5b10 Mon Sep 17 00:00:00 2001 From: artDev Date: Thu, 12 May 2022 22:32:27 +0300 Subject: [PATCH 1/6] JRE17 auto-unpacker on new source --- .../java/net/kdt/pojavlaunch/JRE17Util.java | 49 +++++++++++++++++++ .../tasks/MinecraftDownloaderTask.java | 29 +++++++---- 2 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java new file mode 100644 index 000000000..e46966e15 --- /dev/null +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java @@ -0,0 +1,49 @@ +package net.kdt.pojavlaunch; + +import static net.kdt.pojavlaunch.Architecture.archAsString; + +import android.content.Context; +import android.content.res.AssetManager; +import android.util.Log; + +import net.kdt.pojavlaunch.multirt.MultiRTUtils; +import net.kdt.pojavlaunch.multirt.Runtime; + +import java.io.IOException; + +public class JRE17Util { + private static final String NEW_JRE_NAME = "Internal-17"; + public static boolean checkInternalNewJre(Context context, MultiRTUtils.RuntimeProgressReporter reporter) { + AssetManager assetManager = context.getAssets(); + String launcher_jre17_version; + String installed_jre17_version = MultiRTUtils.__internal__readBinpackVersion(NEW_JRE_NAME); + try { + launcher_jre17_version = Tools.read(assetManager.open("components/jre-new/version")); + }catch (IOException exc) { + //we don't have a runtime included! + return installed_jre17_version != null; //if we have one installed -> return true -> proceed (no updates but the current one should be functional) + //if we don't -> return false -> Cannot find compatible Java runtime + } + if(!launcher_jre17_version.equals(installed_jre17_version)) // this implicitly checks for null, so it will unpack the runtime even if we don't have one installed + return unpackJre17(context, assetManager, launcher_jre17_version, reporter); + else return true; + } + private static boolean unpackJre17(Context context, AssetManager assetManager, String rt_version, MultiRTUtils.RuntimeProgressReporter feedback) { + try { + MultiRTUtils.installRuntimeNamedBinpack(context.getApplicationInfo().nativeLibraryDir, + assetManager.open("components/jre-new/universal.tar.xz"), + assetManager.open("components/jre-new/bin-" + archAsString(Tools.DEVICE_ARCHITECTURE) + ".tar.xz"), + "Internal-17", rt_version, feedback); + MultiRTUtils.postPrepare(context,"Internal-17"); + return true; + }catch (IOException e) { + Log.e("JRE17Auto", "Internal JRE unpack failed", e); + return false; + } + } + public static boolean isInternalNewJRE(String s_runtime) { + Runtime runtime = MultiRTUtils.read(s_runtime); + if(runtime == null) return false; + return NEW_JRE_NAME.equals(runtime.name); + } +} \ No newline at end of file diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index 7aafecc78..ffbabd09b 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -102,19 +102,16 @@ public class MinecraftDownloaderTask extends AsyncTask publishProgress(mActivity.getString(resId,stuff)))); + } minecraftProfile.javaDir = Tools.LAUNCHERPROFILES_RTPREFIX+appropriateRuntime; LauncherProfiles.update(); }else{ - mActivity.runOnUiThread(()->{ - AlertDialog.Builder bldr = new AlertDialog.Builder(mActivity); - bldr.setTitle(R.string.global_error); - bldr.setMessage(mActivity.getString(R.string.multirt_nocompartiblert, verInfo.javaVersion.majorVersion)); - bldr.setPositiveButton(android.R.string.ok,(dialog, which)->{ - dialog.dismiss(); - }); - bldr.show(); - }); - throw new SilentException(); + if(verInfo.javaVersion.majorVersion <= 17) { // there's a chance we have an internal one for this case + if(!JRE17Util.checkInternalNewJre(mActivity, ((resId, stuff) -> publishProgress(mActivity.getString(resId,stuff))))) + showRuntimeFail(); + }else showRuntimeFail(); } } //if else, we are satisfied } @@ -273,6 +270,18 @@ public class MinecraftDownloaderTask extends AsyncTask{ + AlertDialog.Builder bldr = new AlertDialog.Builder(mActivity); + bldr.setTitle(R.string.global_error); + bldr.setMessage(mActivity.getString(R.string.multirt_nocompartiblert, verInfo.javaVersion.majorVersion)); + bldr.setPositiveButton(android.R.string.ok,(dialog, which)->{ + dialog.dismiss(); + }); + bldr.show(); + }); + throw new SilentException(); + } private int addProgress = 0; public static class SilentException extends Exception{} public void zeroProgress() { From 363a8feff424ff9a39b78508d3df3b3cd5a00574 Mon Sep 17 00:00:00 2001 From: ArtDev <45949002+artdeell@users.noreply.github.com> Date: Thu, 12 May 2022 22:35:19 +0300 Subject: [PATCH 2/6] CI: Download JRE17 from the size testing branch --- .github/workflows/android.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index d0be8c533..86f656ab7 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -73,6 +73,17 @@ jobs: name: jre8-pojav run_id: 2140559381 + - name: Get JRE17 + uses: dawidd6/action-download-artifact@v2 + with: + github_token: ${{secrets.GITHUB_TOKEN}} + workflow: build.yml + path: app_pojavlauncher/src/main/assets/components/jre-new + workflow_conclusion: success + repo: PojavLauncherTeam/android-openjdk-build-multiarch + branch: jre17-size-testing + name: jre17-pojav + - name: Build JRE JAR files run: | cp -R gl4es/libs/* app_pojavlauncher/src/main/jniLibs/ From c29ede10cdac74a3b4193040cfdef7ee9ed7da19 Mon Sep 17 00:00:00 2001 From: ArtDev <45949002+artdeell@users.noreply.github.com> Date: Thu, 12 May 2022 22:43:17 +0300 Subject: [PATCH 3/6] CI: Also delete New JRE for noruntime build --- .github/workflows/android.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 86f656ab7..577264811 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -111,6 +111,7 @@ jobs: - name: Build APK without runtime run: | rm -r app_pojavlauncher/src/main/assets/components/jre + rm -r app_pojavlauncher/src/main/assets/components/jre-new ./gradlew assembleDebug mv app_pojavlauncher/build/outputs/apk/debug/app_pojavlauncher-debug.apk out/app-debug-noruntime.apk From dc7794b64a3e759d32c2a58c4b08647c40ee3eeb Mon Sep 17 00:00:00 2001 From: artDev Date: Thu, 12 May 2022 22:47:10 +0300 Subject: [PATCH 4/6] Add the "0" to fix a crash when unpacking --- .../net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index ffbabd09b..12a4e59a5 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -103,13 +103,13 @@ public class MinecraftDownloaderTask extends AsyncTask publishProgress(mActivity.getString(resId,stuff)))); + JRE17Util.checkInternalNewJre(mActivity, ((resId, stuff) -> publishProgress("0",mActivity.getString(resId,stuff)))); } minecraftProfile.javaDir = Tools.LAUNCHERPROFILES_RTPREFIX+appropriateRuntime; LauncherProfiles.update(); }else{ if(verInfo.javaVersion.majorVersion <= 17) { // there's a chance we have an internal one for this case - if(!JRE17Util.checkInternalNewJre(mActivity, ((resId, stuff) -> publishProgress(mActivity.getString(resId,stuff))))) + if(!JRE17Util.checkInternalNewJre(mActivity, ((resId, stuff) -> publishProgress("0",mActivity.getString(resId,stuff))))) showRuntimeFail(); }else showRuntimeFail(); } From 00806ea1424009abbf8dd2eaaa3a5b0d444be165 Mon Sep 17 00:00:00 2001 From: artDev Date: Thu, 12 May 2022 23:04:14 +0300 Subject: [PATCH 5/6] Set the runtime path after installing --- .../src/main/java/net/kdt/pojavlaunch/JRE17Util.java | 2 +- .../net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java index e46966e15..bbf79feb3 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JRE17Util.java @@ -12,7 +12,7 @@ import net.kdt.pojavlaunch.multirt.Runtime; import java.io.IOException; public class JRE17Util { - private static final String NEW_JRE_NAME = "Internal-17"; + public static final String NEW_JRE_NAME = "Internal-17"; public static boolean checkInternalNewJre(Context context, MultiRTUtils.RuntimeProgressReporter reporter) { AssetManager assetManager = context.getAssets(); String launcher_jre17_version; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index 12a4e59a5..5047d473a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -111,6 +111,10 @@ public class MinecraftDownloaderTask extends AsyncTask publishProgress("0",mActivity.getString(resId,stuff))))) showRuntimeFail(); + else { + minecraftProfile.javaDir = Tools.LAUNCHERPROFILES_RTPREFIX+JRE17Util.NEW_JRE_NAME; + LauncherProfiles.update(); + } }else showRuntimeFail(); } } //if else, we are satisfied From 36747ec15e5e9c55f26957c1a58920300d869d35 Mon Sep 17 00:00:00 2001 From: ArtDev <45949002+artdeell@users.noreply.github.com> Date: Fri, 13 May 2022 14:40:18 +0300 Subject: [PATCH 6/6] CI: Switch branch to buildjre17 --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 577264811..573edd355 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -81,7 +81,7 @@ jobs: path: app_pojavlauncher/src/main/assets/components/jre-new workflow_conclusion: success repo: PojavLauncherTeam/android-openjdk-build-multiarch - branch: jre17-size-testing + branch: buildjre17 name: jre17-pojav - name: Build JRE JAR files