Repository navigation
Releases
MineServe Mobile 1.5.0
Minexa 1.5.0 更新日志
给用户看的版本说明。发布时同步到 GitHub Release。
这一版的主题是官方基岩版(BDS)从「只能装最新版」变成「任意版本都能装,而且知道自己装的是什么」,
顺带把设置页和终端页这两个每天都在用的页面重做了一遍。
官方 BDS:可以装任意历史版本了
以前 BDS 的版本号是官方接口说了算 —— 那个接口只给「当前稳定版」和「当前 Preview」两条直链,
所以你既装不了旧版,也没法在服务端插件只兼容旧版时退回去。
现在版本可以自己挑,两个入口都通:
- 下载页:选「官方基岩版(BDS)」后,版本抽屉不再只有一个最新版,而是列出全部可选版本
- 服务器管理 → BDS 核心版本 → 历史版本:给已经装好的服务器换版本(升级、降级、同版本重装都走这一条)
版本清单怎么来的:
- 内置存档清单:应用自带
bds-versions.json,123 个官方构建,从1.7.0.13一路到1.21.100.6。
官方不提供历史版本索引(构建号无法推算),这份清单让列表在完全离线时也有内容。 - 三路合并:官方 links 接口(链路最权威)→ 远端版本库(补历史版本与 SHA-256 摘要)→ 内置清单兜底。
合并结果缓存 30 分钟,拉不到远端时会如实标「离线清单」,不会让你误以为官方没发新版。 - 同版判定按前三段比:
1.26.61与1.26.61.1算同一版(构建号补零差异),
但1.21.100.6与1.21.100.62不算。排序按数字段比,不是字符串比 —— 否则1.9会排到1.10后面。
版本列表里能做的事:
- 搜索版本号(比如输入
1.20)、按「全部 / 稳定版」筛选 - 每条后面标出校验等级(
SHA-256或结构校验)和是否已安装 - 降级会二次确认,并明确说清三件事:世界存档可能已被新版本升级过、旧核心会保留成
bedrock_server.old-<版本>、
客户端也要换成对应版本才进得去
官方 BDS:安装包不再「下载完就信」
以前 BDS 安装包的校验只有一句「zip 能打开、里面有 bedrock_server、体积不太离谱」。
官方从未公布过旧版本的哈希,所以旧版包被换内容这件事根本发现不了。
现在按当前能拿到的最高一档校验:
| 校验档 | 判据 | 什么时候用得上 |
|---|---|---|
| 清单 SHA-256 | 版本库里该版本公布的摘要,逐字节比对 | 较新的版本 |
| 本地固定摘要 | 本机记录过的摘要,换源重下仍需一致 | 清单没摘要、但本机装过一次 |
| 结构 + CRC | zip 可读、全部条目 CRC 正确、含 bedrock_server、体积下限 |
两个都没有的老版本 |
配套的改动:
- 每个下载源下完立刻校验,通过才改名到最终路径,服务器目录里永远不会出现半截包
- 校验失败可以原地「重新下载」,不用退回下载页重新选一遍
- 结果界面上直接写明这次用的是哪一档(
安装包校验:SHA-256 通过)——
校验强度是「这次装的东西有没有被验过」的唯一证据
官方 BDS:跨版本兼容(这是老版本能跑起来的关键)
以前解压是按「1.21 的包长什么样」写死的。但官方包在两个时代形态完全不同:
≤1.16 是动态链接(自带一批 .so、主程序 40MB 级),1.21+ 是静态链接的单文件(265MB)。
直接套用一套假设,降级必然出问题。
现在改成读 zip 中央目录生成安装计划,不再看版本号:
- 自动识别包里的顶层目录(第三方重打包的包会多套一层,解压时剥离)
- 识别动态库集合、调试符号(跳过,省一半磁盘)、包里是否自带
server.properties - 拒绝 Windows 包与非法路径(
..、绝对路径) - 包里没有配置就写一份官方默认模板
落地后复检三件事:主程序体积下限、主程序 ELF 架构、以及同目录每个 .so 的架构是否与主程序一致。
另外会清掉新版安装包里没有的旧动态库:从动态链接的老版本升到静态链接的新版本时,
目录里会残留一堆 .so,loader 会抢先加载错版本,结果是刚装完就起不来;反向降级同样会残留。
只删 .so / .so.*,且只删「当前计划里不存在」的那些 —— 世界、插件、配置一律不碰。
官方 BDS:运行库缺什么,现在会直接告诉你是哪个
以前老版本启动失败只有一句:
Error loading needed libs in elf .../bedrock_server
然后就 exit=255,看不出缺的是哪一个库。
- SONAME 别名自动补:包里写的是
libcurl.so.4、而它的 SONAME 实际是libcurl-gnutls.so.4,
这类「名字对不上」的故障会按 ELF 里真实的 SONAME 建软链补齐,不写死任何库名 - 启动前一次性列出全部缺失的
DT_NEEDED,不是让 box64 报第一条就退出:
日志里会直接写「该版本还需 x86_64 运行库 libssl.so.1.1、libz.so.1…」 - 历史版本兼容运行库按依赖闭包补齐:从 6 个根库(libcurl / libstdc++ / libssl1.1 / libcrypto1.1 / libz / libnsl)
出发,按 41 条 soname → Ubuntu focal amd64 包做依赖闭包;走Packages.gz索引查真实文件名(不写死版本号),
下载后硬校验 SHA-256,只从data.tar.*里取需要的.so。libnsl.so.1在 focal 已被删除,单独从 old-releases 取。 - 运行目录的库搜索路径补上容器系统库作为最后一段兜底,但排在我们自己的 glibc 之后,不会顶掉内置运行库
升级提示:这套兼容库让「BDS 运行环境」的结构代次变成了
gen=2。
从旧版本升上来的用户会被判定为「需要重新初始化一次」,界面文案是「重新初始化」而不是「首次安装」——
PRoot 容器和 box64 都还在,按幂等规则复用,不会重复下载那 32MB 容器。
设置页重做
原来 20 多项平铺下来,想找「自动备份」得从头往下扫。现在分四组,常用项一屏可见:
- 通用:语言、服务器事件通知
- 下载与更新:下载源(含闪电图标一键测速换源)、APT 软件源、多线程下载加速
- 运行与保活:崩溃自动重启、Wi-Fi 锁、前台服务保活
- 关于与支持:版本号、检查更新、下载帮助
- 底部:GitHub / 邮箱 / QQ 群收成三个圆形图标 + 一行版本说明 —— 它们原来是各占一张整宽卡片,
加起来吃掉大半屏,但一年也点不了几次
细节修正:
- APT 软件源默认折叠(只留一行标题),这是「装依赖时才想起来」的低频项
- 版本号改成只读行:以前它带箭头、看着能点,点了没反应
- 开关行最小高度提到 48dp,两行文字不再挤在一起、误触到隔壁开关
- 关掉多线程下载时整块降到 50% 不透明度,不再出现「滑块是灰的但数字还高亮」这种看着还能调的错觉
- 可点击行补上
›箭头,语言行右侧「更改」降为次要色,层级统一
终端页重做
- 独立深浅色:终端有自己的开关(默认深色),与 App 主题解耦 —— 可能整套 App 用浅色但你仍想要黑底终端,也可能反过来。以前是写死的
#121419,浅色主题下这一页就是一块黑洞 - 日志色全套重做:色相归到项目色系,浅色/深色两套里同一色相语义一致;正文档对比度都过了 WCAG AA(≥4.5:1)。原来
#82AAFF和#89B4FA两个蓝几乎分不出来,现在 Debug 归 Indigo、Download 改亮青蓝,一眼能分开 - 会话标签:胶囊样式统一到全项目设计令牌,可切换、可关闭
- 标题栏:改成与其它页一致的「小字标签 + 标题」层级,标题位放当前会话名(「我在哪条会话」比「这是终端页」更需要一眼看到);高频操作只留「暂停滚动 / 复制」,低频的「新建 / 清空 / 设置」收进溢出菜单 —— 原来 5 个图标平铺,清空和新建误触代价很高
- 输入行改成自绘命令行:原来的
TextField在长命令 + 中文输入法下会把提示符>和$挤出屏幕 - 新增空状态:会话还没输出时说明「服务器启动后日志会实时显示在这里」,而不是一片空白
概览页:新增说明书入口
概览页服务器卡片右上角多了一个书本图标,点击用系统浏览器打开在线说明书站点。
旁边仍然是 QQ 群入口。
修复
- 修复 BDS 装完后再进下载页时,用户选的版本会被悄悄改回最新版
(bds-version.txt记的是四段版本号、清单键常是三段,被判成「不在列表里」) - 修复 BDS 版本永远提示「可更新到 1.26.62.1」,而装完还是同一句(段数不同但指同一版本)
- 修复从老版本升级到新版本(或反向降级)后残留的
.so让服务器刚装完就起不来 - 修复下载页对 BDS 隐藏「选择版本」按钮 —— 相当于把「只能装最新版」写死在界面上
- 修复 BDS 版本卡把版本通道(
Preview)显示成「支持的客户端版本」—— BDS 的版本号不是游戏版本号 - 修复新装 BDS 失败后留下一个「有目录、没核心」的幽灵服务器(现在失败会清掉半成品目录)
- 修复历史版本兼容软链每次启动都被重建:软链指向的是容器内路径、在宿主机上「看起来不存在」,
原判据跟着解析成失效,于是每次启动都把软链重新做一遍(现在是真正的幂等,只在缺的时候补) - 修复下载页 BDS 版本说明被截断成半句(那段文案比原来长一倍)
测试与构建
- 新增 7 个测试类:
BdsVersionsTest、BdsVersionMatrixTest、BdsPackageIntegrityTest、
BdsCompatibilityTest、BdsCompatLibsTest、BdsElfDepsTest、BdsEnvironmentMarkerTest - 其中联网的版本矩阵测试与兼容库端到端测试改为按需执行(
-DbdsMatrix/-DbdsCompat),
日常构建不再被它们拖慢、也不需要联网
兼容性
- 需要 Android 8.0(API 26)及以上,仅提供 arm64-v8a
- 与 1.4.2 同一把密钥签名,可直接覆盖安装
- BDS 用户升级后需在「依赖与环境管理 → BDS」点一次「重新初始化」:容器与已下载的组件会复用,不会重新下载 32MB
- Java 版服务器不受影响,无需任何额外操作
- 4 套语言(简中 / 繁中 / 英文 / 波斯文)新增文案已全部同步
MineServe Mobile 1.4.2
Minexa 1.4.2 更新日志
给用户看的版本说明。发布时同步到 GitHub Release。
这一版把「文件」页从一个只读列表,做成了能真正干活的文件管理器;同时把旧服务器迁移
做得能扛得住坏文件 —— 不用再因为一个读不出来的文件重搬整棵树。
文件管理:从只读列表变成完整工具
之前只能看、只能进子目录,想做点什么还得把文件导出到别的管理器。现在常用的操作都在页面里:
- 新建:新建文件夹、新建文件(可指定文件名)
- 重命名:行内直接改,同名会拦住并提示,不会覆盖
- 复制 / 粘贴:先「复制」,换到目标目录再「粘贴到此处」;粘贴时会提示来源,并拦住「把文件夹复制到它自己内部」这种会把磁盘写爆的操作
- 批量删除:多选后可一次删除,删除前明确显示「将永久删除 N 项内容,此操作不可撤销」,执行完分别报告成功与失败数量
- 多选:进入选择模式、全选、退出选择;切换目录时自动清空选择,避免「已选 N 项」指向上一层的路径
- 排序:按名称 / 修改时间 / 大小,每种都可升序降序;排序与隐藏文件过滤是纯内存操作,切换时不会重新扫盘
- 显示隐藏文件:默认隐藏,工具条上的「眼睛」一键开关;目录里只剩隐藏文件时会明确提示,而不是显示一个空页面
- 详情:类型、大小、修改时间、完整路径
- 复制路径:长按路径即可复制,方便贴到别处
- 回到根目录:一键跳回服务器根目录
文件管理:空页面不再让人以为文件没了
「列表是空的」以前有四种完全不同的原因,却长得一模一样。现在分别说明:
- 未获得存储权限 → 提示去授权,并给「去授权」入口
- 根目录还没创建 → 说明下载或导入服务器后会自动创建(全新安装的正常状态)
- 当前目录只有隐藏文件 → 提示点「眼睛」显示
- 目录确实是空的 → 才是真的空
另外,文件浏览不再依赖 Java 运行环境是否装好:首次启动、引导包还没下完时也能正常查看磁盘上已有的服务器。
旧服务器迁移:能扛住坏文件了
上一版迁移一旦遇到一个读不出来的文件(权限问题、悬空链接),整棵树白搬一次,而且只报
「源 1923 个文件 / 目标 1922 个」,谁也看不出少的是哪一个。
- 逐文件容错复制:单个坏文件不再中断整棵树的复制,其余文件照常搬完
- 逐文件比对校验:按「相对路径 + 字节数」逐项对比,缺失或大小不一时直接报出具体是哪个文件、什么原因
- 「忽略这些文件继续」:如果失败只是个别文件读不出来,对话框会多给这个出口,说明被忽略的文件会随旧目录一起删除,确认后其余文件完整搬过来 —— 不用永远卡在同一个坏文件上
- 重试只补缺:迁移的临时目录会保留,重试(含「忽略并继续」)只补没搬成功的文件,不重搬 750MB
- 可以明确跳过:不想迁移时可以选「跳过」,并说明跳过之后那些服务器不会显示;迁移状态不会反复打扰
修复
- 修复迁移失败时错误信息无法定位(只说总数对不上,不说差哪个文件)
- 修复「复制文件夹到它自己内部」会无限递归的问题(现在直接拦住并说明原因)
- 修复重命名成已存在的名字会覆盖原文件(现在拦下并提示同名项目已存在)
- 修复切换目录后多选状态仍指向上一层路径
- 修复首启(Java 环境未就绪)时文件页空白
兼容性
- 需要 Android 8.0(API 26)及以上,仅提供 arm64-v8a
- 与 1.4.1 同一把密钥签名,可直接覆盖安装
- 4 套语言(简中 / 繁中 / 英文 / 波斯文)新增文案已全部同步
MineServe Mobile 1.4.1
Minexa 1.4.1 更新日志
给用户看的版本说明。发布时同步到 GitHub Release。
这是 1.3.2 之后的一次大版本:新增官方基岩版服务器支持(BDS)、属性页整体重构、
服务器统一存到公共目录,安装包体积还砍掉了一半。
新功能:官方基岩版专用服务器(BDS)
现在可以直接在手机上跑 Mojang 官方的 bedrock_server,安卓手机也能开基岩服了。
- 「下载核心」新增基岩版家族,含官方 BDS(稳定版 + Preview 双通道)
- BDS 专属运行环境(
依赖与环境管理 → BDS):PRoot Ubuntu 容器提供 glibc + box64 把 x86_64 指令转译成 arm64- 首次初始化约 32MB 下载,box64 转译器已随应用内置、不需要额外联网
- 分「容器 → box64 → 实测」三段显示进度,失败会按类型给原因(空间不足 / 下载失败 / 包损坏 / 解压失败 / 实测失败),可以单独重试,也可以一键移除重装
- 提供「环境体检」:实测容器内能否解析 DNS、能否连通 TCP、TLS 是否可用、CA 证书是否齐全,出问题能直接看出卡在哪一层
- 与 Java 版(Termux JDK / Pojav JRE)完全隔离,互不影响;已经给 Java 版装过容器的话直接复用
- BDS 核心更新:面板显示当前版本与官方最新稳定版 / Preview,有更新时一键升级
- 升级前自动备份用户数据面(
worlds/、server.properties、allowlist.json、permissions.json、行为包、资源包、config/),备份失败立刻中止,不会动服务器目录一个字节 - 下载先落临时目录并做包级校验,通过后才替换;旧核心保留为
bedrock_server.old-版本号,出问题可回滚
- 升级前自动备份用户数据面(
- BDS 玩家管理:从日志识别进出服(
Player connected/disconnected),支持白名单、OP、踢出permissions.json只存 xuid 不存名字,已额外记录 xuid→玩家名映射并落盘,重启后仍显示真实名字- 如实提示平台差异:BDS 没有封禁命令也没有封禁列表(禁止进服请移出白名单并开启白名单);基岩版没有离线玩家数据,切游戏模式只能对在线玩家生效
- BDS 属性页:
server.properties里的基岩专属配置项全部中文化(禁止飞行、方块哈希校验、压缩算法、RakNet / NetherNet 传输、内容日志、脚本监听等)
平台事实如实说明:官方只发布 Linux x86_64 构建,本项目通过 PRoot + box64 转译运行。
转译启动比原生慢、性能约为原生的一半,属正常现象,不是故障。
新功能:服务器属性页重构
属性页不再是一张写死的表单,而是按当前服务器目录里真实存在的配置文件生成界面。
- Paper / Purpur / Fabric / 原版 / BDS / PocketMine / PowerNukkitX,以及带 Mod 的自定义核心都能正确显示各自真实的配置项
- 字典未收录的配置项不再被丢弃,落到「其它」区按原始键名展示,可直接编辑
- 支持按名称 / 键名搜索,按优先级分组,带「已修改」标记与单项还原
- MOTD 支持实时预览(含颜色代码渲染)
- 端口、数值类配置项带范围校验,填错立刻提示而不是写进文件
- 页面顶部显示当前读的是哪个配置文件;有未保存改动时返回会拦一下,可以留在页面
- 保存改为只提交变动键后合并写回,不再整份覆盖(避免并发保存把别的改动冲掉)
- 删除原先 Java / PNX 两套硬编码表单,约 -250 行写死逻辑
新功能:服务器统一存到公共目录
- 所有服务器统一放在
/storage/emulated/0/Minexa/Minecraftserver/<服务器名>/,卸载重装 App 不再丢存档,也能用文件管理器直接管理 - 首次用到时按系统版本引导授权(Android 11+ 走「所有文件访问」,Android 10 及以下走存储权限),并在真正写盘前探测可写性 —— 以前权限不足时
mkdirs()静默失败,要等几十秒后才报一个看不懂的错误 - 旧版服务器一次性迁移:检测到私有目录里有服务器就询问是否搬过来,先完整复制并校验,成功后才删旧目录;不迁移的那些不会显示也不会被启动,下次启动继续问
新功能:其它
- 访问通道体检(MT 管理器通道):检查
MTDataFilesProvider是否可用、版本是否被系统升级破坏,坏了给恢复入口 - 核心列表自动同步:文件夹被外部删除/改名后,列表自动移除失效记录并提示数量
- 导入核心的目录名保留原始可读名(如
paper-1.21.4),纯中文名才走自动命名
改进
- 下载页重排为「一屏装完」:360×800 的机器上页头、目标目录、核心选择、版本与下载、已装核心能同屏出现
- 18 个核心不再一次铺满,改成「家族分段条 + 只显示当前家族磁贴」,高度从 9 行降到最多 3 行
- 版本选择与命名下载合并成一步,动作集中在一处
- 完整的页面返回栈:二级页面逐层压栈、逐层返回,底部导航栏在二级页自动隐藏、左上角出现返回键
- 返回时列表滚动位置、选中项、展开状态原样恢复,不再回到顶部
- 「更多」按一级页面处理(任何 Tab 都能直达),层级不再混乱
- 下载链路统一到一个多源下载层:按顺序尝试多个镜像,任一源失败自动换下一个并告诉用户「清华镜像失败,正在改用中科大镜像」,每个源有硬超时,整体也有总时长上限,不会无限等
- 概览页首屏更短:本地地址 + 两条隧道公网地址、已安装插件清单默认收起,需要时再展开
问题修复
- 修复启动后磁盘上凭空多出空文件夹:目录解析曾经带
mkdirs(),任何一次「读」都变成了「写」 - 修复关闭 EasyTier 组网后 TUN 与实例残留、界面显示已停止但实际还在跑(停止指令被后台限制拦下且异常被吞掉)
- 修复切到 Velocity 后版本列表永远为空(PaperMC v3 的
versions字段存在两种结构,旧代码只认数组) - 修复切换核心后沿用上一个核心的版本号,导致下载地址 404(基岩各发行版、BungeeCord 与 Java 系编号互不通用)
- 修复导入核心后老服务器从列表消失(目录名去重没算上「已登记但目录暂时不存在」的记录)
- 修复选中 BDS 时概览页显示「Pojav · Java 25」这类与基岩版毫无关系的运行环境名称
- 修复「校验修复」对 BDS 给出误导性结果:BDS 是官方整包(主程序 + 动态库 + 配置),不支持单文件校验,现在明确提示改用重新下载或备份还原
- 修复属性页保存会覆盖并发改动
性能与体积
- 安装包体积减半:修正了一条让 R8 无法裁剪整个 Compose 依赖树的混淆规则,
dex 从 7.69MB 降到 2.63MB(-66%),并从双 dex 回到单 dex(少一次首次启动的 dex 加载);
同等功能口径下安装包 13.59MB → 6.83MB - 本版安装包显示为 15.7MB,是因为把 box64 转译器(8.8MB)放进了包内,换来 BDS 环境初始化不用额外下载
- 冷启动不再在主线程做磁盘与 IPC:BDS 环境状态探测、使用统计上报移到后台线程
- R8 恢复全量优化后,隧道、下载、进程管理等热路径可以正常内联与类合并
兼容性
- 需要 Android 8.0(API 26)及以上,仅提供 arm64-v8a
- Android 11 及以上首次使用需授予「所有文件访问」权限,否则无法读写服务器目录
- 从 1.3.2 升级后会有一次旧服务器迁移询问,建议迁移(不迁移的服务器不会显示)
- 4 套语言(简中 / 繁中 / 英文 / 波斯文)新增文案已全部同步
MineServe Mobile 1.4.0
Minexa 1.4.0 更新日志
给用户看的版本说明。发布时同步到 GitHub Release。
新功能:EasyTier 虚拟局域网组网
不依赖公网服务器和端口映射,把服务器和玩家的设备拉进同一个虚拟局域网,玩家像连局域网一样进服。
- 网络页新增「EasyTier 组网」卡片:网络名、密钥自动生成,一键启停;可与 FRP、STUN 同时开启
- 「邀请玩家」引导页:一张二维码 + 三步图文,玩家照做就能进;密钥泄漏了可一键换新
- 引擎按需下载(约 16MB):首次使用时在「依赖与环境管理 → 依赖」下载,不下载则不占安装包体积
- 玩家侧无需公网 IP、无需路由器设置;需要 Minecraft Java 版
问题修复
- 修复组网转发端口与服务器端口冲突导致「启动组网」失败的问题;玩家连接地址改用独立转发端口,两类监听互不抢占
- 修复服务端与玩家虚拟网段不一致导致「组网已连通但游戏连接超时」的问题
- 组网默认节点切换为可用的社区节点(官方公共节点已长期失联)
优化
- 全部内置 .so 库的段对齐提升到 16KB,消除在 16KB 页设备上的「应用兼容性」警告项
- 适配 4 套语言(简中 / 繁中 / 英文 / 波斯文),新增界面全部同步翻译
MineServe Mobile 1.3.2
Minexa 1.3.2 更新日志
给用户看的版本说明。发布时同步到 GitHub Release。
新功能:EasyTier 虚拟局域网组网
不依赖公网服务器和端口映射,把服务器和玩家的设备拉进同一个虚拟局域网,玩家像连局域网一样进服。
- 网络页新增「EasyTier 组网」卡片:网络名、密钥自动生成,一键启停;可与 FRP、STUN 同时开启
- 「邀请玩家」引导页:一张二维码 + 三步图文,玩家照做就能进;密钥泄漏了可一键换新
- 引擎按需下载(约 16MB):首次使用时在「依赖与环境管理 → 依赖」下载,不下载则不占安装包体积
- 玩家侧无需公网 IP、无需路由器设置;需要 Minecraft Java 版
问题修复
- 修复组网转发端口与服务器端口冲突导致「启动组网」失败的问题;玩家连接地址改用独立转发端口,两类监听互不抢占
- 修复服务端与玩家虚拟网段不一致导致「组网已连通但游戏连接超时」的问题
- 组网默认节点切换为可用的社区节点(官方公共节点已长期失联)
优化
- 全部内置 .so 库的段对齐提升到 16KB,消除在 16KB 页设备上的「应用兼容性」警告项
- 适配 4 套语言(简中 / 繁中 / 英文 / 波斯文),新增界面全部同步翻译
MineServe Mobile 1.3.1
Minexa 1.3.1
修掉 frpc 引擎「下载失败:元数据格式无法识别」,并让引擎来源不再单点依赖。
- 修复 frpc 引擎在线下载失败(报「元数据格式无法识别」):分发方的元数据地址已变更,现在会自动发现最新地址。
- 引擎支持直接导入
.ecpkg包(发行页下回来的就是这种格式),不必再自己找libfrpc.so。 - 新增「打开发行页下载」入口:在线下载走不通时,直接去发行页下包再导入。
- 引擎下载优先走 Gitee,国内网络下不再先空等 GitHub 超时。
- 已装引擎的版本号会持续显示,重启 App 后不再丢失。
- 元数据地址失效时提示「返回的不是 JSON」,不再只报一句格式无法识别。
升级说明:不改变已安装的引擎,无需重装;1.3.0 可直接覆盖升级。
MineServe Mobile 1.3.0
Minexa 1.3.0
新增「自动化」定时任务,重做下载源,并修掉一批启动与保活问题。
新增
- 自动化定时任务(更多 → 自动化):开服 / 停服 / 世界备份 / 完整备份 / 重启 / 游戏内广播 / 自定义命令,
频率支持固定间隔、每天、每 N 天、每周固定几天、5 段式 Cron。走系统精确闹钟,App 被清理、服务器未运行时也能触发。 - 一键测速选择下载源(设置 → 下载源):「依次尝试下载源」按顺序逐个探测,命中第一个可用源即自动选中。
- 概览页状态卡新增「白名单已开启」提示,白名单开着时一眼可见。
改进
- 下载源列表按实测结果重建:移除已失效的 mirror.ghproxy.com / github.moeyy.xyz / gh.api.99988866.xyz,
新增 cdn.gh-proxy.com(实测唯一能代理 GitHub API 的镜像);修正阿里云 APT 仓库路径(旧的带/apt/一段必然 404)。 - 插件市场与更新检查的 GitHub API 改为直连优先 + cdn.gh-proxy.com 兜底,国内网络下不再整片失败。
- NeoForge 版本元数据与 installer 增加 BMCLAPI maven 镜像兜底(官方 maven 国内常被 DNS 污染)。
- 前台服务只在服务端确实在跑时持有 CPU / Wi-Fi 唤醒锁,改配置立即生效,不再空持锁耗电。
- 无网络时跳过更新检查与用量上报,不再白等超时。
修复
- 启动前按服务端配置文件(
server.properties/ PNX 的pnx.yml)重读端口,外部改过的端口不再被旧值覆盖,
地址栏与穿透也不会再指向没人监听的端口。 - 定时任务执行失败会发通知,不会静默跳过。
升级说明
- 1.2.x 的「每日定时开/停服」会在首次启动时自动迁移为两条自动化任务(每天触发),原有行为不变,
之后可在「更多 → 自动化」里编辑或删除。
【升级提示】
- 已安装 1.2.9 及更早版本可直接覆盖安装(签名一致,不会丢失数据)
- 安装前建议先备份服务器核心与世界
完整更新日志见仓库 CHANGELOG.md。
MineServe Mobile 1.2.9
Minexa 1.2.9
解决了一些已知问题。
【升级提示】
- 已安装 1.2.8 及更早版本可直接覆盖安装(签名一致,不会丢失数据)
- 安装前建议先备份服务器核心与世界
完整更新日志见仓库 CHANGELOG.md。
MineServe Mobile 1.2.8
MineServe Mobile 1.2.8
新增:PRoot Linux 容器
新增第三种 Java 运行环境「PRoot 容器」,可以在 App 内跑一个标准 glibc Linux 环境。
-
支持 Ubuntu 20.04 (focal) 与 Ubuntu 22.04 (jammy) 两个发行版,rootfs 由 App 内直接下载。
-
在「依赖与环境管理 → Java」里新增「PRoot 容器」分类,可安装:
发行版 可安装的 Java 版本 Ubuntu 20.04 (focal) Java 8 / 11 / 17 Ubuntu 22.04 (jammy) Java 11 / 17 / 21 -
启动设置里的「运行环境」下拉框新增「PRoot Linux 容器」选项,选中后可直接选择发行版与容器内的 Java 版本。
-
Java 8 现在只出现在「PRoot 容器」分类下。它本来就运行在容器里,此前列在「Termux JDK」下会让人以为有两份,也可能被重复安装。分组位置变了,但运行时用的还是同一个容器,已安装的 Java 8 不受影响。
-
Java 8 只有 Ubuntu 20.04 提供;把发行版切到 22.04 后它会从列表中消失(其他已安装版本不受影响)。
-
服务端目录以 bind 方式进入容器(
/srv/mineserve),因此世界、插件、备份、文件管理全部保持在原来的位置,使用方式与之前完全一致。 -
不提供 Root 权限:PRoot 是纯用户态兼容层,不是真正的 root。
改进:卸载 Java 不再牵连其他版本
此前在一个容器里卸载某一个 Java 版本,会把整个容器连同里面所有 Java 版本一起删掉。
现在改为只卸载你选中的那一版:
- 卸载 Java 17 之后,同一个容器里的 Java 8、11 仍然可用。
- 需要回收整个容器的磁盘空间时,使用独立的「删除容器」按钮(会显示可回收的容量)。
- 卸载前的确认弹窗会如实说明影响范围。
修复
- 运行环境不会再被自动改掉:此前在「运行环境」里选了 PRoot 容器后,启动需要 Java 25 的核心(如 Paper 26.1)会被静默改成 Termux + Java 25,而且改动会落盘 —— 你的选择被永久覆盖,下次启动直接换了链路。现在自动匹配 Java 时只在你选的来源内换版本,来源全程不变;该来源确实提供不了时会明确报错,并告诉你可行做法(例如「把 Ubuntu 20.04 切到 22.04 即可使用 Java 21」),把「换来源还是换版本」的决定权交还给你。
- 修复 PRoot 容器下 "already locked" 报错:反复启动/停止服务端时,可能残留旧进程占用世界文件。现在启动前会识别并清理孤儿进程,同时避免误杀正常运行的实例。
- 修复强制停止后立即重启可能失败:进程族(proot 追踪器及其子进程)现在会被完整结束,不再出现「已停止但目录仍被占用」。
- 修复 Termux + Java 8 的 IPv6 判断错误:该组合实际运行在容器内,而 IPv6 兼容层无法在容器中加载。此前会误判为「支持 IPv6」,导致 Allay 核心被写成
enablev6: true后启动失败。现在会如实判定为不支持。 - 修复诊断页对 PRoot 容器误报「无需 proot」:选中 PRoot 来源时,运行诊断会显示「无需 proot」并标为不适用 —— 而 proot 正是这条链路赖以启动的东西,容器起不来时这条诊断会把人引向完全错误的方向。
- 修复 PRoot 容器下的字体检查查错了地方:此前会检查宿主环境的字体配置,而容器用的是容器内那一套。结果是容器缺字体时报「已就绪」,或往宿主装一堆容器根本用不到的东西。现已统一改为在容器内检查。
- 修复「请先停止服务端再重装 Java」提示文案:卸载与删除容器时也显示同一句提示,现已改为中性的「请先停止服务端,再改动 Java 运行环境」。
诊断与进度
- 运行诊断新增容器分层状态:把容器拆成「rootfs 是否已下载 / 是否完整可用 / 已安装哪些 Java 版本」分别报告。此前只有一句「未安装」,无法区分是要重新下载几百兆的 rootfs,还是只是没装 Java(后者只需一次 apt 安装,代价差很多)。
- PRoot 容器安装现在会显示阶段进度:下载并解压 rootfs 占 0–60%,容器内安装 JDK 占 60–100%。此前容器安装全程进度指示不动,数分钟的等待容易被误认为卡死。
界面:依赖管理页
- 「依赖管理」页的 Termux JDK / Pojav JRE / PRoot 容器 三个分组现在可以折叠展开,默认全部折叠。三个来源共 11 条版本行,全展开会把「卸载 / 重装 / 安装」三键顶出屏幕,而这三个按钮才是这个板块的主要操作。
- 折叠时分组标题会标出「已选 Java 17」,让你一眼知道下面那三个按钮作用于哪一份 Java。
- 「PRoot 容器」分组内新增 Ubuntu 版本切换胶囊:左「Ubuntu 20.04」、右「Ubuntu 22.04」,当前选中项为蓝色胶囊背景,切换时蓝色背景平滑滑动到另一侧。
- 外观沿用原有风格:同样的字体、圆角、间距与配色,只多了一个折叠箭头和这一个切换控件。
文案与提示订正
逐条核对了三种 Java 来源(Termux / Pojav FCL / PRoot)在界面上展示的能力说明,确保与实际行为一致:
- Termux 分组说明不再笼统地称「由 apt 安装、IPv6 由兼容层接管」——Java 8 是例外,它跑在容器里,兼容层不生效。
- Termux 的 Java 8 现在明确标注「与 PRoot 容器分类下的 Ubuntu 20.04 是同一个容器」,避免用户在两处重复安装或误解磁盘占用。
- 版本不可用时的提示为「该容器不提供」,是事实描述。
升级提示
- 已安装 1.2.6 及更早版本可直接覆盖安装(签名一致)。
- 安装前建议先备份服务器核心与世界。
- 如果你此前使用过 Java 8(Termux 或 PRoot):本次调整了容器目录的命名方式,旧的 Java 8 运行环境会被识别为「未安装」,需要重新安装一次。服务端存档不受影响。
旧的var/lib/mineserve/java8-ubuntu-rootfs目录不会再被使用,也不会被自动删除;如需回收空间可手动删除。 - Java 25 在 PRoot 容器中不可用:Ubuntu 的 arm64 软件源不提供该版本。
完整更新日志见仓库根目录 CHANGELOG.md。
MineServe Mobile 1.2.7
修复了一些已知 bug。
【升级提示】
- 已安装 1.2.6 及更早版本可直接覆盖安装(签名一致)
- 安装前建议先备份服务器核心与世界
完整更新日志见仓库 CHANGELOG.md。