呆呆面板 Android 本机版在非 Root Android 上提供任务、脚本、日志、环境变量、订阅、依赖、通知、Open API、安全、备份和监控,并可以连接远程面板。内置 NDK 自编译 PRoot 与 Ubuntu 用户空间,可在本机使用终端、脚本和包管理,无需 Termux。安装包只从本仓库 Release 发布。
当前版本:v2.0.6(正式版)
Android versionCode:2000060
默认分支:main
- 当前正式版:GitHub Releases v2.0.6
- ARM64 完整版:
daidai-panel-native-2.0.6-stable-arm64.apk - x86_64 版(模拟器/云手机):
daidai-panel-native-2.0.6-stable-x86_64.apk - Release 只提供安装包。应用内更新使用同版本的
android-update.json,不再附带.sha256文件。
- 默认账号:
admin - 默认密码:
admin123
首次登录后请及时在「我的 → 个人中心」修改密码,避免安全隐患。
- Flutter UI 统一管理 Android 本地实例和远程呆呆面板。
- 本地 Kotlin fallback 运行于 Android
:panel独立进程,并监听动态127.0.0.1端口。 - 内置 Linux 终端:NDK 自编译 PRoot + Ubuntu 24.04 用户空间,无需 Root,也不需要 Termux。
- 支持任务、Cron、脚本、日志、环境变量、订阅、通知、用户、安全、SSH、Open API、平台令牌和备份恢复。
- 包管理:Ubuntu 使用 apt,默认阿里云镜像源,支持按需安装 node、git、python3 等开发工具。
- 支持 pip/npm 依赖安装、指定版本、安装去重、共享目录、镜像配置和缓存限制;镜像源在「我的 → 依赖管理」页右上角切换。
- 支持实时增量日志、持久日志回读、任务停止、进程树回收和 Android 本地通知。
- 支持中文脚本路径、空格、引号、显式空参数和多账号变量。
- 支持 App 内安全打开本机浏览器面板(一次性票据),也支持局域网浏览器通过账号密码 + JWT 登录访问。
- 内置 Open API 应用管理:App Key / App Secret 换 token,业务 API 支持 token 鉴权、scopes 权限、速率限制与调用日志。
- 本地接口校验安装级 Token、精确 Host、Origin、JWT、角色和权限。
- 业务 API 由本仓库的 Kotlin 本机面板实现,合同见
contracts/。
| 安装包 | ABI | 本地业务 API | 本地终端环境 | 推荐场景 |
|---|---|---|---|---|
| ARM64 完整版 | arm64-v8a |
Kotlin 本机面板 | PRoot + Ubuntu,apt 包管理,Python/Node/Shell/Git/SSH | ARM64 手机、平板、云手机 |
| x86_64 版 | x86_64 |
Kotlin 本机面板 | PRoot + Ubuntu,apt 包管理,Python/Node/Shell/Git/SSH | x86_64 模拟器、云手机 |
本地 Kotlin 面板已覆盖 Git SSH 私钥拉取、订阅刷新和停止、恢复进度、脚本短时 token、TypeScript、检查更新。Node.js 和 Python 通过 apt 在 Linux 用户空间内按需安装。
- 正式 Release 提供 ARM64 APK,另附 x86_64 APK 供模拟器/云手机使用。
- 本地服务监听
0.0.0.0,支持本机与局域网浏览器访问;App 内请求走 local-token,浏览器请求强制账号密码 + JWT。 - Linux 终端使用本仓库 NDK 自编译的 PRoot,不依赖外部终端应用。
- Ubuntu 内置在 APK 中。
- 默认 Linux 包管理器镜像源为华为云/阿里云/npmmirror,可在「我的 → 依赖管理」页右上角切换。
- 依赖 glibc、桌面 Linux API 或不兼容 ARM64 的原生扩展可能无法使用。
- APK 内置 runtime 随 App 更新,本地实例不提供后端自更新或 runtime 卸载。
- 持续调度开启时使用可见 Foreground Service;普通后台模式会暂停 Flutter 连接轮询并降低 fallback 调度唤醒频率。
- GitHub 云 runner 支持 x86_64 Android 模拟器矩阵,随正式发布门禁执行;不支持 ARM64 模拟器,ARM64 真机矩阵以 blocked evidence 如实记录,真机证据可通过 self-hosted runner 补充。
仓库地址:tall-1997/daidai-panel-native
| 项目 | 当前状态 |
|---|---|
| 默认分支 | main |
| 远程开发分支 | main |
| 当前正式版标签 | v2.0.3 |
| 单一版本源 | VERSION.json |
| Android 应用 ID | com.daidai.daidai_app |
| 最低 Android API | 24 |
| 目标 Android API | 35 |
| 编译 Android API | 36 |
| 支持 ABI | arm64-v8a、x86_64 |
main保存已通过 CI 的集成代码,也是 GitHub Actions snapshot 构建来源。- 功能开发使用短生命周期分支,完成评审与门禁后快进或合并到
main。 - 稳定版本使用
vMAJOR.MINOR.PATCH标签和 GitHub Stable Release。 VERSION.json中的版本必须与 App、Go Core 和 Panel Web 派生版本一致。- 提交签名前确认工作区仅包含目标修改,并保持密钥、JKS 和密码位于 GitHub Secrets。
main 推送自动触发:
PR and Main QualityAndroid Build and ReleasesnapshotAndroid Device Runtime Smoke
正式版由 v* tag 触发。tag 必须等于 VERSION.json 中的 v{VERSION}。工作流验证版本、签名证书、Flutter、Kotlin、APK 摘要,并使用同一次构建通过的 x86_64 模拟器运行时证据创建正式 Release。当前没有自托管 ARM64 真机 runner,正式说明不会把 ARM64 真机写成已验证。
| 路径 | 用途 |
|---|---|
app/ |
Flutter App、Android Host、Kotlin fallback 和移动端测试 |
app/android/app/src/main/jniLibs/ |
NDK 自编译原生二进制(PRoot、BusyBox、Talloc、libandroid-shmem) |
app/android/app/src/main/assets/android-runtime/ |
嵌入式 Linux 运行时资产(Ubuntu rootfs、Manifest) |
panel/server/ |
本仓库保留的服务端参考实现,不编译进 Android 安装包 |
panel/web/ |
本机浏览器面板 Web 前端 |
runtime/ |
运行时清单、兼容矩阵和 smoke evidence |
contracts/ |
移动端 API 路由契约 |
scripts/ |
版本、运行时、路由和发行证据工具 |
.github/workflows/ |
Quality、Android Build 和 Device Smoke 工作流 |
docs/ |
项目架构与开发文档 |
specs/ |
需求、设计和实施任务 |
CI 使用以下工具链:
| 工具 | 版本 |
|---|---|
| Flutter | 3.44.9 stable |
| Dart | Flutter 3.44.9 内置版本 |
| Go | 1.25.0 |
| Java | Temurin 17 |
| Gradle | 9.1.0 |
| Node.js | 20,Panel Web 构建工具 |
| Android compileSdk | 36 |
| Android targetSdk | 35 |
| Android minSdk | 24 |
本地构建还需要 Android SDK、NDK、CMake、Linux shell 工具和可访问运行时资产源的网络环境。
python3 scripts/version.py check
python3 scripts/version.py show版本升级时先修改 VERSION.json,再同步派生文件:
python3 scripts/version.py sync
python3 scripts/version.py checkgo -C panel/server test ./...
go -C panel/server vet ./...关键并发包可执行 race 检查:
go -C panel/server test -race ./mobilecore ./router ./handler ./service ./databasecd app
flutter pub get
flutter analyze
flutter testcd app
bash scripts/prepare-android-python-runtime.sh
bash scripts/prepare-android-ubuntu-rootfs.sh
bash scripts/prepare-android-yaegi-runtime.shgradle -p app/android :app:testReleaseUnitTest --no-daemon --stacktracecd app
flutter build apk --release --target-platform android-arm64Flutter APK 输出:
app/build/app/outputs/flutter-apk/app-release.apk
cd panel/web
npm ci
VITE_LOCAL_WEB_BUILD=true npm run buildAndroid Gradle 构建会自动将本机 Web 资源打包到 APK 的 /local-ui/ 路径。
工作流:.github/workflows/ci.yml
Quality 根据改动路径执行:
- Go test、vet 和 race
- Flutter analyze 与 tests
- Kotlin unit tests
- 路由契约检查
- Panel Web build
- 发行与运行时脚本测试
工作流:.github/workflows/android-release.yml
支持三种通道:
| 通道 | 用途 | GitHub Release |
|---|---|---|
snapshot |
main 日常验证 | 仅 Actions artifact |
prerelease |
可安装预发行 APK | 手动更新 VERSION.json 对应的固定版本 Release;当前为 v2.0.2 |
stable |
正式签名稳定版 | 自动创建 Stable Release |
重复运行 prerelease 会更新固定版本标签到本次提交,并仅覆盖本轮同名 APK、校验文件、更新清单和证据包;其他 Release 资产保持原样。未来升版只需先明确更新 VERSION.json。
手动触发 snapshot:
gh workflow run android-release.yml \
--repo tall-1997/daidai-panel-native \
--ref main \
-f release_channel=snapshot工作流:.github/workflows/android-device-smoke.yml
默认执行 ARM64 debug APK 构建、smoke driver 测试和 ARM64 blocked evidence。连接 self-hosted ARM64 Android runner 后,可通过 run_physical_device 输入执行真机矩阵。
仓库需要配置以下 Secrets:
| Secret | 内容 |
|---|---|
KEYSTORE_BASE64 |
JKS 文件的 Base64 内容 |
KEYSTORE_PASSWORD |
JKS store password |
KEYSTORE_ALIAS |
签名 alias |
KEYSTORE_KEY_PASSWORD |
私钥密码 |
KEYSTORE_CERT_SHA256 |
签名证书 SHA-256 |
密钥、密码和 JKS 文件禁止提交到仓库。app/.gitignore 与 app/android/.gitignore 已忽略常见 keystore 文件。
- 修改
VERSION.json。 - 执行
python3 scripts/version.py sync。 - 执行
python3 scripts/version.py check。 - 提交并推送
main。 - 等待 Quality、snapshot Build 和 Device Smoke 成功。
- 触发
prerelease工作流(无自托管真机 runner 路径)。 - 核验 Release、APK、SHA-256、更新清单和 evidence 包。
- 将 Release 编辑为 Latest 且非预发布,完成正式态。
触发正式版发布:
gh workflow run android-release.yml \
--repo tall-1997/daidai-panel-native \
--ref main \
-f release_channel=prereleaseworkflow_dispatch 仅接受 snapshot 和 prerelease;stable 通道由版本 tag 推送触发(workflow_dispatch 不支持该通道名)。
工作流对正式 APK 执行:
- JKS 可用性、alias 和密码校验
- JKS 证书 SHA-256 校验
- APK 签名结构校验
- APK 证书指纹与 JKS 证书匹配
- 运行时清单、兼容矩阵和内嵌 metadata 比对
- APK SHA-256 与
android-update.json生成 - release evidence、SBOM 和第三方许可证打包
发布前重点验证:
- 冷启动、本地 Core 恢复和动态 endpoint 更新
- 远程实例切换回本地实例
- Python、JavaScript、TypeScript、Shell 和 Go 任务
- 中文路径、空参数、环境变量和多账号变量
- 精确版本 pip/npm 依赖安装和导入
- Cron、Hooks、任务日志、SSE 和本地通知
- 后台与前台切换、持续调度和 WorkManager 恢复
- 用户、安全、SSH、平台令牌、Open API 和订阅
- 备份创建、导出、导入和事务恢复
- 本机浏览器面板的一次性票据、Cookie、JWT 和权限边界
- 架构:
docs/ARCHITECTURE.md - 发布证据:
docs/RELEASE_EVIDENCE.md - 项目索引:
docs/INDEX.md - 完整需求与设计:
specs/android-modern-full-panel/
- 本仓库新增代码使用根目录
LICENSE中的 MIT License。 app/与panel/中的第三方代码和资源遵循各自许可证及版权声明。- 第三方依赖许可证归对应作者所有,完整清单以锁文件和 Release evidence 为准。
问题与建议请提交到 GitHub Issues。