release(android): close 0.1.17 device candidate

This commit is contained in:
key
2026-07-30 21:02:56 +08:00
parent c16a3e83d7
commit adedcb4200
14 changed files with 149 additions and 52 deletions
+7 -7
View File
@@ -54,11 +54,11 @@ Android 每个人工步骤完成后,可在不改变设备状态的前提下保
同一真机随后使用生产现有在职 APP 主体和固定码完成页面登录;账号、固定码和令牌未进入日志、截图或仓库。`0.1.13` 允许麦克风后,原生按住录音、上传和生产 ASR 已跑通,识别结果进入真实“问”主路径。拒绝麦克风后的文件降级同时暴露两个 App-Plus 缺陷:`uni.chooseFile` 在 App 不受支持,且 Native.js 无法可靠构造并传递 Java `byte[]`。调查包 `0.1.14/0.1.15` 仅用于定位,生成的 APK 已删除,不得分发。
当前源码候选已升级为 `0.1.16 (116)`:Android 非媒体文件通过系统 `ACTION_OPEN_DOCUMENT` 选择,以 `ParcelFileDescriptor + FileChannel.transferFrom` 复制到应用专属外部缓存;页面生命周期会区分系统选择器暂时离开和真实离页,图片/视频改走 App 支持的 `uni.chooseMedia`,麦克风拒绝在启动录音前统一进入降级。vivo 真机使用 HBuilderX 5.22 标准调试基座完成选择器打开、取消、重复打开及选择 `100,542` 字节 WAV;复制后字节数一致,并继续完成 multipart 上传和生产 ASR。首次成果投稿验证只生成追问草稿,实际尚未显示“确认投稿”,不是已经出现按钮但未点击。复查又确认每轮补充重新调用模型会继续生成追问,且一次线上整理耗时 `94,965ms`,超过客户端 `45,000ms` 超时门限。当前源码改为首轮 AI 整理、后续原话并入当前草稿后交由既有服务端本地复核;同一真机复验后续整理耗时 `1ms`,已显示成果投稿确认卡和“确认投稿”按钮,但没有点击、没有形成正式投稿。当前 206/206 项移动端测试、类型检查、App 发布资源预检和 App-Plus 构建通过。
`0.1.16 (116)` 源码阶段完成了 Android 系统 `ACTION_OPEN_DOCUMENT`、`ParcelFileDescriptor + FileChannel.transferFrom`、应用专属外部缓存、App 媒体选择器和权限 Activity/页面生命周期修复,并在 HBuilderX 5.22 标准调试基座完成取消、重复打开和真实 WAV 上传/ASR。成果投稿阶段先后定位并修复了追问反复调用模型和 `45,000ms` 超时问题,确认卡已经能出现。上述调查只保留为历史过程。
2026-07-30,同一 vivo 真机的已登录线上会话进入“学习”中心时显示“发生未知异常”,但任务统计和知识引用仍能加载。生产只读日志确认只有 `GET /api/aihr/mobile/practice/mistakes` 失败:错题 SQL 使用 `String.formatted()` 填充身份参数时,把 JSON `LIKE '%"redFlag":true%'` 中的百分号误解析为格式指令,抛出 `UnknownFormatConversionException`。提交 `edb8c825` 的本地源码改为专用占位符替换并增加回归测试;后端 JAR `346687564b38adbba643fc7d94d2faedbb51449198b4eef6c3fa90fb99646c83` 已通过定向发布脚本完成生产备份、原子切换、重启及整包/内嵌模块、公开接口、64/64 schema 和生产禁运行时 DDL 预检。同一真机从“今日”重新进入后,顶部异常消失,错题本显示真实错题、分数和“去再练”入口;服务端对应请求在 `22ms` 内正常结束,重启后未再出现 `UnknownFormatConversionException`。证据位于 Git 已忽略的 `output/aug1-rc/android-acceptance/20260730-learning-after-backend-deploy/`。本项只验证该后端修复,不替代签名 `0.1.16` APK 或其余 Android/iOS 验收门禁。
2026-07-30,同一 vivo 真机的已登录线上会话进入“学习”中心时曾显示“发生未知异常”。生产只读日志确认 `GET /api/aihr/mobile/practice/mistakes` 的 JSON `LIKE` 百分号被 `String.formatted()` 误解析;提交 `edb8c825` 改为专用占位符并随后端 JAR `346687564b38adbba643fc7d94d2faedbb51449198b4eef6c3fa90fb99646c83` 定向发布。签名 `0.1.17` 真机复验已加载真实今日任务、岗位 SOP 和错题本,未再出现系统错误;证据位于 `output/aug1-rc/android-acceptance/20260730-123522-aug1-0.1.17-learning-center/`。
由于 DCloud 当日免费云打包次数已用尽,`0.1.16` 的最终签名 APK 尚未生成,标准调试基座证据不能冒充签名包验收。最后一个可重复校验的签名包仍是 `0.1.13 (113)`,但它不包含上述系统选择器修复;额度恢复或购买次数后必须重新云打包、深检并在同一真机复跑麦克风拒绝、选择器取消/选择和 ASR。当前结论因此仍为 No-Go。
当前 DCloud 测试签名候选已升级为 `0.1.17 (117)`:大小 `33,922,976` 字节,APK SHA-256 `0A8581D70A5988E4BDCF4BB3F0C88B4608FA8C6785FDCF1569DD56CE88E27F60`。拆包门禁确认包内业务资源与当前 App-Plus 构建一致;同一 APK 已在 vivo Android 15 真机完成登录、麦克风允许/拒绝/恢复、权限 Activity 返回、系统文件/媒体选择器取消、`191,352` 字节合成中文 WAV 选择和生产 ASR、成果投稿确认保存。正式结论仍为 No-Go 的原因已转为业务内容/通道/负责人签认、受控分发与企业签名决策,以及真实断网、WebRTC、实际图片/视频/文档、受控下载和其余角色门禁。
随后根据企业内部应用的体验决策,`0.1.12 (112)` 取消 DCloud 启动原生确认,法务同意统一放到登录页。新 APK 大小 `33,921,458` 字节,SHA-256 为 `DD24E5F20BC7C064F5059E538A1FAB7518DF46CBAB502F59A3629F0B1B1F5EBB`;包体门禁确认 `prompt=none`、登录页两个 HTTPS 链接和未勾选拦截均已内置。在同一 Android 15/API 35 虚拟机卸载旧包后全新安装,取证结果为原生隐私层 `not-visible`、四项敏感权限未授权、进程与前台 Activity 正常且无 Crash/ANR,证据位于 `output/aug1-rc/android-acceptance/20260729-021418-no-native-privacy-fresh-install-retry/`。当前 AVD 是 `x86_64`,而 APK 只含 `arm64-v8a/armeabi-v7a`;DCloud Weex 跨架构转译实际报 `spinWaitPeer timeout`、`sender is null` 和 IPC timeout,所以原生外壳可见但页面主体空白。该现象不证明产品页面失败,也不能作为页面通过证据;不得为此修改正式 ABI、回退 H5 壳或增加业务兜底。
@@ -77,18 +77,18 @@ Android 每个人工步骤完成后,可在不改变设备状态的前提下保
- [x] `0.1.8 (108)` 在同一虚拟机完成保留数据覆盖安装、标准 Launcher 启动和首次隐私弹窗前的后台/前台恢复,未见 FATAL 或 ANR。
- [x] `0.1.10 (110)` 从 `0.1.9` 保留数据覆盖安装并冷启动成功,最新原生隐私弹窗、未授权权限基线和无 FATAL/ANR 状态保持。
- [x] 只读统一取证脚本已通过状态变更命令回归并在虚拟机实跑,可重复保存当前版本、Activity、隐私控件、权限、UI、截图和退出记录。
- [x] 媒体选择取消/真实失败、Android 系统选择器生命周期、直通车首次弱网恢复和登录法务门禁状态机已由当前 206/206 个移动端测试覆盖;真实断网恢复仍列为下方人工门禁。
- [x] 媒体选择取消/真实失败、Android 系统选择器生命周期、直通车首次弱网恢复和登录法务门禁状态机已由当前 209/209 个移动端测试覆盖;真实断网恢复仍列为下方人工门禁。
- [x] `0.1.12 (112)` 全新安装后不显示原生隐私确认,四项敏感权限保持未授权且无 Crash/ANR;包内登录协议门禁与统一 RC 自动校验通过。
- [x] `0.1.13 (113)` 在 vivo Android 15 真机完成保留数据升级、同版本覆盖安装、冷启动、登录法务门禁、两个线上法务正文和前后台热恢复;四项敏感权限保持未授权且未见 Crash/ANR。
- [x] 同一真机在签名 `0.1.13` 完成真实页面登录和麦克风允许后的原生录音/生产 ASR;当前 `0.1.16` 源码又在 HBuilderX 标准调试基座完成 Android 系统选择器取消、重复打开、真实 WAV 选择、精确复制、上传、生产 ASR 和无提交草稿整理。
- [x] 同一真机在签名 `0.1.17` 完成真实页面登录、麦克风允许/拒绝/恢复、原生录音取消、系统文件/媒体选择器取消、真实 WAV 选择/生产 ASR 和成果投稿确认保存。
## Android(最低 Android 10 + 一台当前主流机型)
- [x] 登录页协议默认未勾选;两个法务链接能打开正确正文;未勾选时验证码和登录均不发请求,勾选后才允许继续。
- [x] 在 Android 设备选择数据库现有有效手机号,点击获取验证码后使用生产固定码登录;未开启真实短信,且未保存手机号、固定码或令牌。
- [ ] 首次录音允许麦克风后,可完成转写;拒绝麦克风后不循环申请,能选择本地音频继续。允许分支已在签名 `0.1.13` 通过;拒绝、取消、重复选择和本地音频 ASR 已在 `0.1.16` 标准调试基座通过,仍须等待 `0.1.16` 签名 APK 后复跑。
- [x] 首次录音允许麦克风后可完成转写;拒绝麦克风后系统“禁止”生效、不循环申请,并能进入本地音频选择继续 ASR。签名 `0.1.17` 已完成允许、拒绝、选择器取消、WAV 选择、生产 ASR和权限恢复。
- [ ] 原生实时对练可完成麦克风授权、实时转写与远端语音播放;WebRTC/WebView 不可用或断线时明确提示并保留录音对练。
- [ ] 图片、视频、文档和音频可选择并上传;受控附件下载后可打开,不泄露 OSS 地址。当前仅完成 `0.1.16` 调试基座的 Android 音频选择/上传/ASR,图片、视频、文档、受控下载和最终签名包仍待验收。
- [ ] 图片、视频、文档和音频可选择并上传;受控附件下载后可打开,不泄露 OSS 地址。签名 `0.1.17` 已完成音频选择/上传/ASR及图片/视频选择器取消;实际图片、视频、文档和受控下载仍待验收。
- [ ] 前后台切换、网络断开/恢复、窄屏和底部手势区无白屏、遮挡或重复提交。
- [ ] 再次安装同版本后,桌面图标、启动图和 Android 导航栏不闪白。