你已经用 PowerNukkitX 开过服,但朋友要的是「和官方一模一样」的基岩服——区块格式、红石行为、官方更新节奏都对得上。Minexa 里那条路叫 BDS:Mojang 官方发布的基岩版专用服务器 bedrock_server。
它和别的核心不一样的地方只有一个,但这个差别决定了全部操作顺序:官方只发布 Linux x86_64 构建,而手机是 arm64。应用的做法是在 PRoot Ubuntu 容器里用 box64 把 x86_64 指令转译成 arm64 执行。所以 BDS 不是「选个版本点下载就能跑」,它有一份需要单独初始化的运行环境。
这一页按顺序走一遍:装环境 → 装核心 → 启动 → 让朋友进来 → 出问题怎么看。
BDS 的运行环境独立于 Java:不要去找 JDK,也不在 Java 版本列表里。
初始化只能手动点:「依赖与环境管理 → BDS → 初始化环境」,约 32MB 下载,占用约 380MB 磁盘。
端口是 UDP 19132,不是 Java 的 TCP 25565。
转译运行比原生慢,性能约为原生一半,这是预期不是故障。
离线模式(
online-mode=false)下 必须关掉白名单,否则 BDS 会拒绝启动。
BDS 在手机上是怎么跑起来的#
先把链路说清,后面报错才知道该看哪一层。BDS 启动要经过四层:
| 层 | 是什么 | 出问题时的表现 |
|---|---|---|
| Ubuntu 容器(PRoot) | 提供 glibc 环境,box64 自己是 glibc 程序 | 初始化阶段报「容器」类错误 |
| box64 | 把 x86_64 指令翻译成 arm64 | 初始化阶段报「box64」类错误 |
| x86_64 运行库 | bedrock_server 依赖的 7 个基础库 + 历史版本兼容库 | 启动即 Error loading needed libs |
bedrock_server 本体 | 官方可执行文件,约 244MB | 启动后立刻退出、或一直不出就绪日志 |
box64 与基础运行库都随 APK 内置,所以初始化只需要下载容器(约 32MB),不用联网装转译器。这是 1.4.1 之后的设计:早期版本要从 .deb 里解包,在 Android 14 上会直接失败。
官方 bedrock_server 是动态链接的 x86_64 程序,DT_NEEDED 里有 libc、libpthread、libm 等 7 个库。box64 只翻译指令,不提供这些库。库必须自己给,而且不能放进 box64 自己的库路径——那份 libc.so.6 是 x86_64 的,会顶掉 box64 需要的 aarch64 版本,直接 wrong ELF class。
第一步:初始化 BDS 环境#
入口在「更多 → 依赖与环境管理」,切到 BDS 那一栏(它和 Java、依赖、Termux 环境、PHP 并列,不在 Java 分组里)。
确认存储权限:BDS 的容器和核心都落在应用私有目录,但服务器目录在公共存储,先确保已经授予「所有文件访问」。
点「初始化环境」:这是唯一入口。点启动不会临时帮你装——首次要下几十兆、耗时几分钟,塞进启动路径只会让你以为卡死。
看三段进度:容器(0–60%)→ box64(60–92%)→ 实测(92–100%)。进度是真实阶段,不是假滚动条。
等「已就绪」:卡片显示就绪后,环境才算可用。
初始化过程中控制台会持续输出 [bds] … 开头的日志:阶段切换、每 10% 进度、每一次换源都会写一行。如果卡住,先看控制台最后一行停在哪一段,而不是猜。
失败了不用重装整个应用。卡片会按类型给原因,并且可以原地重试:
| 错误类型 | 意思 | 怎么办 |
|---|---|---|
| 空间不足 | 私有目录放不下容器 | 清出至少 1GB 再试 |
| 容器 / 下载失败 | rootfs 六个镜像都连不上 | 换网络(关代理或换 Wi-Fi)后重试 |
| 包损坏 | 下载内容校验不过 | 直接点重试,会重新下 |
| 解压失败 | rootfs 解压中断 | 重试;连续失败就「移除并重装」 |
| 实测失败 | 环境装好了但跑不起来 | 先跑一次「环境体检」,看是 DNS、TCP、TLS 还是 CA 证书 |
「环境体检」查四件事:容器内能否解析 DNS、能否连通 TCP、TLS 是否可用、CA 证书是否齐全。这一步的价值是:能直接看出卡在哪一层,而不是对着一个「初始化失败」反复重试。
容器是发行版级共享资源,BDS 会直接复用它,不用再下一份 rootfs。反过来说,「移除」BDS 环境时只删 box64 和就绪标记,不会删容器——Java 版 PRoot 还在用。
第二步:装 BDS 核心#
去底部「下载」页,核心家族里选 基岩版,然后选 BDS。BDS 有两条通道:
稳定版(Stable):正式发布版本,日常开服选这个;
预览版(Preview):官方实验通道,客户端也必须是预览版才能进。
1.5.0 起多了历史版本:点版本区的「历史版本」,可以选任何一个旧构建。弹窗里能搜索、按稳定/预览筛选、看到哪些已经装过,每条还带一个校验等级徽标。完整说明见 BDS 版本、升级与降级。
下载完成后,服务器目录里是官方那一整套:bedrock_server、若干 .so、server.properties、behavior_packs/、resource_packs/、definitions/。BDS 没有 eula.txt,不需要同意任何协议。
第三步:启动,认准就绪信号#
在概览页点「启动服务端」。第一次启动会做几件事:把 244MB 的主程序复制到私有目录(公共存储是 noexec,不能就地执行)、准备运行目录、铺回配置与资源链接。这一段比后面每次启动都慢。
启动成功的判据有两条,看到任意一条就说明服务端在收连接:
[INFO] Server started.
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 supported, port: 19132
[INFO] Accepting clients on [::]:19132Accepting clients on [::]:19132 才是最终判据。1.26 之后的版本不一定打印 Server started.,只等那一行会让你白等五分钟。
界面上「运行中」的状态由应用自己判定,不用你去对日志。真正确认能连,还是让朋友进来试。
第四步:让朋友进服#
基岩版走 UDP,默认端口 19132。三种情况:
同一个 Wi-Fi:概览页会显示手机局域网 IP,朋友在「服务器 → 添加服务器」里填
<手机IP>:19132;不在同一个网络:需要隧道或端口映射。注意 STUN 直连只支持 TCP,基岩服走不通;EasyTier 组网和 frp 类隧道可以,前提是隧道协议支持 UDP。选隧道前先确认这一点,否则会白折腾;
客户端版本:基岩版对协议版本比 Java 版更严,客户端和服务端版本必须对得上,不匹配时客户端直接显示「无法连接」。
配置与玩家管理:和 Java 版不一样的地方#
BDS 读的也是 server.properties,但键不一样。配置页对基岩专属键做了中文化:禁止飞行、方块哈希校验、压缩算法、RakNet / NetherNet 传输、内容日志、脚本监听等。
两个必须知道的坑:
online-mode=false(不验证正版)时,如果 allow-list=true,BDS 会打印 Using an allowlist without online authentication ... is not allowed 然后立刻 Quit correctly——表现就是「一直启动中」。
所以 离线模式下白名单必须关。想让指定的人进来,用 EasyTier 组网或隧道侧做访问控制,不要指望白名单。
online-mode=true 需要连微软的 Minecraft 服务。国内网络经常不通,症状是启动约 75 秒后出现 Could not connect to Minecraft services,紧接着 Server stop requested——看起来像「刚开就停」。
应用读到 online-mode=true 只会打一条警告,不会替你改。如果网络确实连不上微软,把它改回 false,并按上一条关掉白名单。
玩家管理在「玩家」页:白名单、OP、踢出都支持,数据来自 allowlist.json 与 permissions.json。三点如实说明:
permissions.json只存 xuid 不存名字,应用额外记了一份 xuid → 玩家名映射,重启后仍显示真名;BDS 没有封禁命令,也没有封禁列表。想禁止某人进服,只能把他移出白名单并开启白名单;
基岩版没有离线玩家数据,切游戏模式只能对在线玩家生效。
性能预期:慢是正常的#
同一台手机上,BDS 的启动比原生核心慢一截,TPS 上限也低:
| 场景 | 大致表现 |
|---|---|
| 首次启动 | 复制 244MB 主程序 + 初始化运行目录,明显比后续慢 |
| 之后每次启动 | 通常几十秒内出就绪日志 |
| 2~5 人原版生存 | 可用;视距与模拟距离别开满 |
| 10 人以上或大型红石 | 不建议,转译开销会顶到天花板 |
把视距调低、减少实体与掉落物、关掉不用的内容日志,比换核心更有效。具体数值见 性能优化。
启动失败先看这四种#
| 现象 | 最可能的原因 | 处理 |
|---|---|---|
| 点启动直接提示「请先初始化 BDS 环境」 | 环境没装或就绪标记失效(升级过应用) | 去「依赖与环境管理 → BDS」重新初始化;文案可能写「重新初始化」,容器和 box64 都还在 |
| 一直「启动中」,控制台没有新日志 | 离线模式 + 白名单组合被 BDS 拒绝 | 打开 server.properties,把 allow-list 改 false |
| 启动后约 75 秒自动停止 | online-mode=true 连不上微软服务 | 改成 false,并关白名单 |
Error loading needed libs in elf | x86_64 库缺失或名字对不上 | 环境体检 → 重新初始化;不要手动往服务器目录塞 .so |
如果都不对,把终端里最后 30 行发出来再看。日志里 [bds] 前缀的行是应用写的,其余是 bedrock_server 自己的输出。
「依赖与环境管理 → BDS」显示环境已就绪,没有橙色的「需要重新初始化」。
服务器目录里有
bedrock_server和一批.so,且没有eula.txt。终端里能看到
Accepting clients on [::]:19132。手机和朋友的设备在同一个 Wi-Fi,朋友填的是
<手机IP>:19132。如果
online-mode=false,allow-list也是false。
下一步#
想换版本、降级或看校验徽标的含义:BDS 版本、升级与降级
让外网的朋友进来:联机与内网穿透页
和另外三个基岩核心比一比:基岩版核心对比
调视距、关实体,把转译开销让出来:性能优化