基于 Roothide Bootstrap 环境在 iOS 原生运行 Java 21 与 MC 服务端

教程 963 字 约 5 分钟

前言

一直以来,由于受 iOS 系统封闭性限制,在 iPhone、iPad 上运行原生 Java 环境、部署 Minecraft Java 版服务端,近乎是不可能的。如今,得益于 TrollStore 和 Roothide Bootstrap 环境,我们完全可以绕开这些限制,把手里闲置的 iOS 设备真正变成一台便携的服务器。

本文方案仅支持 iOS 14.0-17.0 系统的旧款设备,17.0.1 及以上版本无适配可能性。

底层逻辑

本教程依赖 TrollStore(巨魔商店)Roothide Bootstrap。TrollStore 利用 CoreTrust 漏洞打破限制实现提权,Bootstrap 则在此之上构建了隐蔽的无根(Rootless)运行环境。

但在该环境下,受 iOS 严格的代码签名机制(AMFI)限制,直接执行未经签名的二进制文件会被系统强制终止(终端会提示 Killed)。

因此,我们需要将其构建为标准的 deb 软件包,然后使用 ldid 进行签名,再通过 Roothide Patcher 进行架构转换,最后使用 Sileo 完成安装。

部署环境及所需工具

  • 一台已安装 TrollStore(巨魔商店)Roothide Bootstrap 的 iPhone、iPad 或 iPod touch(受支持的系统版本为 iOS/iPadOS 14.0-16.6.1 以及 16.7 RC 和 17.0)
  • 确保 Bootstrap 处于已引导状态(每次重启后需重新引导)
  • 在 Sileo 中安装 NewTerm、Filza、RootHide Patcher、wget、unzip、tar、xz-utils
  • 良好的访问国际互联网的环境
注意

正常安装 TrollStore 不会影响或清除个人数据,但涉及底层折腾,强烈建议在动手前先做好备份,以防万一。

我所用的设备为搭载 A10 处理器的 iPad 7,系统版本为 iPadOS 16.3。

49106BB4-C4BA-47F6-9CFE-85C86ED9A942

打包 deb 软件包

注意

本步骤中的命令均在 NewTerm 中执行!

首先,下载编译好的 Java 21 二进制包并解压(Java 压缩包来自 Amethyst-iOS 项目):

mkdir -p /var/mobile/Documents/jre21
cd /var/mobile/Documents
wget https://crystall1ne.dev/cdn/amethyst-ios/jre21-ios-aarch64.zip
unzip jre21-ios-aarch64.zip
tar -xvJf jre21-ios-arm64-20250915-release.tar.xz -C jre21/
rm jre21-ios-aarch64.zip jre21-ios-arm64-20250915-release.tar.xz

建立软件包框架:

mkdir -p my_java/DEBIAN
mkdir -p my_java/var/jb/usr/lib/jvm/java-21
mkdir -p my_java/var/jb/usr/bin

写入标准的 Control 文件:

cat << 'EOF' > my_java/DEBIAN/control
Package: com.java.jre21
Name: Java 21 Runtime
Version: 21.0.8
Architecture: iphoneos-arm64
Maintainer: RootHide Hacker
Author: OpenJDK
Section: Utilities
Description: A natively packaged Java for RootHide.
EOF

复制 Java 核心文件:

cp -r /var/mobile/Documents/jre21/* my_java/var/jb/usr/lib/jvm/java-21/

由于 iOS 限制,必须关闭 Java 的指针压缩才能运行。为避免每次执行都要加上参数,可以对 Java 命令进行封装:

cat << 'EOF' > my_java/var/jb/usr/bin/java
#!/bin/sh
exec /var/jb/usr/lib/jvm/java-21/bin/java -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 -XX:-UseCompressedOops -XX:-UseCompressedClassPointers "$@"
EOF

创建软链接:

ln -s /var/jb/usr/lib/jvm/java-21/bin/{jfr,jrunscript,jwebserver,keytool,rmiregistry} my_java/var/jb/usr/bin/

生成权限文件:

cat << 'EOF' > /var/mobile/Documents/ent.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.no-container</key>
    <true/>
    <key>platform-application</key>
    <true/>
    <key>com.apple.developer.dynamic-codesigning</key>
    <true/>
</dict>
</plist>
EOF

对可执行文件和动态库进行批量签名:

find /var/mobile/Documents/my_java/var/jb/usr/lib/jvm/java-21 -type f \( -path "*/bin/*" -o -name "*.dylib" \) -exec ldid -S/var/mobile/Documents/ent.xml {} \;

最后,赋予可执行权限并完成打包:

chmod -R 755 my_java/var/jb/usr/lib/jvm/java-21/bin
chmod -R 755 my_java/DEBIAN
dpkg-deb -Zzstd -b my_java jre21_rootless.deb

通过 Roothide Patcher 转换

打开 Filza,进入[jbroot] 中的 /var/mobile/Documents 目录,找到我们刚刚打包好的 deb 文件。长按并选择 使用 App 打开,在更多 App 中选择 Patcher。点击 Convert .deb,并等待转换完成。

IMG_3387

转换完成后,点击 ->Sileo,会自动打开安装界面。

使用 Sileo 安装

点击 获取,然后点击右下角的 队列 ,点击 确认 进行安装即可。

IMG_3388

运行 Minecraft Java 服务端

实测原版 MC 服务端可以正常运行,并且可以成功进入游戏。在跑图等高负载场景下,服务器表现稳定,未出现明显的掉帧或卡顿。(注:本次仅针对原版纯净服,模组服的实际表现暂未测试。)

由于 Java 官方不支持 iOS 系统,程序会误以为自己运行在 macOS 上。这不影响正常使用,直接忽略即可。

成果展示:

IMG_3378

IMG_20260307_221804

基于 Roothide Bootstrap 环境在 iOS 原生运行 Java 21 与 MC 服务端
https://blog.iamsjy.com/2026/03/21/run-java-21-and-mc-server-natively-on-ios-based-on-roothide-bootstrap/
本文作者
Tony
发布日期
2026-03-21
更新日期
2026-03-21
转载或引用本文时请遵守 CC BY-NC-SA 4.0 许可协议,注明出处、不得用于商业用途!

评论