From ba33b927a7fed3e4dc95b4d48288c87a9c45909c Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 4 Sep 2021 12:49:24 +0800 Subject: [PATCH 01/12] update openjfx-dependencirs.json --- .../assets/openjfx-dependencies.json | 66 ++++++++++++------- tools/generate-openjfx-dependencies.sh | 4 +- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/HMCL/src/main/resources/assets/openjfx-dependencies.json b/HMCL/src/main/resources/assets/openjfx-dependencies.json index 1a2f0a072..5cb6f69e9 100644 --- a/HMCL/src/main/resources/assets/openjfx-dependencies.json +++ b/HMCL/src/main/resources/assets/openjfx-dependencies.json @@ -3,66 +3,84 @@ "module": "javafx.base", "groupId": "org.openjfx", "artifactId": "javafx-base", - "version": "16", + "version": "17-ea+17", "sha1": { - "linux": "7d6b85ec89e99ea40c2a63bb1f23d43e05cd2557", - "mac": "ea97d8a5ab95d070df86de1215f29f08378c98c8", - "win": "e0564fea3f27dd3a10fa62e5005612333fc244bc" + "linux": "70b3908f548c6031e1dd221124e91ea3891f5f3f", + "linux-aarch64": "a55742f01e9e220b8c5143fa018a072e16ad5a8e", + "mac": "79d57e0c2984dd2a006bc32a5615e71dac23386c", + "mac-aarch64": "a395b2f11af9c4e90fd3297dd529fdaf258c1569", + "win": "215d14c2a6281487c3c2f3d6a5159f3126731473", + "win-x86": "19aa1a1575d187e0aa64e06daf392a3ac8083afb" } }, { "module": "javafx.controls", "groupId": "org.openjfx", "artifactId": "javafx-controls", - "version": "16", + "version": "17-ea+17", "sha1": { - "linux": "116b127e512d23ddb84c62017c256e7f67f5b9eb", - "mac": "8df933b095bdd8203dc937e39e3a9f199654e47e", - "win": "65cdeae29c67d25932dcc66ca4f7d269923631ba" + "linux": "3a46f7cdb81c3e8d6f2c8b01bd0f373be30117f5", + "linux-aarch64": "fd0a4e2f57ac740c4832f204a9b10093d02dec3b", + "mac": "20c2c350a034c8bcf999e97e4e57c782fc3ebea3", + "mac-aarch64": "88bafecc908d8e75b1a8496cda8217aa6d9f76fc", + "win": "acb49a74d373de98b9bb01fed698e3d8be7f439b", + "win-x86": "086b1cff015846da0e26780dfeb2a62846508891" } }, { "module": "javafx.fxml", "groupId": "org.openjfx", "artifactId": "javafx-fxml", - "version": "16", + "version": "17-ea+17", "sha1": { - "linux": "c7147c450773c3d4fd038ac9d1a6fdebbc3c11e0", - "mac": "7e4f07a331991485560673a398d6988cc805b67f", - "win": "369f646fc29d2223cc98cfc3c059f2409b3e8fcb" + "linux": "412ae5755e94fb46dd1c8c0890af570f9dad2985", + "linux-aarch64": "4e2a7938a24f23e86ab22f55c762e10277d52c5c", + "mac": "5ff616acca97e7a51e35478f20eb292a4a14fa0f", + "mac-aarch64": "4fade5a687f03c17b4d9c2219e7390f2599baf77", + "win": "1a695125cb6298b991b8cb2bdbc634232c5066b0", + "win-x86": "d9437a12c9441f806429509603a757b8f86503f8" } }, { "module": "javafx.graphics", "groupId": "org.openjfx", "artifactId": "javafx-graphics", - "version": "16", + "version": "17-ea+17", "sha1": { - "linux": "01bf2fd9f083daa2f492c4c58c4f7d5acb6f4b7d", - "mac": "a45de3d40e217f7ba22cecf54abc281d13a172f6", - "win": "0cd18f8477818b40cfdbcfec7e2fc15f632f0a2f" + "linux": "b11547378c13e2ff404a161460c8f3f68802af44", + "linux-aarch64": "bff9c9502737b580cd4b40d5e296f4a446c148ba", + "mac": "6abbd5c3a87f2d50f63f2c2bbf3e27ff753e06f2", + "mac-aarch64": "6d583ff9e01c9e3e0999615aebc4e875db5e368b", + "win": "1dd878d1ac91bfe796a414e667d9c9972ff9bc96", + "win-x86": "49f7f59730f4ec53a84b3c689f92c8c20c1b1a23" } }, { "module": "javafx.media", "groupId": "org.openjfx", "artifactId": "javafx-media", - "version": "16", + "version": "17-ea+17", "sha1": { - "linux": "10edb5fd8eb64b3312b31225c396e1850b9d178b", - "mac": "9e0248083267cdc22b2b698f0b0b62b7399ad32d", - "win": "6d776658906fc25051734bc6b03f214cc72c808e" + "linux": "0d6e841e4c02b566f1f587ddee32ef0cc0ce38e1", + "linux-aarch64": "3c380afd3c1c9c346f8b78826333c56102f4315c", + "mac": "ace33a63e65ec7da79ecbce9b6fc439af1815d2d", + "mac-aarch64": "72f944f25ce4f8e6b0e31215692a743abc56efef", + "win": "46a29a35d0d11e75c5e76065ae9e16043165fe99", + "win-x86": "93834d0db720c4054fbc412045f1dfc4557ace19" } }, { "module": "javafx.web", "groupId": "org.openjfx", "artifactId": "javafx-web", - "version": "16", + "version": "17-ea+17", "sha1": { - "linux": "522f626e1798a7d589d9b187ca5c74c5c2f8a0ee", - "mac": "32b0e13b649ea828e7d185187f178680cc04e564", - "win": "d2f80089a4ae1629a5ec14637abf4f6d70b96dab" + "linux": "a502ea2af96bec4ccf8d1e4ff6d4bb03a691b6a9", + "linux-aarch64": "af4b8952521a3552b74624d31e967fc17669101c", + "mac": "268c305b2d3041578cd8aa3dffb744553459d1ac", + "mac-aarch64": "dd6cff3d0c6880b4249f5a286a5bcb4a135344ab", + "win": "c4ab5ee95133a7b52e3674e61a76fc6300809587", + "win-x86": "6c894b0cda6e7f2ed825eb66aba9413b88fcc2f2" } } ] diff --git a/tools/generate-openjfx-dependencies.sh b/tools/generate-openjfx-dependencies.sh index cd2c7df66..8a810e087 100755 --- a/tools/generate-openjfx-dependencies.sh +++ b/tools/generate-openjfx-dependencies.sh @@ -2,8 +2,8 @@ set -e modules=(base controls fxml graphics media web) -arches=(linux mac win) -version=16 +arches=(linux linux-aarch64 mac mac-aarch64 win win-x86) +version=17-ea+17 echo '[' for module in ${modules[@]}; do From 5310de88d5e6c10d9ddd537820e4d1333f631125 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 4 Sep 2021 13:07:13 +0800 Subject: [PATCH 02/12] select classifier according to the platform --- .../hmcl/util/SelfDependencyPatcher.java | 50 ++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java index 646f13cc3..36867596b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java @@ -79,18 +79,34 @@ public final class SelfDependencyPatcher { static class DependencyDescriptor { - // private static final String REPOSITORY_URL = System.getProperty("hmcl.openjfx.repo", "https://maven.aliyun.com/repository/central/"); private static final Path DEPENDENCIES_DIR_PATH = HMCL_DIRECTORY.resolve("dependencies"); + public static final String CURRENT_ARCH_CLASSIFIER = currentArchClassifier(); + private static String currentArchClassifier() { - switch (OperatingSystem.CURRENT_OS) { - case LINUX: - return "linux"; - case OSX: - return "mac"; - default: - return "win"; + if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + switch (Architecture.CURRENT) { + case X86_64: + return "linux"; + case ARM64: + return "linux-aarch64"; + } + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + switch (Architecture.CURRENT) { + case X86_64: + return "mac"; + case ARM64: + return "mac-aarch64"; + } + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { + switch (Architecture.CURRENT) { + case X86_64: + return "win"; + case X86: + return "win-x86"; + } } + return null; } public String module; @@ -100,14 +116,23 @@ public final class SelfDependencyPatcher { public Map sha1; public String filename() { - return artifactId + "-" + version + "-" + currentArchClassifier() + ".jar"; + if (CURRENT_ARCH_CLASSIFIER == null) { + return null; + } + return artifactId + "-" + version + "-" + CURRENT_ARCH_CLASSIFIER + ".jar"; } public String sha1() { - return sha1.get(currentArchClassifier()); + if (CURRENT_ARCH_CLASSIFIER == null) { + return null; + } + return sha1.get(CURRENT_ARCH_CLASSIFIER); } public Path localPath() { + if (CURRENT_ARCH_CLASSIFIER == null) { + return null; + } return DEPENDENCIES_DIR_PATH.resolve(filename()); } } @@ -192,9 +217,8 @@ public final class SelfDependencyPatcher { throw new IncompatibleVersionException(); } - // We can only self-patch JavaFX on x86-64 platform. - // For ARM support, user's manual patch is required. - if (Architecture.CURRENT != Architecture.X86_64) { + // We can only self-patch JavaFX on specific platform. + if (DependencyDescriptor.CURRENT_ARCH_CLASSIFIER == null) { throw new IncompatibleVersionException(); } From d77a09042d5748a6b59560e995d90d80513b8c36 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 4 Sep 2021 13:21:55 +0800 Subject: [PATCH 03/12] fix ExceptionInInitializerError --- .../src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java | 4 ++-- .../main/java/org/jackhuang/hmcl/setting/VersionSetting.java | 2 +- .../java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java | 1 - HMCLCore/src/main/java/org/jackhuang/hmcl/game/Library.java | 2 +- .../java/org/jackhuang/hmcl/util/platform/JavaVersion.java | 2 +- .../main/java/org/jackhuang/hmcl/util/platform/Platform.java | 4 +++- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index 9f4121028..8db1a4028 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -450,7 +450,7 @@ public final class LauncherHelper { // First find if same java version but whose platform is 64-bit installed. Optional java64 = JavaVersion.getJavas().stream() - .filter(javaVersion -> javaVersion.getPlatform() == org.jackhuang.hmcl.util.platform.Platform.PLATFORM) + .filter(javaVersion -> javaVersion.getPlatform() == org.jackhuang.hmcl.util.platform.Platform.getPlatform()) .filter(javaVersion -> javaVersion.getParsedVersion() == java32.getParsedVersion()) .max(Comparator.comparing(JavaVersion::getVersionNumber)); @@ -459,7 +459,7 @@ public final class LauncherHelper { // Then find if other java version which satisfies requirements installed. java64 = JavaVersion.getJavas().stream() - .filter(javaVersion -> javaVersion.getPlatform() == org.jackhuang.hmcl.util.platform.Platform.PLATFORM) + .filter(javaVersion -> javaVersion.getPlatform() == org.jackhuang.hmcl.util.platform.Platform.getPlatform()) .filter(javaVersion -> { if (java8requiredFinal) return javaVersion.getParsedVersion() == JavaVersion.JAVA_8; if (newJavaRequiredFinal) return javaVersion.getParsedVersion() >= JavaVersion.JAVA_8; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java index 328cc715b..c457a7f59 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java @@ -567,7 +567,7 @@ public final class VersionSetting implements Cloneable { if (checkJava) return JavaVersion.fromExecutable(Paths.get(getJavaDir())); else - return new JavaVersion(Paths.get(getJavaDir()), "", Platform.PLATFORM); + return new JavaVersion(Paths.get(getJavaDir()), "", Platform.getPlatform()); } catch (IOException | InvalidPathException e) { return null; // Custom Java Directory not found, } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java index 36867596b..01867c155 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java @@ -80,7 +80,6 @@ public final class SelfDependencyPatcher { static class DependencyDescriptor { private static final Path DEPENDENCIES_DIR_PATH = HMCL_DIRECTORY.resolve("dependencies"); - public static final String CURRENT_ARCH_CLASSIFIER = currentArchClassifier(); private static String currentArchClassifier() { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Library.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Library.java index 96b517a60..cbcabd220 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Library.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/Library.java @@ -94,7 +94,7 @@ public class Library implements Comparable, Validation { public String getClassifier() { if (artifact.getClassifier() == null) if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS)) - return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Platform.PLATFORM.getBit()); + return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Platform.getPlatform().getBit()); else return null; else diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java index 526d17755..ce8219925 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java @@ -165,7 +165,7 @@ public final class JavaVersion { CURRENT_JAVA = new JavaVersion( currentExecutable, System.getProperty("java.version"), - Platform.PLATFORM); + Platform.getPlatform()); } private static Collection JAVAS; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java index eac2db089..75494e1de 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java @@ -47,7 +47,9 @@ public enum Platform { /** * The platform of current Java Environment. */ - public static final Platform PLATFORM = Architecture.CURRENT.getPlatform(); + public static Platform getPlatform() { + return Architecture.CURRENT.getPlatform(); + } /** * The json serializer to {@link Platform}. From 5d768fe64eabf441a042ec9f3b9c16137073cf5d Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 4 Sep 2021 16:19:54 +0800 Subject: [PATCH 04/12] update I18N text --- HMCL/src/main/resources/assets/lang/I18N.properties | 4 ++-- HMCL/src/main/resources/assets/lang/I18N_zh.properties | 6 ++++++ HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties | 5 ++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 904757b4a..d3ed040d1 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -492,8 +492,8 @@ profile.use_relative_path=Use relative path for game directory if possible repositories.custom=Custom Maven Repository (%s) repositories.maven_central=Maven Central (General) -repositories.aliyun_mirror=Maven mirror for Aliyun (Chinese mainland) -repositories.chooser=JavaFX is missing. Do you want to automatically download and load OpenJFX from web?\nSelect download source: +repositories.aliyun_mirror=Aliyun Maven Repository (Chinese mainland) +repositories.chooser=JavaFX is missing. Do you want to automatically download and load JavaFX runtime components from web?\nSelect 'Yes' to download the JavaFX runtime components from the specified download source and start the HMCL, or select 'No' to exit the program.\nDownload Source: repositories.chooser.title=Do you want to download JavaFX? resourcepack=Resource Pack diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 6f8db0075..f4ce2f6d3 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -350,6 +350,12 @@ profile.title=遊戲目錄 profile.selected=已選取 profile.use_relative_path=如可行,則在遊戲目錄使用相對路徑 +repositories.custom=自定義 Maven 倉庫(%s) +repositories.maven_central=Maven Central(通用) +repositories.aliyun_mirror=阿里雲 Maven 倉庫(中國大陸) +repositories.chooser=缺少 JavaFX 運行環境。是否需要從網絡下載並加載 JavaFX 運行時組件?\n選擇“是”從指定下載源下載 JavaFX 運行時組件並啟動HMCL,選擇“否”退出程式。\n下載源: +repositories.chooser.title=是否下載 JavaFX? + selector.choose=選擇 selector.choose_file=選擇檔案 selector.custom=自訂 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index c812d59e9..a5ff61024 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -501,11 +501,10 @@ profile.use_relative_path=若可能,游戏目录使用相对路径 repositories.custom=自定义 Maven 仓库(%s) repositories.maven_central=Maven Central(通用) -repositories.aliyun_mirror=阿里云 Maven 镜像源(中国大陆) -repositories.chooser=JavaFX 缺失。是否需要从网络下载并加载 OpenJFX?\n请选择下载源: +repositories.aliyun_mirror=阿里云 Maven 仓库(中国大陆) +repositories.chooser=缺少 JavaFX 运行环境,是否需要从网络下载并加载 JavaFX 运行时组件?\n选择“是”从指定下载源下载 JavaFX 运行时组件并启动 HMCL,选择“否”退出程序。\n下载源: repositories.chooser.title=是否下载 JavaFX? - resourcepack=资源包 search=搜索 From 3ff2284ccc16eb4510c868645a716d731127196d Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 7 Sep 2021 19:41:57 +0800 Subject: [PATCH 05/12] Generating openjfx-dependencies.json using gradle task --- build.gradle | 39 ++++++++++++++++++++++++++ tools/generate-openjfx-dependencies.sh | 30 -------------------- 2 files changed, 39 insertions(+), 30 deletions(-) delete mode 100755 tools/generate-openjfx-dependencies.sh diff --git a/build.gradle b/build.gradle index 64219ae39..14f0c33ca 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,13 @@ +import com.google.gson.* + buildscript { repositories { mavenCentral() maven { url 'https://plugins.gradle.org/m2/' } } + dependencies { + classpath group: 'com.google.code.gson', name: 'gson', version: '2.8.1' + } } plugins { @@ -49,3 +54,37 @@ subprojects { } defaultTasks 'clean', 'build' + +var jfxModules = ['base', 'controls', 'fxml', 'graphics', 'media', 'web'] +var jfxArches = ['linux', /*'linux-arm32-monocle',*/ 'linux-aarch64', 'mac', 'mac-aarch64', 'win', 'win-x86'] +var jfxVersion = "17-ea+17" + +task 'generateOpenJFXDependencies' { + doLast { + var jfxDependencies = new JsonArray() + + jfxModules.forEach { module -> + JsonObject m = new JsonObject() + m.addProperty("module", "javafx.$module") + m.addProperty("groupId", "org.openjfx") + m.addProperty("artifactId", "javafx-$module") + m.addProperty("version", jfxVersion) + + var sha1 = new JsonObject() + jfxArches.forEach { arch -> + if (!(module == 'web' && arch.endsWith('linux-arm32-monocle'))) { + sha1.addProperty( + arch, + new URL("https://repo1.maven.org/maven2/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar.sha1").getText("UTF-8") + ) + } + } + m.add("sha1", sha1) + + jfxDependencies.add(m) + } + + file('HMCL/src/main/resources/assets/openjfx-dependencies.json').text = + new GsonBuilder().setPrettyPrinting().create().toJson(jfxDependencies) + } +} \ No newline at end of file diff --git a/tools/generate-openjfx-dependencies.sh b/tools/generate-openjfx-dependencies.sh deleted file mode 100755 index 8a810e087..000000000 --- a/tools/generate-openjfx-dependencies.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -set -e - -modules=(base controls fxml graphics media web) -arches=(linux linux-aarch64 mac mac-aarch64 win win-x86) -version=17-ea+17 - -echo '[' -for module in ${modules[@]}; do - if [[ ! "$module" == "${modules[0]}" ]]; then - echo ',' - fi - echo ' {' - echo ' "module": "javafx.'$module'",' - echo ' "groupId": "org.openjfx",' - echo ' "artifactId": "javafx-'$module'",' - echo ' "version": "'$version'",' - echo ' "sha1": {' - for arch in ${arches[@]}; do - if [[ ! "$arch" == "${arches[0]}" ]]; then - echo ',' - fi - echo -n ' "'$arch'": "'$(curl -Ss "https://repo1.maven.org/maven2/org/openjfx/javafx-$module/$version/javafx-$module-$version-$arch.jar.sha1")'"' - done - echo - echo ' }' - echo -n ' }' -done -echo -echo ']' From 7a2c52b34c2cbe24b02281e4160f1e1dda9967f9 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 7 Sep 2021 20:07:11 +0800 Subject: [PATCH 06/12] Download OpenJFX on Linux ARM32 --- .../hmcl/util/SelfDependencyPatcher.java | 28 +++++++++++++++---- .../resources/assets/lang/I18N.properties | 1 + .../resources/assets/lang/I18N_zh.properties | 1 + .../assets/lang/I18N_zh_CN.properties | 1 + .../assets/openjfx-dependencies.json | 7 ++++- build.gradle | 2 +- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java index 01867c155..472b10d1d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java @@ -87,6 +87,8 @@ public final class SelfDependencyPatcher { switch (Architecture.CURRENT) { case X86_64: return "linux"; + case ARM: + return "linux-arm32-monocle"; case ARM64: return "linux-aarch64"; } @@ -134,6 +136,10 @@ public final class SelfDependencyPatcher { } return DEPENDENCIES_DIR_PATH.resolve(filename()); } + + public boolean isSupported() { + return CURRENT_ARCH_CLASSIFIER != null && sha1.containsKey(CURRENT_ARCH_CLASSIFIER); + } } static final class Repository { @@ -251,7 +257,14 @@ public final class SelfDependencyPatcher { final JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - for (String line : i18n("repositories.chooser").split("\n")) { + final String chooserText; + if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.CURRENT == Architecture.ARM) { + chooserText = i18n("repositories.chooser.linux_arm32"); + } else { + chooserText = i18n("repositories.chooser"); + } + + for (String line : chooserText.split("\n")) { panel.add(new JLabel(line)); } @@ -294,10 +307,12 @@ public final class SelfDependencyPatcher { LOG.info(" - Loading dependencies..."); Set modules = JFX_DEPENDENCIES.stream() + .filter(DependencyDescriptor::isSupported) .map(it -> it.module) .collect(toSet()); Path[] jars = JFX_DEPENDENCIES.stream() + .filter(DependencyDescriptor::isSupported) .map(DependencyDescriptor::localPath) .toArray(Path[]::new); @@ -337,6 +352,9 @@ public final class SelfDependencyPatcher { List missing = new ArrayList<>(); for (DependencyDescriptor dependency : JFX_DEPENDENCIES) { + if (!dependency.isSupported()) { + continue; + } if (!Files.exists(dependency.localPath())) { missing.add(dependency); continue; @@ -390,10 +408,10 @@ public final class SelfDependencyPatcher { setLocationRelativeTo(null); GridBagLayout gridBagLayout = new GridBagLayout(); - gridBagLayout.columnWidths = new int[] { 600, 0 }; - gridBagLayout.rowHeights = new int[] { 0, 0, 0, 200 }; - gridBagLayout.columnWeights = new double[] { 1.0, Double.MIN_VALUE }; - gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 1.0 }; + gridBagLayout.columnWidths = new int[]{600, 0}; + gridBagLayout.rowHeights = new int[]{0, 0, 0, 200}; + gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; + gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 1.0}; panel.setLayout(gridBagLayout); progressText = new JLabel(""); diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index d3ed040d1..7c8bebf19 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -494,6 +494,7 @@ repositories.custom=Custom Maven Repository (%s) repositories.maven_central=Maven Central (General) repositories.aliyun_mirror=Aliyun Maven Repository (Chinese mainland) repositories.chooser=JavaFX is missing. Do you want to automatically download and load JavaFX runtime components from web?\nSelect 'Yes' to download the JavaFX runtime components from the specified download source and start the HMCL, or select 'No' to exit the program.\nDownload Source: +repositories.chooser.linux_arm32=JavaFX is missing. Do you want to automatically download and load JavaFX runtime components from web?\nSelect 'Yes' to download the JavaFX runtime components from the specified download source and start the HMCL, or select 'No' to exit the program.\nNote: Some components cannot be downloaded temporarily on Linux ARM32 platform, so HMCL may crash at runtime.\nDownload Source: repositories.chooser.title=Do you want to download JavaFX? resourcepack=Resource Pack diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index f4ce2f6d3..276a014b2 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -354,6 +354,7 @@ repositories.custom=自定義 Maven 倉庫(%s) repositories.maven_central=Maven Central(通用) repositories.aliyun_mirror=阿里雲 Maven 倉庫(中國大陸) repositories.chooser=缺少 JavaFX 運行環境。是否需要從網絡下載並加載 JavaFX 運行時組件?\n選擇“是”從指定下載源下載 JavaFX 運行時組件並啟動HMCL,選擇“否”退出程式。\n下載源: +repositories.chooser.linux_arm32=缺少 JavaFX 運行環境。是否需要從網絡下載並加載 JavaFX 運行時組件?\n選擇“是”從指定下載源下載 JavaFX 運行時組件並啟動HMCL,選擇“否”退出程式。\n注意:Linux ARM32 平臺下暫時無法下載部分組件,運行時可能造成HMCL崩潰。\n下載源: repositories.chooser.title=是否下載 JavaFX? selector.choose=選擇 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index a5ff61024..51785a0b4 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -503,6 +503,7 @@ repositories.custom=自定义 Maven 仓库(%s) repositories.maven_central=Maven Central(通用) repositories.aliyun_mirror=阿里云 Maven 仓库(中国大陆) repositories.chooser=缺少 JavaFX 运行环境,是否需要从网络下载并加载 JavaFX 运行时组件?\n选择“是”从指定下载源下载 JavaFX 运行时组件并启动 HMCL,选择“否”退出程序。\n下载源: +repositories.chooser.linux_arm32=缺少 JavaFX 运行环境,是否需要从网络下载并加载 JavaFX 运行时组件?\n选择“是”从指定下载源下载 JavaFX 运行时组件并启动 HMCL,选择“否”退出程序。\n注意:Linux ARM32 平台下暂时无法下载部分组件,运行时可能造成 HMCL 崩溃。\n下载源: repositories.chooser.title=是否下载 JavaFX? resourcepack=资源包 diff --git a/HMCL/src/main/resources/assets/openjfx-dependencies.json b/HMCL/src/main/resources/assets/openjfx-dependencies.json index 5cb6f69e9..e385c19c5 100644 --- a/HMCL/src/main/resources/assets/openjfx-dependencies.json +++ b/HMCL/src/main/resources/assets/openjfx-dependencies.json @@ -6,6 +6,7 @@ "version": "17-ea+17", "sha1": { "linux": "70b3908f548c6031e1dd221124e91ea3891f5f3f", + "linux-arm32-monocle": "256bd3daf1cb8d52f3aed20a8bd400de91f82744", "linux-aarch64": "a55742f01e9e220b8c5143fa018a072e16ad5a8e", "mac": "79d57e0c2984dd2a006bc32a5615e71dac23386c", "mac-aarch64": "a395b2f11af9c4e90fd3297dd529fdaf258c1569", @@ -20,6 +21,7 @@ "version": "17-ea+17", "sha1": { "linux": "3a46f7cdb81c3e8d6f2c8b01bd0f373be30117f5", + "linux-arm32-monocle": "0ae5a384b402b34faaccce3c5a0d37362638ffa1", "linux-aarch64": "fd0a4e2f57ac740c4832f204a9b10093d02dec3b", "mac": "20c2c350a034c8bcf999e97e4e57c782fc3ebea3", "mac-aarch64": "88bafecc908d8e75b1a8496cda8217aa6d9f76fc", @@ -34,6 +36,7 @@ "version": "17-ea+17", "sha1": { "linux": "412ae5755e94fb46dd1c8c0890af570f9dad2985", + "linux-arm32-monocle": "e910781f8518604a144dea01eba168ab252cf46d", "linux-aarch64": "4e2a7938a24f23e86ab22f55c762e10277d52c5c", "mac": "5ff616acca97e7a51e35478f20eb292a4a14fa0f", "mac-aarch64": "4fade5a687f03c17b4d9c2219e7390f2599baf77", @@ -48,6 +51,7 @@ "version": "17-ea+17", "sha1": { "linux": "b11547378c13e2ff404a161460c8f3f68802af44", + "linux-arm32-monocle": "29963f4c3b69fc44a4b63576c655f793d3c87b82", "linux-aarch64": "bff9c9502737b580cd4b40d5e296f4a446c148ba", "mac": "6abbd5c3a87f2d50f63f2c2bbf3e27ff753e06f2", "mac-aarch64": "6d583ff9e01c9e3e0999615aebc4e875db5e368b", @@ -62,6 +66,7 @@ "version": "17-ea+17", "sha1": { "linux": "0d6e841e4c02b566f1f587ddee32ef0cc0ce38e1", + "linux-arm32-monocle": "eca17e33ccb8005ec546f1a44b8a99072b0aefa0", "linux-aarch64": "3c380afd3c1c9c346f8b78826333c56102f4315c", "mac": "ace33a63e65ec7da79ecbce9b6fc439af1815d2d", "mac-aarch64": "72f944f25ce4f8e6b0e31215692a743abc56efef", @@ -83,4 +88,4 @@ "win-x86": "6c894b0cda6e7f2ed825eb66aba9413b88fcc2f2" } } -] +] \ No newline at end of file diff --git a/build.gradle b/build.gradle index 14f0c33ca..812daa0f9 100644 --- a/build.gradle +++ b/build.gradle @@ -56,7 +56,7 @@ subprojects { defaultTasks 'clean', 'build' var jfxModules = ['base', 'controls', 'fxml', 'graphics', 'media', 'web'] -var jfxArches = ['linux', /*'linux-arm32-monocle',*/ 'linux-aarch64', 'mac', 'mac-aarch64', 'win', 'win-x86'] +var jfxArches = ['linux', 'linux-arm32-monocle', 'linux-aarch64', 'mac', 'mac-aarch64', 'win', 'win-x86'] var jfxVersion = "17-ea+17" task 'generateOpenJFXDependencies' { From 47523db3315428d4629422e5442e0b922fce658c Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 7 Sep 2021 21:35:35 +0800 Subject: [PATCH 07/12] Pre-Touch OpenJFX dependencies --- build.gradle | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 812daa0f9..e87091035 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,3 @@ -import com.google.gson.* - buildscript { repositories { mavenCentral() @@ -58,6 +56,10 @@ defaultTasks 'clean', 'build' var jfxModules = ['base', 'controls', 'fxml', 'graphics', 'media', 'web'] var jfxArches = ['linux', 'linux-arm32-monocle', 'linux-aarch64', 'mac', 'mac-aarch64', 'win', 'win-x86'] var jfxVersion = "17-ea+17" +var jfxRepos = ['https://repo1.maven.org/maven2', 'https://maven.aliyun.com/repository/central'] +var jfxDependenciesFile = file('HMCL/src/main/resources/assets/openjfx-dependencies.json') + +import com.google.gson.* task 'generateOpenJFXDependencies' { doLast { @@ -72,19 +74,44 @@ task 'generateOpenJFXDependencies' { var sha1 = new JsonObject() jfxArches.forEach { arch -> - if (!(module == 'web' && arch.endsWith('linux-arm32-monocle'))) { - sha1.addProperty( - arch, - new URL("https://repo1.maven.org/maven2/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar.sha1").getText("UTF-8") - ) + if (module == 'web' && arch.endsWith('linux-arm32-monocle')) { + return } + sha1.addProperty( + arch, + new URL("${jfxRepos[0]}/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar.sha1").getText("UTF-8") + ) } m.add("sha1", sha1) jfxDependencies.add(m) } - file('HMCL/src/main/resources/assets/openjfx-dependencies.json').text = - new GsonBuilder().setPrettyPrinting().create().toJson(jfxDependencies) + jfxDependenciesFile.text = new GsonBuilder().setPrettyPrinting().create().toJson(jfxDependencies) + } +} + +// Ensure that the mirror repository caches files +task 'preTouchOpenJFXDependencies' { + doLast { + jfxRepos.forEach { repo -> + jfxModules.forEach { module -> + jfxArches.forEach { arch -> + if (module == 'web' && arch.endsWith('linux-arm32-monocle')) { + return + } + var jarUrl = "$repo/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar" + + [jarUrl, jarUrl + ".sha1"].forEach { url -> + try { + new URL(url).getBytes() + System.out.println(url) + } catch (Throwable ignored) { + ignored.printStackTrace() + } + } + } + } + } } } \ No newline at end of file From ef118d3736e98b61802a548895776b708b1e252d Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 7 Sep 2021 22:23:30 +0800 Subject: [PATCH 08/12] fix: Progress bar reaches 100% in advance --- .../java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java index 472b10d1d..6188255b6 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java @@ -334,7 +334,7 @@ public final class SelfDependencyPatcher { final String url = repository.resolveDependencyURL(dependency); SwingUtilities.invokeLater(() -> { dialog.setStatus(url); - dialog.setProgress(currentProgress, dependencies.size()); + dialog.setProgress(currentProgress, dependencies.size() + 1); }); LOG.info("Downloading " + url); From fc21e76507bc0190c9cd28effe5dcd0e11d0f4fe Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 8 Sep 2021 09:13:33 +0800 Subject: [PATCH 09/12] use OpenJFX 17 --- .../assets/openjfx-dependencies.json | 94 +++++++++---------- build.gradle | 4 +- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/HMCL/src/main/resources/assets/openjfx-dependencies.json b/HMCL/src/main/resources/assets/openjfx-dependencies.json index e385c19c5..6ff271d09 100644 --- a/HMCL/src/main/resources/assets/openjfx-dependencies.json +++ b/HMCL/src/main/resources/assets/openjfx-dependencies.json @@ -3,89 +3,89 @@ "module": "javafx.base", "groupId": "org.openjfx", "artifactId": "javafx-base", - "version": "17-ea+17", + "version": "17", "sha1": { - "linux": "70b3908f548c6031e1dd221124e91ea3891f5f3f", - "linux-arm32-monocle": "256bd3daf1cb8d52f3aed20a8bd400de91f82744", - "linux-aarch64": "a55742f01e9e220b8c5143fa018a072e16ad5a8e", - "mac": "79d57e0c2984dd2a006bc32a5615e71dac23386c", - "mac-aarch64": "a395b2f11af9c4e90fd3297dd529fdaf258c1569", - "win": "215d14c2a6281487c3c2f3d6a5159f3126731473", - "win-x86": "19aa1a1575d187e0aa64e06daf392a3ac8083afb" + "linux": "476c7640c2320244d3156edbbc19a7eda275c1ed", + "linux-arm32-monocle": "1dad2b0479066fc65ce83ae276632b0be4a648f7", + "linux-aarch64": "b62b6cae95847fda1dce4a8a29edcf8a31b85333", + "mac": "61d52392b063be78f7cc1b0fbfc04dda7a835a15", + "mac-aarch64": "d77b645fa3e1a6270783178541944e4b4a457cd2", + "win": "b63b9696f73009ca5002f49ec4db73576e2de168", + "win-x86": "d35c89f5cb5f9dd8c54c69b4a153a94377e60931" } }, { "module": "javafx.controls", "groupId": "org.openjfx", "artifactId": "javafx-controls", - "version": "17-ea+17", + "version": "17", "sha1": { - "linux": "3a46f7cdb81c3e8d6f2c8b01bd0f373be30117f5", - "linux-arm32-monocle": "0ae5a384b402b34faaccce3c5a0d37362638ffa1", - "linux-aarch64": "fd0a4e2f57ac740c4832f204a9b10093d02dec3b", - "mac": "20c2c350a034c8bcf999e97e4e57c782fc3ebea3", - "mac-aarch64": "88bafecc908d8e75b1a8496cda8217aa6d9f76fc", - "win": "acb49a74d373de98b9bb01fed698e3d8be7f439b", - "win-x86": "086b1cff015846da0e26780dfeb2a62846508891" + "linux": "851a1896fbd8548fb3671aa689b305b2cfad956a", + "linux-arm32-monocle": "9add14fda362a1a2d1cd3a84de60d67da2d7a5ae", + "linux-aarch64": "eb4116ebad81183980dde74b072a15b0f6c795ef", + "mac": "e73acf695ffccb4f904ff7b76de8999eefb547c2", + "mac-aarch64": "2254b351c1e6ce2ac9adcd3480fed883cebbb08b", + "win": "efc0f4edde079c22987064922530c67fa1350a9b", + "win-x86": "c9997e885f2dd71d8a4a7b89bc510923d2d412d6" } }, { "module": "javafx.fxml", "groupId": "org.openjfx", "artifactId": "javafx-fxml", - "version": "17-ea+17", + "version": "17", "sha1": { - "linux": "412ae5755e94fb46dd1c8c0890af570f9dad2985", - "linux-arm32-monocle": "e910781f8518604a144dea01eba168ab252cf46d", - "linux-aarch64": "4e2a7938a24f23e86ab22f55c762e10277d52c5c", - "mac": "5ff616acca97e7a51e35478f20eb292a4a14fa0f", - "mac-aarch64": "4fade5a687f03c17b4d9c2219e7390f2599baf77", - "win": "1a695125cb6298b991b8cb2bdbc634232c5066b0", - "win-x86": "d9437a12c9441f806429509603a757b8f86503f8" + "linux": "0a6f029f4fab0f01f00a838de1e65e20c6a92f02", + "linux-arm32-monocle": "922b73ca1813dfa87e66613d2904286bdd06e7f1", + "linux-aarch64": "7cd2f92f399f48acedc85636c9f07f6634d29669", + "mac": "54026a476bb95426e2e159bcf25bbf0832d2b7bf", + "mac-aarch64": "09ba33b0d9c19e9dcfd76fe7d95748a933e09b3b", + "win": "08d79ed85fa9dde644d4b37d93a02a2ef2818769", + "win-x86": "3bde4e98cee0a464f327b9e983aded3017fddbc0" } }, { "module": "javafx.graphics", "groupId": "org.openjfx", "artifactId": "javafx-graphics", - "version": "17-ea+17", + "version": "17", "sha1": { - "linux": "b11547378c13e2ff404a161460c8f3f68802af44", - "linux-arm32-monocle": "29963f4c3b69fc44a4b63576c655f793d3c87b82", - "linux-aarch64": "bff9c9502737b580cd4b40d5e296f4a446c148ba", - "mac": "6abbd5c3a87f2d50f63f2c2bbf3e27ff753e06f2", - "mac-aarch64": "6d583ff9e01c9e3e0999615aebc4e875db5e368b", - "win": "1dd878d1ac91bfe796a414e667d9c9972ff9bc96", - "win-x86": "49f7f59730f4ec53a84b3c689f92c8c20c1b1a23" + "linux": "88dc59568c14ec37ea1c42b3ba472d78b4b1030a", + "linux-arm32-monocle": "44284bba939b1249fcc3f5502a70bd48e88e1fa9", + "linux-aarch64": "40bd7094b8f43d4637a8a274b4b199835d6cfd5c", + "mac": "8b1d1124ce83e874db390016913fba7708f3592d", + "mac-aarch64": "b6326f61f7e0effbf733d62e83b8317eb8e768b4", + "win": "2c56d252b97eba8b42f049c6ce145172d744ce08", + "win-x86": "c4d74a11a7ffb182fb43803756e678c87876a0a4" } }, { "module": "javafx.media", "groupId": "org.openjfx", "artifactId": "javafx-media", - "version": "17-ea+17", + "version": "17", "sha1": { - "linux": "0d6e841e4c02b566f1f587ddee32ef0cc0ce38e1", - "linux-arm32-monocle": "eca17e33ccb8005ec546f1a44b8a99072b0aefa0", - "linux-aarch64": "3c380afd3c1c9c346f8b78826333c56102f4315c", - "mac": "ace33a63e65ec7da79ecbce9b6fc439af1815d2d", - "mac-aarch64": "72f944f25ce4f8e6b0e31215692a743abc56efef", - "win": "46a29a35d0d11e75c5e76065ae9e16043165fe99", - "win-x86": "93834d0db720c4054fbc412045f1dfc4557ace19" + "linux": "e3bb829ce1447a37a8b0b669a446e0414e54e5c7", + "linux-arm32-monocle": "c978573b3e71191848f44c96d2c10e631b2cf9e9", + "linux-aarch64": "7e7a50e66e44b902c624680601d5336d7fd16614", + "mac": "ef463caf627c4c97b8e5c6a5ae16050c56aed966", + "mac-aarch64": "970178b32e17650591698bae9f23bf5ce1295bb6", + "win": "6012cc30ced1539f167b64959cb9d6a4283f7aa7", + "win-x86": "8568e1edcfc803a75349124b21a27c0d609b3870" } }, { "module": "javafx.web", "groupId": "org.openjfx", "artifactId": "javafx-web", - "version": "17-ea+17", + "version": "17", "sha1": { - "linux": "a502ea2af96bec4ccf8d1e4ff6d4bb03a691b6a9", - "linux-aarch64": "af4b8952521a3552b74624d31e967fc17669101c", - "mac": "268c305b2d3041578cd8aa3dffb744553459d1ac", - "mac-aarch64": "dd6cff3d0c6880b4249f5a286a5bcb4a135344ab", - "win": "c4ab5ee95133a7b52e3674e61a76fc6300809587", - "win-x86": "6c894b0cda6e7f2ed825eb66aba9413b88fcc2f2" + "linux": "bbd71beaf561b72f0d3eb6268d3114573b7799c3", + "linux-aarch64": "3cd86d9593e63ce7cbd5f9b5a09f8dcc0bbd7fdb", + "mac": "bf188c003e54ffb4cff6a9be7ce437fa269964fe", + "mac-aarch64": "a9408d443fa95cd3e2b1f170a3abeaace33d3af5", + "win": "be4a308dbcc947af2a9d9c42a72fd7f6d0ba77b9", + "win-x86": "3d93e1801c720747d4551de26ef5869ff9eacabc" } } ] \ No newline at end of file diff --git a/build.gradle b/build.gradle index e87091035..bfef6ee62 100644 --- a/build.gradle +++ b/build.gradle @@ -53,9 +53,9 @@ subprojects { defaultTasks 'clean', 'build' -var jfxModules = ['base', 'controls', 'fxml', 'graphics', 'media', 'web'] +var jfxModules = ['base', 'graphics', 'controls', 'fxml', 'media', 'web'] var jfxArches = ['linux', 'linux-arm32-monocle', 'linux-aarch64', 'mac', 'mac-aarch64', 'win', 'win-x86'] -var jfxVersion = "17-ea+17" +var jfxVersion = "17" var jfxRepos = ['https://repo1.maven.org/maven2', 'https://maven.aliyun.com/repository/central'] var jfxDependenciesFile = file('HMCL/src/main/resources/assets/openjfx-dependencies.json') From 8f591f99bdc6b0a3c5d66f7accabefdfff604c27 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 8 Sep 2021 09:38:45 +0800 Subject: [PATCH 10/12] reorder dependencies --- .../assets/openjfx-dependencies.json | 30 +++++++++---------- build.gradle | 4 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/HMCL/src/main/resources/assets/openjfx-dependencies.json b/HMCL/src/main/resources/assets/openjfx-dependencies.json index 6ff271d09..a7ea1232a 100644 --- a/HMCL/src/main/resources/assets/openjfx-dependencies.json +++ b/HMCL/src/main/resources/assets/openjfx-dependencies.json @@ -14,6 +14,21 @@ "win-x86": "d35c89f5cb5f9dd8c54c69b4a153a94377e60931" } }, + { + "module": "javafx.graphics", + "groupId": "org.openjfx", + "artifactId": "javafx-graphics", + "version": "17", + "sha1": { + "linux": "88dc59568c14ec37ea1c42b3ba472d78b4b1030a", + "linux-arm32-monocle": "44284bba939b1249fcc3f5502a70bd48e88e1fa9", + "linux-aarch64": "40bd7094b8f43d4637a8a274b4b199835d6cfd5c", + "mac": "8b1d1124ce83e874db390016913fba7708f3592d", + "mac-aarch64": "b6326f61f7e0effbf733d62e83b8317eb8e768b4", + "win": "2c56d252b97eba8b42f049c6ce145172d744ce08", + "win-x86": "c4d74a11a7ffb182fb43803756e678c87876a0a4" + } + }, { "module": "javafx.controls", "groupId": "org.openjfx", @@ -44,21 +59,6 @@ "win-x86": "3bde4e98cee0a464f327b9e983aded3017fddbc0" } }, - { - "module": "javafx.graphics", - "groupId": "org.openjfx", - "artifactId": "javafx-graphics", - "version": "17", - "sha1": { - "linux": "88dc59568c14ec37ea1c42b3ba472d78b4b1030a", - "linux-arm32-monocle": "44284bba939b1249fcc3f5502a70bd48e88e1fa9", - "linux-aarch64": "40bd7094b8f43d4637a8a274b4b199835d6cfd5c", - "mac": "8b1d1124ce83e874db390016913fba7708f3592d", - "mac-aarch64": "b6326f61f7e0effbf733d62e83b8317eb8e768b4", - "win": "2c56d252b97eba8b42f049c6ce145172d744ce08", - "win-x86": "c4d74a11a7ffb182fb43803756e678c87876a0a4" - } - }, { "module": "javafx.media", "groupId": "org.openjfx", diff --git a/build.gradle b/build.gradle index bfef6ee62..259e864b3 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,7 @@ task 'generateOpenJFXDependencies' { } sha1.addProperty( arch, - new URL("${jfxRepos[0]}/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar.sha1").getText("UTF-8") + new URL("${jfxRepos.head()}/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar.sha1").getText("UTF-8") ) } m.add("sha1", sha1) @@ -94,7 +94,7 @@ task 'generateOpenJFXDependencies' { // Ensure that the mirror repository caches files task 'preTouchOpenJFXDependencies' { doLast { - jfxRepos.forEach { repo -> + jfxRepos.tail().forEach { repo -> jfxModules.forEach { module -> jfxArches.forEach { arch -> if (module == 'web' && arch.endsWith('linux-arm32-monocle')) { From e4ac7915694a866c1798d25bc2fa11ec8e495b98 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 8 Sep 2021 09:53:26 +0800 Subject: [PATCH 11/12] exclude javafx.media on linux arm32 --- HMCL/src/main/resources/assets/openjfx-dependencies.json | 1 - build.gradle | 8 ++++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/resources/assets/openjfx-dependencies.json b/HMCL/src/main/resources/assets/openjfx-dependencies.json index a7ea1232a..fc5fa6771 100644 --- a/HMCL/src/main/resources/assets/openjfx-dependencies.json +++ b/HMCL/src/main/resources/assets/openjfx-dependencies.json @@ -66,7 +66,6 @@ "version": "17", "sha1": { "linux": "e3bb829ce1447a37a8b0b669a446e0414e54e5c7", - "linux-arm32-monocle": "c978573b3e71191848f44c96d2c10e631b2cf9e9", "linux-aarch64": "7e7a50e66e44b902c624680601d5336d7fd16614", "mac": "ef463caf627c4c97b8e5c6a5ae16050c56aed966", "mac-aarch64": "970178b32e17650591698bae9f23bf5ce1295bb6", diff --git a/build.gradle b/build.gradle index 259e864b3..adc6ceaf1 100644 --- a/build.gradle +++ b/build.gradle @@ -58,6 +58,9 @@ var jfxArches = ['linux', 'linux-arm32-monocle', 'linux-aarch64', 'mac', 'mac-aa var jfxVersion = "17" var jfxRepos = ['https://repo1.maven.org/maven2', 'https://maven.aliyun.com/repository/central'] var jfxDependenciesFile = file('HMCL/src/main/resources/assets/openjfx-dependencies.json') +var jfxUnsupported = [ + 'linux-arm32-monocle': ['media', 'web'] +] import com.google.gson.* @@ -74,9 +77,10 @@ task 'generateOpenJFXDependencies' { var sha1 = new JsonObject() jfxArches.forEach { arch -> - if (module == 'web' && arch.endsWith('linux-arm32-monocle')) { + if (jfxUnsupported.getOrDefault(arch, []).contains(module)) { return } + sha1.addProperty( arch, new URL("${jfxRepos.head()}/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar.sha1").getText("UTF-8") @@ -97,7 +101,7 @@ task 'preTouchOpenJFXDependencies' { jfxRepos.tail().forEach { repo -> jfxModules.forEach { module -> jfxArches.forEach { arch -> - if (module == 'web' && arch.endsWith('linux-arm32-monocle')) { + if (jfxUnsupported.getOrDefault(arch, []).contains(module)) { return } var jarUrl = "$repo/org/openjfx/javafx-$module/$jfxVersion/javafx-$module-$jfxVersion-${arch}.jar" From 36878c81aab675787900a061fc9212f894cc86f5 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 8 Sep 2021 10:17:20 +0800 Subject: [PATCH 12/12] update I18N --- HMCL/src/main/resources/assets/lang/I18N.properties | 4 ++-- HMCL/src/main/resources/assets/lang/I18N_zh.properties | 4 ++-- HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 7c8bebf19..d90226ac9 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -491,8 +491,8 @@ profile.selected=Selected profile.use_relative_path=Use relative path for game directory if possible repositories.custom=Custom Maven Repository (%s) -repositories.maven_central=Maven Central (General) -repositories.aliyun_mirror=Aliyun Maven Repository (Chinese mainland) +repositories.maven_central=Universal (Maven Central) +repositories.aliyun_mirror=Chinese mainland (Aliyun Maven Repository) repositories.chooser=JavaFX is missing. Do you want to automatically download and load JavaFX runtime components from web?\nSelect 'Yes' to download the JavaFX runtime components from the specified download source and start the HMCL, or select 'No' to exit the program.\nDownload Source: repositories.chooser.linux_arm32=JavaFX is missing. Do you want to automatically download and load JavaFX runtime components from web?\nSelect 'Yes' to download the JavaFX runtime components from the specified download source and start the HMCL, or select 'No' to exit the program.\nNote: Some components cannot be downloaded temporarily on Linux ARM32 platform, so HMCL may crash at runtime.\nDownload Source: repositories.chooser.title=Do you want to download JavaFX? diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 276a014b2..31647f297 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -351,8 +351,8 @@ profile.selected=已選取 profile.use_relative_path=如可行,則在遊戲目錄使用相對路徑 repositories.custom=自定義 Maven 倉庫(%s) -repositories.maven_central=Maven Central(通用) -repositories.aliyun_mirror=阿里雲 Maven 倉庫(中國大陸) +repositories.maven_central=全球(Maven Central) +repositories.aliyun_mirror=中國大陸(阿里雲 Maven 倉庫) repositories.chooser=缺少 JavaFX 運行環境。是否需要從網絡下載並加載 JavaFX 運行時組件?\n選擇“是”從指定下載源下載 JavaFX 運行時組件並啟動HMCL,選擇“否”退出程式。\n下載源: repositories.chooser.linux_arm32=缺少 JavaFX 運行環境。是否需要從網絡下載並加載 JavaFX 運行時組件?\n選擇“是”從指定下載源下載 JavaFX 運行時組件並啟動HMCL,選擇“否”退出程式。\n注意:Linux ARM32 平臺下暫時無法下載部分組件,運行時可能造成HMCL崩潰。\n下載源: repositories.chooser.title=是否下載 JavaFX? diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 51785a0b4..27e70633f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -500,8 +500,8 @@ profile.selected=已选中 profile.use_relative_path=若可能,游戏目录使用相对路径 repositories.custom=自定义 Maven 仓库(%s) -repositories.maven_central=Maven Central(通用) -repositories.aliyun_mirror=阿里云 Maven 仓库(中国大陆) +repositories.maven_central=全球(Maven Central) +repositories.aliyun_mirror=中国大陆(阿里云 Maven 仓库) repositories.chooser=缺少 JavaFX 运行环境,是否需要从网络下载并加载 JavaFX 运行时组件?\n选择“是”从指定下载源下载 JavaFX 运行时组件并启动 HMCL,选择“否”退出程序。\n下载源: repositories.chooser.linux_arm32=缺少 JavaFX 运行环境,是否需要从网络下载并加载 JavaFX 运行时组件?\n选择“是”从指定下载源下载 JavaFX 运行时组件并启动 HMCL,选择“否”退出程序。\n注意:Linux ARM32 平台下暂时无法下载部分组件,运行时可能造成 HMCL 崩溃。\n下载源: repositories.chooser.title=是否下载 JavaFX?