fix(mobile): support Android system file picker
This commit is contained in:
@@ -62,7 +62,7 @@
|
||||
- 直通车已经支持五通道、业务匿名、按角色收件和一次正式回复。
|
||||
- 生产短音频 ASR 已切换到阿里云百炼 `qwen3-asr-flash`,并在一台 Android 标准基座完成过“按住说话→转写→提交”验证。
|
||||
|
||||
当前短板主要是:正式内容、五通道真实处理人、生产后端部署授权与发布后匹配、企业签名/法务签认,以及本轮明确暂缓的完整真机反例。`0.1.13` 受控内测 APK、统一 RC、固定码认证和生产只读发布计划已经完成;API 35 自定义基座链路已成立,但不能替代企业签名包或正式试点。
|
||||
当前短板主要是:正式内容、五通道真实处理人、`0.1.16` 最终签名 APK、企业签名/法务签认,以及真实断网、WebRTC、图片/视频/文档和受控下载等剩余真机反例。生产后端定向发布与发布后预检已经完成;最后一个签名内测包仍是 `0.1.13`,当前 `0.1.16` 只有源码构建和标准调试基座证据,不能替代最终签名包或正式试点。
|
||||
|
||||
### 3.1 生产只读基线(2026-07-27)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
| 门禁 | 结果 | 说明 |
|
||||
|---|---|---|
|
||||
| `mobile-uni` 单元测试 | 通过 | 199/199;覆盖身份/岗位加载失败关闭、文件选择器取消/失败分流、九个消费页面、直通车首次弱网恢复及版本一致性,测试过程有本机 WebSocket 端口占用告警,但无失败 |
|
||||
| `mobile-uni` 单元测试 | 通过 | 当前 206/206;新增 Android SAF、FileChannel、应用专属外部缓存、麦克风预检和系统选择器生命周期回归,既有身份/岗位失败关闭、取消/失败分流、九个消费页面、直通车弱网恢复及版本一致性继续通过 |
|
||||
| `mobile-uni` TypeScript 检查 | 通过 | `npm --prefix mobile-uni run typecheck` |
|
||||
| H5 资源构建 | 通过 | 仅证明 H5 资源可编译 |
|
||||
| App-Plus 资源构建 | 通过 | 仅生成 HBuilderX 出包资源,不等同于 APK |
|
||||
@@ -103,7 +103,7 @@
|
||||
| `ruoyi-aihr` 后端全量测试 | 通过 | 700 个测试,0 失败、0 错误;包含正式场景占位来源/回合/Rubric 禁止发布和移动身份空结果失败关闭回归;Windows CRLF 引发的 7 个源码契约误判已通过读取时统一 LF 修复并全量复跑 |
|
||||
| 法务配置技术链路 | 通过 | 登录协议默认不勾选;协议未配置时禁止验证码与登录;配置生成器和发布联网校验已接入,发布包拒绝开发验证码提示 |
|
||||
| 正式 App 发布配置校验 | **技术通过,法务签认阻断** | 受控内测版协议正文已通过 Caddy 公网 HTTPS 发布;启动原生提示关闭,登录页协议默认未勾选且验证码/登录失败关闭,包体与联网门禁使用同一组地址。公司法务尚未正式签认正文,不能视为正式发布通过 |
|
||||
| Android 设备、调试基座、测试签名和设备门禁 | **部分通过,仍阻断** | API 35 自定义基座和可独立安装的 DCloud 云证书内测 APK 均已生成。`0.1.12` 在 Android 15 虚拟机全新安装后确认无原生隐私提示、四项敏感权限未授权且无 Crash/ANR;390×844 Playwright 真浏览器已通过登录页默认未勾选、两个线上协议、验证码/登录请求前拦截及勾选后手机号校验,控制台 0 错误。AVD 的 x86_64 与 APK 的 ARM-only ABI 导致 DCloud Weex IPC 超时;浏览器结果只作补充,不替代 App 运行,也不修改发布 ABI、回退 H5 壳或增加业务兜底。录音允许/拒绝、真实系统选择器取消、真实断网恢复和认证业务反例仍待完成 |
|
||||
| Android 设备、调试基座、测试签名和设备门禁 | **部分通过,仍阻断** | vivo Android 15 真机已在签名 `0.1.13` 完成真实页面登录、麦克风允许和生产 ASR;当前 `0.1.16` 源码又在 HBuilderX 5.22 标准调试基座完成系统选择器取消、重复打开、真实 WAV 选择、精确复制、multipart 上传和生产 ASR。DCloud 当日云打包额度耗尽,尚无包含修复的 `0.1.16` 签名 APK;真实断网、WebRTC、图片/视频/文档和受控下载仍待同一最终签名包验收 |
|
||||
|
||||
统一 RC 脚本已在干净运行时提交 `dc20b92061f10a356ed73eb105ef7b00c8b8a617` 上完整复跑,证据目录为 `output/aug1-rc/0.1.10-110-dc20b920-frozen/`,结果为 `releaseEligible=true`。发布/回滚、API 探针和可识别隐私二次确认/退出态的 Android 取证工具另冻结在 operations commit `71f005c22981989c5f2b24fa31c385a1b82657b7`。当前双提交交付包为 `output/aug1-release/bangdao-aug1-0.1.10-110-dc20b920-ops71f005c2.zip`,大小 `192,926,422` 字节,SHA-256 为 `4391895420B50EBBD8CB87EA20AF71A70D5DABAD5003F5361A8B034CF7525BCA`;已完成 14 个 ZIP 条目和 13 个 `SHA256SUMS.txt` 载荷的逐条复验。旧无 operations 后缀包、`ops861fa0ea` 与 `ops414af66e` 包保留作追溯但均已被替代。上述本地自动化冻结不替代生产后端发布授权和人工验收。
|
||||
|
||||
@@ -113,6 +113,8 @@
|
||||
|
||||
同日后续已获得独立授权并通过 `release-backend.sh` 完成生产后端定向发布;生产 JAR SHA-256 为 `5376b67b33b171b5c85e22cd6a2f20bbb0bc527fc50a223603d0aec3f6587bac`,服务、三个公开入口和后端 + schema 发布后预检通过,后端发布不再是 8 月 1 日 APK 的阻断项。同批发布资料处理媒体恢复 schema 和管理端,移动 H5 未重发;这不改变正式场景/题目、五通道处理人、受控分发与真机设备门禁的 No-Go 状态。
|
||||
|
||||
同日真机继续确认 `0.1.13` 的麦克风允许和生产 ASR 可用,但拒绝后的降级误用 App 不支持的 `uni.chooseFile`。当前源码已升级为 `0.1.16 (116)`,改用 Android 系统文档选择器、`ParcelFileDescriptor + FileChannel.transferFrom`、应用专属外部缓存和 App 媒体选择器,并保留系统选择器暂时离开时的待完成任务。vivo 真机标准调试基座完成取消、重复打开、`100,542` 字节 WAV 选择/复制/上传/生产 ASR 和无提交草稿整理;206 项测试、类型检查、App 发布资源预检和 App-Plus 构建通过。调查用 `0.1.14/0.1.15` APK 已删除,DCloud 当日云打包额度耗尽,`0.1.16` 签名 APK 尚不存在,不能进入分发。
|
||||
|
||||
生活顾问调研已转成 `docs/content-candidates/aug1-life-advisor-content-candidates-v0.1.json`:包含 5 个禁用场景候选和 30 道待审政策题,内容候选校验脚本通过。由于当前只收到 1/24 份访谈,且正式来源、业务审核和 Rubric 签认尚未完成,正式可发布场景与正式有据标准答案均为 `0`;交付包中的候选文件只供审核,不得直接导入或启用。
|
||||
|
||||
业务回填入口已统一为 `docs/帮道8月1日业务内容与五通道签认单-20260729.md`。2026-07-29 生产只读审计确认五个直通角色均存在,但有效用户绑定数分别为 0;系统功能可用不等于真实收件人已配置,技术侧不得擅自绑定人员。
|
||||
@@ -136,9 +138,9 @@
|
||||
- 本机 Android Studio `Medium_Phone` 虚拟机已启动为 Android 15/API 35(`1080×2400`、密度 `420`)。在此前未安装本应用的虚拟机上,`0.1.6 (106)` 首次安装和 Launcher 冷启动成功,最新包真实显示原生隐私弹窗,四项相机、录音、图片和视频权限均未授予,crash 缓冲区为空。虚拟机只补充干净安装和 API 35 权限基线,不替代真机媒体、WebRTC、弱网与系统浏览器验收;拒绝/同意仍由用户亲自执行。
|
||||
- `0.1.8 (108)` 进一步把 Android 原生清单和 `network_security_config.xml` 纳入 App 构建链及 APK 反编译门禁。独立内测 APK 大小 `33,921,705` 字节,SHA-256 为 `E252140645F3AAD14B3594FD78E76BDF1A2122F7DC70EBD21CC5DF53223C7878`;APK 反编译确认 `usesCleartextTraffic=false`、`networkSecurityConfig` 引用和系统证书信任配置均已进入安装包,本机虚拟机卸载旧实例后全新安装并在 `2.904s` 内冷启动,最新隐私弹窗真实显示,四项敏感权限未授予且 crash 缓冲区为空。
|
||||
- 同一 `0.1.8` APK 随后在虚拟机完成保留数据的覆盖安装:覆盖后冷启动 `3.092s`、标准 Launcher Intent 暖启动 `0.538s`、切到系统桌面再恢复热启动 `0.120s`;三次均回到 `PandoraEntryActivity`,隐私弹窗保持可见,四项权限仍为 `granted=false`,未发现 FATAL 或 ANR。该证据只完成安装与首次弹窗前的生命周期基线,未代替用户选择隐私选项。
|
||||
- 针对 Android 系统文件选择器“用户取消”被误判为上传或转写失败的问题,五个选择服务已统一结构化取消信号,九个页面在取消时恢复空闲态并清理残留“转写中”;真实错误仍显示稳定中文。自动化已覆盖该状态机,但真实系统选择器取消仍须人工点击确认。
|
||||
- 针对 Android 系统文件选择器“用户取消”被误判为上传或转写失败的问题,五个选择服务已统一结构化取消信号,九个页面在取消时恢复空闲态并清理残留“转写中”;当前 `0.1.16` 源码已在 vivo 标准调试基座完成真实取消、重复打开和音频选择/上传/ASR。最终签名 `0.1.16` 仍须复跑同一组门禁。
|
||||
- `0.1.10 (110)` DCloud 独立内测 APK 大小 `33,922,134` 字节,SHA-256 为 `20CB16B4E9D024DBF5EEEF577BFBA3B4DF5E5E78B597BABB99CB7450C7AE5034`。同一虚拟机从 `0.1.9` 保留数据覆盖安装成功,Launcher 冷启动约 `1.271s`,最新原生隐私弹窗可见,四项权限仍为 `granted=false`,未发现 FATAL 或 ANR。
|
||||
- 自定义基座和独立内测 APK 均使用 DCloud 云端测试证书,不是企业正式签名 APK;当前 `0.1.12` 已关闭明文流量、内置网络安全配置并取消启动原生隐私确认,但仍只可用于 8 月 1 日受控内测。公司法务签认、企业签名、登录页协议门禁和登录后权限反例仍是正式发布阻断。
|
||||
- 自定义基座和独立内测 APK 均使用 DCloud 云端测试证书,不是企业正式签名 APK;最后一个签名包 `0.1.13` 已关闭明文流量、内置网络安全配置并取消启动原生隐私确认,但不包含当前系统选择器修复。`0.1.16` 云打包、公司法务签认、企业签名和最终签名包权限反例仍是正式发布阻断。
|
||||
|
||||
## 4. P0 工作分解
|
||||
|
||||
|
||||
Reference in New Issue
Block a user