Skip to content

Commit 098207a

Browse files
committed
支持检测 Windows 和 macOS ARM64 平台上的 x86_64 翻译功能
1 parent 36cb4b6 commit 098207a

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

  • HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform

HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/Platform.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*/
1818
package org.jackhuang.hmcl.util.platform;
1919

20+
import java.nio.file.Files;
21+
import java.nio.file.Path;
22+
2023
public record Platform(OperatingSystem os, Architecture arch) {
2124
public static final Platform UNKNOWN = new Platform(OperatingSystem.UNKNOWN, Architecture.UNKNOWN);
2225

@@ -41,6 +44,18 @@ public record Platform(OperatingSystem os, Architecture arch) {
4144
public static final Platform CURRENT_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.CURRENT_ARCH);
4245
public static final Platform SYSTEM_PLATFORM = Platform.getPlatform(OperatingSystem.CURRENT_OS, Architecture.SYSTEM_ARCH);
4346

47+
private static final boolean SUPPORTED_TRANSLATION_X86_64;
48+
49+
static {
50+
if (SYSTEM_PLATFORM.equals(WINDOWS_ARM64)) {
51+
SUPPORTED_TRANSLATION_X86_64 = OperatingSystem.SYSTEM_BUILD_NUMBER >= 21277;
52+
} else if (SYSTEM_PLATFORM.equals(MACOS_ARM64)) {
53+
SUPPORTED_TRANSLATION_X86_64 = Files.isRegularFile(Path.of("/usr/libexec/rosetta/runtime"));
54+
} else {
55+
SUPPORTED_TRANSLATION_X86_64 = false;
56+
}
57+
}
58+
4459
public static boolean isCompatibleWithX86Java() {
4560
return Architecture.SYSTEM_ARCH.isX86() || SYSTEM_PLATFORM.equals(MACOS_ARM64) || SYSTEM_PLATFORM.equals(WINDOWS_ARM64);
4661
}

0 commit comments

Comments
 (0)