Skip to content

Android App

原生 Android 客户端。后端仍然是同一套 REST API,App 只是把控制台搬到手机上,网页端不受影响。

App 目前从源码构建(仓库内 android/),暂未随 GitHub Releases 附带发布包。

能做什么

  • 控制面板、服务监控、隧道管理、域名绑定、DNS 管理、IP 优选实验室、Telegram 机器人、通知、管理后台、全局设置、账户与关于页均为原生实现
  • 窄屏采用底部标签导航(概览 / 监控 / DNS / 更多)与半屏弹窗,长表单不再横向挤压
  • 登录页原生,人机验证(Cloudflare Turnstile)内嵌在同一页面,全程不跳转浏览器
  • 监控状态变化通过系统通知渠道推送到手机,不需要后台常驻网页
  • 支持通行密钥:登录页可用通行密钥免密登录,两步验证也能改用通行密钥,账户页可绑定 / 重命名 / 删除通行密钥并关闭密码登录
  • 管理后台新增「审计」标签页:按用户、操作类型与时间范围筛选,分页查看操作日志;筛选项用底部弹窗选择,不再平铺一长串选择框
  • 概览图表可以点击柱子:弹层列出当天的异常时间段与失败原因,点条目直接跳到对应监控
  • 管理后台「系统设置」新增登录保护:限流额度、时间窗口、熟悉网段倍数与触发通知开关
  • 亮色 / 暗色跟随 App 内主题偏好,与网页端共用一套配色

登录

面板需要先完成安装:在网页端走一遍安装引导、建好管理员账户之后,App 才能登录。

  1. 打开 App,填写面板地址(例如 https://tunnel.example.com,也可带端口)。
  2. 输入账号与密码;若面板开启了人机验证,验证组件会直接显示在登录表单下方。
  3. 登录成功后进入控制台;如需切换账号,在顶栏头像处退出登录。

如果验证组件加载失败(例如面板所在网络无法访问 Cloudflare),可以点 改用网页版登录,退回内置 WebView 完成登录。

通行密钥

Android 9 及以上可用。登录页的 使用通行密钥登录 会把面板下发的 WebAuthn 参数直接交给系统凭据管理器,用指纹 / 面容 / 屏幕锁完成验证;用户名留空时会弹出本机已绑定的全部通行密钥。开启两步验证的账户在密码之后也会多出 使用通行密钥验证

账户页的「通行密钥」卡片可以绑定新凭据(需要当前密码)、重命名、删除,并开关本账户的密码登录。绑定、删除与开关状态都会写入审计日志。

App 走的是 Android 的数字资产链接校验,因此需要面板满足两个条件:

  1. 面板通过 HTTPS 访问,且依赖方 ID 与访问域名一致;
  2. 面板在 https://<域名>/.well-known/assetlinks.json 提供数字资产链接,内容包含 App 包名与签名证书的 SHA-256 指纹。

第二项由后端自动提供,在管理后台「系统设置 → 通行密钥」维护包名与指纹(默认预填本仓库共用调试密钥的指纹;换成自己的 release 签名后,用 keytool -list -v -keystore <keystore> | grep SHA256apksigner verify --print-certs <apk> 取得指纹并填进去)。设备缺少 Google Play 服务时无法使用通行密钥,App 会提示并保留密码登录。

通知

首次进入 通知 页面时按提示授予系统通知权限。授权后 App 会在后台低频轮询 /api/alerts,把监控状态变化转成系统通知;关闭通知权限即回到静默状态,不影响网页端的邮件告警。

主题

App 内的主题偏好独立于系统深色模式:在侧边栏底部或顶栏头像菜单切换 亮色 / 暗色。启动闪屏也会按当前偏好选择日间或夜间插画。

构建

需要 JDK 17+、Android SDK(platforms;android-34build-tools)以及 Gradle:

bash
cd android
./build.sh            # debug APK -> app/build/outputs/apk/debug/app-debug.apk
./build.sh install    # 构建后 adb install -r 到已连接设备

签名沿用本机调试密钥(默认 ~/.android/debug.keystore,可用环境变量 ANDROID_DEBUG_KEYSTORE 覆盖),因此重复安装不会因为签名不同而冲突。

最低支持 Android 8.0(API 26)。

Cloudflare Tunnel 可视化管理面板