FrameFilm

Ark Android 客户端

当前开发阶段是 M2 原生 Android 客户端:按 tools/ForFilm 的五页结构与 Ark 黑白黄风格重新实现 Android Views,不使用 WebView。BLE 保持设备控制连接,传图时临时建立 2.4GHz WiFi Direct GO,由 Ark 下载手机提供的 .film。

当前开发优先级(2026-10-08):网页主题统一与状态收敛后,开始研究 Flutter 原生界面重构。现有 Android Views 工程保留为通信实现基线;下述 M1/M2 是已有工程的验证记录,不是 Flutter 的完成记录。取消与重试的实机验收仍为待完成,不因切换框架而视为通过。

Flutter 重构方案(第一阶段已建立)

新工程位于 flutter_app,已有六页原生框架、双主题、通行证内存预览与 Android BLE 桥接。Dart 静态检查、3 项 widget 测试和 Web 预览构建通过;Android APK 首次构建被 C 盘空间不足阻塞,尚未完成 Android 编译或实机连接验收。旧工程继续作为通信内核来源和既有验证记录。

实施顺序:

  1. 配置 Flutter SDK,建立工程和双主题,完成六页导航、连接状态及主题加载预览;接入真实扫描、连接、屏幕参数和设备名称读取。
  2. 接入现成 .film 文件传输:开始、进度、取消、清理中、失败、重试。使用系统蓝牙稳定的手机完成 START 后取消与同文件重试验收。
  3. 接入通行证编辑和 SD 读写、图片转换、设备设置;个人资料沿用网页与固件的格式,读取失败不覆盖草稿,部分文件发送成功明确提示。
  4. 再补齐高级图像算法、动画编辑和批量队列;OTA 单独处理已有擦除/超时问题后再验收。

开发环境:Flutter stable 3.47.6 / Dart 3.13.5 已安装到仓库忽略目录 .output/toolchains/flutter,新宿主由官方模板生成。Android SDK 目录与 platform-tools 已存在;APK 构建前须解决 C 盘空间,并将大型构建依赖安排到空间充足的磁盘。现有 Android 项目和新宿主均使用 compile/target SDK 35、min SDK 29、JVM 17。

技术依据:Flutter platform channels、Android WiFi Direct。Android 13+ 的附近 WiFi 权限、旧系统的定位要求及 BLE 权限仍由平台层按系统版本处理。

M2 实施范围与进度

M1 基础能力(M2 继续复用)

构建与安装

需要 JDK 17 或 21、Android SDK Platform 35 和 Build Tools 35.0.0。设置 ANDROID_HOME,或在不入库的 local.properties 中设置 sdk.dir。

.\gradlew.bat :app:assembleDebug
adb -s <手机序列号> install -r -g app/build/outputs/apk/debug/app-debug.apk
adb -s <手机序列号> shell am start -n org.framefilm.ark.dev/org.framefilm.ark.MainActivity

开发版包名为 org.framefilm.ark.dev,与未来正式版分开。应用仅在用户操作后扫描、连接或建组。Android 12+ 需要附近蓝牙权限,Android 13+ 需要附近 WiFi 权限;较旧系统的扫描还需要定位权限和系统定位开关。

最小实机探针

先断开电脑网页与 Ark 的 BLE 连接,手机保持蓝牙和 WiFi 开启。不要在已有其他 WiFi Direct 业务运行时测试。探针拒绝接管已有群组。

adb -s <手机序列号> shell am instrument -w org.framefilm.ark.dev/org.framefilm.ark.ConnectivityProbe

探针必须同时报告 result=PASS 和 cleanupCompleted=true 才算通过。它调用与界面相同的控制器,不模拟屏幕点击。探针仅编入 debug APK;输出不包含群组密码。

M1 真文件传输探针(同样仅在 debug APK 中):

adb -s <手机序列号> shell am instrument -w org.framefilm.ark.dev/org.framefilm.ark.DirectTransferProbe

请先给应用授予附近蓝牙和附近 WiFi 权限,并确保手机没有其他 WiFi Direct 组。异常时探针请求取消,等待 Ark 报告恢复完成后再释放手机 HTTP 服务及直连组;最长可能等待数分钟。

原生客户端最小验收

adb -s <手机序列号> shell am instrument -w org.framefilm.ark.dev/org.framefilm.ark.NativeAppProbe

探针启动实际 MainActivity,确认五页原生控件导航、六色文件头与像素排列,再用生成的测试图执行 START 后取消及同文件重试。只写独立时间戳文件名。该探针不操作系统相册/相机/导出选择器,也不替代全部人工验收。

固件基础功能与设备端通行证界面完成后,再按实际使用继续迁移 App 高级图片算法与动画编辑;本协议不与小米互传私有协议互通。

第三方 ROM 声明支持 WiFi Direct 仅表示具备接口,兼容性以具体手机的实测结果为准。

当前验证记录(2026-10-07)

M2 原生版:构建通过,取消与重试实机验收待完成

新手机:M1 真文件直传与屏幕显示通过

新手机:M0 通过

旧测试手机:小米 9 的安装恢复与 BLE 阻塞