EdgeCube 是一款开源 Android 应用,用于在手机上创建、配置、启动并运维 Minecraft 服务器。
应用内置完整的运行时管理(JRE 17/21/25、PHP、rootfs)、终端、文件管理器、模组/插件浏览器,以及一组网络服务,让你的设备随时可以被外部访问。
服务端与运行时
- 一键创建向导:选择服务端类型 → 版本 → 加载器 → 下载
- 支持 Vanilla、Paper、Purpur、Spigot、CraftBukkit、Forge、NeoForge、Fabric、Leaf、Leaves、Velocity、BungeeCord、PowerNukkitX、PocketMine-MP、Allay。
- 双运行模式,可随时切换:
- 原生模式:直接调用内置 JRE(17/21/25)或随包的 PHP CLI。
- proot 容器模式:在导入的 Linux rootfs 内运行,兼容性最好。
- 运行环境包(
.ecpkg)支持在线下载、导入、更新与签名校验;.ecpkg已做文件关联,可从文件管理器直接打开导入。 - 首次启动自动确认 Minecraft EULA;崩溃分析:服务端或隧道异常退出时,日志会与内置规则库(
assets/rules/server_errors.json)匹配,给出原因与修复建议。
公网访问
- UPnP 端口映射、DDNS、STUN NAT1 打洞。
- FRP 隧道,支持多供应商:CHMLFRP、MeFrp、MSL FRP、OpenFRP、SakuraFRP。
内容资源
- 在线浏览与下载模组 / 插件 / 整合包:Modrinth、CurseForge、Spiget、Hangar、Poggit。
- 整合包导入:CurseForge、Modrinth、MultiMC、MCBBS/HMCL。
运维
- 增量备份 + 定时备份,目标支持本地、FTP、SFTP、WebDAV。
- 保活:前台服务、电池优化白名单、WakeLock/WifiLock、状态悬浮窗、防息屏、桌面小组件(启动/停止、状态、CPU/内存、在线人数)。
- 服务端属性编辑、世界存档配置、玩家管理、系统监控。
体验
- UI 基于 flutter_miuix(HyperOS 风格)。
- 多语言:简体中文(源语言)/ English。
- 主题:暗色、种子色、动态取色(Monet)。
┌──────────────────────────────────────────────────────────┐
│ Flutter UI(lib/) │
│ Scope 树 → 5 个 Tab:服务器 · 控制台 · 管理 · │
│ 文件 · 设置 │
├──────────────────────────────────────────────────────────┤
│ Dart 服务层 —— 21 条 Method/EventChannel │
│ server · shell · ftp · ssh · proot · runtime · │
│ archive · ecpkg · forge · tunnel · monitor · … │
├──────────────────────────────────────────────────────────┤
│ Android 原生层(Kotlin + C,minSdk 24) │
│ ServerLauncher · RuntimeInstaller · ProotBootstrap · │
│ KeepAliveManager · WidgetUpdater · 签名校验 │
├──────────────────────────────────────────────────────────┤
│ Rust JNI(cargo-ndk → libedgecube_pty.so / _tools.so) │
│ edgecube-pty :PTY spawn / 分帧 / 广播 │
│ edgecube-tools :归档 + FTP(unftp)+ SSH(russh) │
└──────────────────────────────────────────────────────────┘
- Flutter SDK(Dart
>=3.12.2 <4.0.0) - Android SDK,含 NDK 30.0.16248370、CMake 4.1.2、build-tools 37.0.0
- Rust 工具链 +
cargo-ndk - Android 7.0+ 的真机或模拟器(
arm64-v8a、armeabi-v7a、x86_64)
git clone https://github.com/venti1112/EdgeCube.git
cd EdgeCube
flutter pub get
flutter run# Rust 会由 Gradle 的 cargoBuild 任务自动编译(已挂接到 preBuild),
# 因此直接执行 Flutter 构建即可:
flutter build apk --release
# CurseForge 为可选项,不注入 key 时该平台会在 UI 中隐藏
flutter build apk --release --dart-define=CURSEFORGE_API_KEY=<your-key>Release 签名读取
android/key.properties(storeFile、storePassword、keyAlias、keyPassword);debug 构建同样使用该签名。
flutter analyze # flutter_lints
flutter test # i18n 键一致性、PTY 分帧、模组元数据、世界服务、对话框
cd rust && cargo test # edgecube-pty + edgecube-tools(archive / ftp / ssh)运行时配置以 JSON 形式存放在 <应用文档目录>/config/(lib/config/),每个功能一个文件——network.json、ssh.json、ftp.json、mcp.json、backup.json、ddns.json、stun.json、instances.json、locale.json …
服务端工作目录默认位于 <共享存储>/EdgeCube/instances/<id>/,可在设置中整体迁移。
| 服务 | 默认端口 | 配置文件 |
|---|---|---|
| FTP | 2121 | config/ftp.json |
| SSH / SFTP | 2222 | config/ssh.json |
| MCP | 8765 | config/mcp.json |
运行环境 / rootfs 包使用 APK 发布密钥做 ECDSA-P256 + SHA-256 签名,应用内导入前会校验:
pip install cryptography
python tools/sign_package.py --key-properties android/key.properties --ecpkg runtime.ecpkg
python tools/sign_package.py --key-properties android/key.properties --rootfs-tar rootfs.tar.zstEdgeCube/
├── lib/ # Dart 源码
│ ├── main.dart # 启动引导 + Scope 树
│ ├── home_shell.dart # 底部 Tab
│ ├── instance/ # 创建向导、下载、导入
│ ├── server/ # 启停、proot、属性、DDNS/UPnP、监控、崩溃分析
│ ├── files/ mods/ # 文件管理、模组/插件/整合包源
│ ├── ftp/ ssh/ shell/ mcp/ frp/ stun/ tunnel/ backup/
│ ├── config/ # JSON 配置 Store
│ ├── i18n/ theme/ logging/ pages/ widgets/
├── android/ # Kotlin + C(CMake)+ 预置二进制
├── rust/ # workspace:edgecube-pty、edgecube-tools
├── assets/ # 图片、i18n JSON、markdown、崩溃规则
├── test/ # Flutter 测试
└── tools/ # sign_package.py
欢迎在 github.com/venti1112/EdgeCube 提 Issue 与 Pull Request。
- 问题反馈 → Issues
- 使用文档 → edgecubemc.com/#docs
代码注释与 commit 信息请使用中文,与现有代码库保持一致。
AGPL-3.0 © venti1112
