docs: refresh Android 0.1.10 release evidence

This commit is contained in:
key
2026-07-29 02:53:10 +08:00
parent dc20b92061
commit 04b35c055f
7 changed files with 19 additions and 19 deletions
+4 -4
View File
@@ -28,9 +28,9 @@
同一 `0.1.8` APK 又在虚拟机完成保留数据的同版本覆盖安装。覆盖后冷启动 `3.092s`、标准 Launcher Intent 暖启动 `0.538s`、从系统桌面恢复热启动 `0.120s`;原生隐私弹窗和四项未授权状态始终保持,未发现 FATAL 或 ANR。该结果证明当前 APK 的安装升级、入口解析和首次弹窗前生命周期基线,不证明登录后前后台、弱网、录音或业务闭环。
随后针对 Android 系统文件选择器“用户取消”被误判成上传或转写失败的问题,将五个文件选择服务统一为结构化取消信号,并在九个页面恢复空闲态、清理残留“转写中”提示;真实平台异常仍显示稳定中文错误。新增回归覆盖五个选择器的取消/失败分流以及九个消费页面,移动端测试增至 `197/197`,类型检查通过。自动化证明状态机已修复,但真实系统文件选择器的取消操作仍须人工点击确认。
随后针对 Android 系统文件选择器“用户取消”被误判成上传或转写失败的问题,将五个文件选择服务统一为结构化取消信号,并在九个页面恢复空闲态、清理残留“转写中”提示;真实平台异常仍显示稳定中文错误。新增回归覆盖五个选择器的取消/失败分流以及九个消费页面。直通车页同时补齐首次弱网导致五个直达对象加载失败后的原位重试,失败时清空旧通道并禁止提交,恢复后自动选择有效通道;再增加 package、lockfile 与 manifest 版本一致性门禁。移动端测试增至 `198/198`,类型检查通过。自动化证明状态机已修复,但真实系统文件选择器取消与断网恢复仍须人工点击确认。
当前候选包已升级为 `0.1.9 (109)`,大小 `33,921,936` 字节,SHA-256 为 `0A968807E44F061C330C57E2C6D31A5F1F454177E0EAFBB80A76F5F06A311341`。DCloud 云打包成功后,APK 元数据、测试签名、包内资源、法务链接、网络安全配置和敏感值门禁全部通过;同一虚拟机从 `0.1.8` 保留数据覆盖安装成功,Launcher 冷启动约 `4.260s`,显示最新原生隐私弹窗,四项敏感权限仍为 `granted=false`,未发现 FATAL 或 ANR。验收仍未代替用户点击拒绝或同意。
当前候选包已升级为 `0.1.10 (110)`,大小 `33,922,134` 字节,SHA-256 为 `20CB16B4E9D024DBF5EEEF577BFBA3B4DF5E5E78B597BABB99CB7450C7AE5034`。DCloud 云打包成功后,APK 元数据、测试签名、包内资源、法务链接、网络安全配置和敏感值门禁全部通过;同一虚拟机从 `0.1.9` 保留数据覆盖安装成功,Launcher 冷启动约 `1.271s`,显示最新原生隐私弹窗,四项敏感权限仍为 `granted=false`,未发现 FATAL 或 ANR。验收仍未代替用户点击拒绝或同意。
## 已完成的 Android 基座证据
@@ -43,8 +43,8 @@
- [x] `0.1.6 (106)` 当前候选包完成同签名覆盖安装、冷启动和启动权限复核,包内资源与当前 App-Plus 编译产物一致。
- [x] `0.1.8 (108)` 在本机 Android 15/API 35 虚拟机完成卸载重装和冷启动,最新包原生隐私弹窗真实显示,四项敏感权限保持未授权、网络安全配置已进入 APK 且未见崩溃。
- [x] `0.1.8 (108)` 在同一虚拟机完成保留数据覆盖安装、标准 Launcher 启动和首次隐私弹窗前的后台/前台恢复,未见 FATAL 或 ANR。
- [x] `0.1.9 (109)` 从 `0.1.8` 保留数据覆盖安装并冷启动成功,最新原生隐私弹窗、未授权权限基线和无 FATAL/ANR 状态保持。
- [x] 媒体选择取消/真实失败的状态机已由 197/197 个移动端测试覆盖;真实 Android 文件选择器取消仍列为下方人工门禁。
- [x] `0.1.10 (110)` 从 `0.1.9` 保留数据覆盖安装并冷启动成功,最新原生隐私弹窗、未授权权限基线和无 FATAL/ANR 状态保持。
- [x] 媒体选择取消/真实失败与直通车首次弱网恢复状态机已由 198/198 个移动端测试覆盖;真实 Android 文件选择器取消与断网恢复仍列为下方人工门禁。
## Android(最低 Android 10 + 一台当前主流机型)
+3 -3
View File
@@ -65,7 +65,7 @@ HBuilderX 5.22 当前实测中,自定义调试基座不支持安心打包,
```powershell
& '.\mobile-uni\scripts\verify-android-apk.ps1' `
-ApkPath '.\mobile-uni\dist\debug\bangdao-0.1.9-dcloud-test.apk' `
-ApkPath '.\mobile-uni\dist\debug\bangdao-0.1.10-dcloud-test.apk' `
-BuildKind dcloud-test
```
@@ -75,13 +75,13 @@ APK 门禁还会比较包内与当前 `dist/build/app/app-service.js` 的 SHA-25
```powershell
.\scripts\prepare-aug1-rc.ps1 `
-ApkPath '.\mobile-uni\dist\debug\bangdao-0.1.9-dcloud-test.apk' `
-ApkPath '.\mobile-uni\dist\debug\bangdao-0.1.10-dcloud-test.apk' `
-BuildKind dcloud-test
```
脚本会复跑移动端测试/类型检查/H5/App 构建、管理端构建、后端定向测试和打包,验证 APK 后在被 Git 忽略的 `output/aug1-rc/` 生成标准文件名、哈希及 JSON/Markdown 证据。它不执行生产同步、数据库迁移、服务重启或用户隐私选择。
2026-07-28 最终自定义基座大小为 `21,158,193` 字节,SHA-256 为 `82D3352FF96A86F5DB4AC0C71DCB0ED6CEC98F2A785F6EAED2FE8D4FC0C5F704`。2026-07-29 当前独立内测候选包为 `bangdao-0.1.9-dcloud-test.apk`:包名 `com.yincheng.wygj`、版本 `0.1.9 (109)`、`targetSdkVersion=35`,大小 `33,921,936` 字节,SHA-256 为 `0A968807E44F061C330C57E2C6D31A5F1F454177E0EAFBB80A76F5F06A311341`,签名证书 SHA-256 为 `AB06ECC0DE544DE73C385F3F0690B22966EBC12887FB8BEE1830CDBEFDEBEF5D`。APK 反编译门禁已确认包内业务资源等于当前 App-Plus 编译产物,法务配置、敏感值扫描、`usesCleartextTraffic=false`、`networkSecurityConfig` 引用和系统证书信任配置均通过;本机 Android 15/API 35 虚拟机已从 `0.1.8` 保留数据覆盖升级并在约 `4.260s` 内冷启动,原生隐私弹窗继续显示,四项敏感权限保持未授权且未见 FATAL/ANR。统一 RC 在干净提交 `cb928eda` 上复跑移动端 197/197、`ruoyi-aihr` 698/698 及全部构建/校验门禁,证据为 `output/aug1-rc/0.1.9-109-cb928eda-frozen/`。该包仍使用 DCloud 云端测试证书,只能作为 8 月 1 日受控内测包;企业正式 release 还必须使用签认后的企业证书摘要。
2026-07-28 最终自定义基座大小为 `21,158,193` 字节,SHA-256 为 `82D3352FF96A86F5DB4AC0C71DCB0ED6CEC98F2A785F6EAED2FE8D4FC0C5F704`。2026-07-29 当前独立内测候选包为 `bangdao-0.1.10-dcloud-test.apk`:包名 `com.yincheng.wygj`、版本 `0.1.10 (110)`、`targetSdkVersion=35`,大小 `33,922,134` 字节,SHA-256 为 `20CB16B4E9D024DBF5EEEF577BFBA3B4DF5E5E78B597BABB99CB7450C7AE5034`,签名证书 SHA-256 为 `AB06ECC0DE544DE73C385F3F0690B22966EBC12887FB8BEE1830CDBEFDEBEF5D`。APK 反编译门禁已确认包内业务资源等于当前 App-Plus 编译产物,法务配置、敏感值扫描、`usesCleartextTraffic=false`、`networkSecurityConfig` 引用和系统证书信任配置均通过;本机 Android 15/API 35 虚拟机已从 `0.1.9` 保留数据覆盖升级并在约 `1.271s` 内冷启动,原生隐私弹窗继续显示,四项敏感权限保持未授权且未见 FATAL/ANR。统一 RC 在干净提交 `dc20b920` 上复跑移动端 198/198、`ruoyi-aihr` 698/698 及全部构建/校验门禁,证据为 `output/aug1-rc/0.1.10-110-dc20b920-frozen/`。该包仍使用 DCloud 云端测试证书,只能作为 8 月 1 日受控内测包;企业正式 release 还必须使用签认后的企业证书摘要。
企业正式签名 APK 还必须用发布负责人保管的证书摘要执行 release 模式核验;该模式会额外拒绝 `debuggable=true`、明文 HTTP 和签名摘要不一致:
@@ -16,16 +16,16 @@
| 检查项 | 当前结果 |
|---|---|
| 版本冻结 | 代码候选提交 `cb928edafd637c3fd8a006621ef8606d455740ef`,工作区干净,统一 RC 证据 `releaseEligible=true`;该冻结提交相对 `origin/main` 领先 7 个提交,尚未推送 |
| 移动端自动化 | 197 项单元测试通过;TypeScript 类型检查通过;五个文件选择器和九个消费页面已覆盖用户取消/平台失败分流 |
| 版本冻结 | 代码候选提交 `dc20b92061f10a356ed73eb105ef7b00c8b8a617`,工作区干净,统一 RC 证据 `releaseEligible=true`;该冻结提交相对 `origin/main` 领先 9 个提交,尚未推送 |
| 移动端自动化 | 198 项单元测试通过;TypeScript 类型检查通过;五个文件选择器和九个消费页面已覆盖用户取消/平台失败分流,直通车首次弱网加载失败可原位重试并失败关闭 |
| 构建 | `mobile-uni` H5、App-Plus、管理端生产构建通过;后端 `ruoyi-admin.jar` 重建通过 |
| P0 后端语义 | `AihrSopSeedServiceTest` 39 项、`AihrPracticeSeedServiceTest` 102 项通过;`ruoyi-aihr` 698 项全量测试通过,0 失败、0 错误 |
| 内容候选门禁 | 已生成 5 个禁用场景候选和 30 道待审政策题,机器校验通过;正式可发布场景 `0`、正式有据标准答案 `0`,不得导入或启用 |
| App 资源门禁 | 正式法务 URL、原生隐私配置、API 35、图标和启动图检查通过 |
| 独立 APK | `com.yincheng.wygj`,`0.1.9 (109)`,`targetSdkVersion=35`,v2 签名,明文 HTTP 关闭且网络安全资源已进入 APK;SHA-256 `0A968807E44F061C330C57E2C6D31A5F1F454177E0EAFBB80A76F5F06A311341` |
| 独立 APK | `com.yincheng.wygj`,`0.1.10 (110)`,`targetSdkVersion=35`,v2 签名,明文 HTTP 关闭且网络安全资源已进入 APK;SHA-256 `20CB16B4E9D024DBF5EEEF577BFBA3B4DF5E5E78B597BABB99CB7450C7AE5034` |
| APK 内容门禁 | 包内业务资源等于当前 App-Plus 编译产物;法务链接、手机号、固定测试验证码、私钥和常见令牌扫描通过 |
| 真机安装启动 | vivo V2443A(Android 15)完成 `0.1.6` 覆盖安装和冷启动;相机、录音、媒体权限保持未授权,未见 `FATAL EXCEPTION` |
| 虚拟机安装与生命周期 | 本机 `Medium_Phone` Android 15/API 35 已完成 `0.1.8` 卸载重装、同版本覆盖及冷/暖/热启动,并从 `0.1.8` 保留数据升级到 `0.1.9`;新包冷启动 `4.260s`,原生隐私弹窗与四项未授权状态保持,未见 FATAL/ANR |
| 虚拟机安装与生命周期 | 本机 `Medium_Phone` Android 15/API 35 已完成历史卸载重装、同版本覆盖及冷/暖/热启动,并从 `0.1.9` 保留数据升级到 `0.1.10`;新包冷启动 `1.271s`,原生隐私弹窗与四项未授权状态保持,未见 FATAL/ANR |
| 首次隐私弹窗 | 最新包已在虚拟机干净启动显示原生弹窗;前一候选包的两个 HTTPS 链接已在 vivo 系统浏览器打开,仍需用户亲自执行拒绝/同意反例 |
| 法务静态页 | `https://peilian.njzhmj.top/legal/terms.html` 与 `https://peilian.njzhmj.top/legal/privacy.html` 已部署并可访问;发布前站点备份为 `/opt/wygj/backups/www-20260728224710` |
@@ -41,7 +41,7 @@
| 顺序 | 必须完成 | 验收证据 |
|---|---|---|
| 已完成 | 确定 APK、后端、管理端/H5、数据库四个发布单元,提交并冻结 release commit | `cb928eda`、`releaseEligible=true`、`output/aug1-rc/0.1.9-109-cb928eda-frozen/`、`bangdao-aug1-0.1.9-109-cb928eda.zip`(SHA-256 `A91C1F672C738C9950295F967833F9E0E7F782C176F679561AE63AD5A7C0C76A`) |
| 已完成 | 确定 APK、后端、管理端/H5、数据库四个发布单元,提交并冻结 release commit | `dc20b920`、`releaseEligible=true`、`output/aug1-rc/0.1.10-110-dc20b920-frozen/`、`bangdao-aug1-0.1.10-110-dc20b920.zip`(SHA-256 `4BAA79B2CA2C4D486B6194288D90022D5F994A4D8C8E05D7C2DDD87F9BF5B3B7`) |
| 1 | 获得授权后只发布实际依赖的后端;管理端/H5 延期,schema 本批不变;随后重跑完整 `release-preflight` | 本地与生产 `ruoyi-aihr` 模块匹配,schema 继续通过 |
| 2 | 用户在已连接 Android 手机上完成隐私选择和权限正反例 | 设备、包版本、步骤、结果;不记录手机号、验证码和个人内容 |
| 3 | 用正式测试账号完成“查/练/问”、五直通渠道及附件/语音闭环 | 每条用例的时间、结果、失败截图或日志 |
@@ -90,7 +90,7 @@
| 门禁 | 结果 | 说明 |
|---|---|---|
| `mobile-uni` 单元测试 | 通过 | 197/197;新增文件选择器取消/失败分流与九个消费页面回归,测试过程有本机 WebSocket 端口占用告警,但无失败 |
| `mobile-uni` 单元测试 | 通过 | 198/198;覆盖文件选择器取消/失败分流、九个消费页面、直通车首次弱网恢复及版本一致性,测试过程有本机 WebSocket 端口占用告警,但无失败 |
| `mobile-uni` TypeScript 检查 | 通过 | `npm --prefix mobile-uni run typecheck` |
| H5 资源构建 | 通过 | 仅证明 H5 资源可编译 |
| App-Plus 资源构建 | 通过 | 仅生成 HBuilderX 出包资源,不等同于 APK |
@@ -103,9 +103,9 @@
| `ruoyi-aihr` 后端全量测试 | 通过 | 698 个测试,0 失败、0 错误;包含正式场景占位来源/回合/Rubric 禁止发布的新增回归;Windows CRLF 引发的 7 个源码契约误判已通过读取时统一 LF 修复并全量复跑 |
| 法务配置技术链路 | 通过 | 登录协议默认不勾选;协议未配置时禁止验证码与登录;配置生成器和发布联网校验已接入,发布包拒绝开发验证码提示 |
| 正式 App 发布配置校验 | **技术通过,法务签认阻断** | 受控内测版协议正文已通过 Caddy 公网 HTTPS 发布,原生弹窗、登录页和联网门禁使用同一组地址;公司法务尚未正式签认正文,不能视为正式发布通过 |
| Android 设备、调试基座、测试签名和真机门禁 | **部分通过,仍阻断** | HBuilderX 5.22 已识别 vivo V2443A(Android 15);API 35 自定义基座和可独立安装的 DCloud 云证书内测 APK 均已生成。`0.1.9` 在 Android 15 虚拟机完成从 `0.1.8` 保留数据升级、冷启动并保持原生隐私弹窗和四项敏感权限未授权;媒体选择取消状态机已自动化修复。用户同意/拒绝、登录后录音允许/拒绝、真实系统选择器取消和完整反例仍未通过 |
| Android 设备、调试基座、测试签名和真机门禁 | **部分通过,仍阻断** | HBuilderX 5.22 已识别 vivo V2443A(Android 15);API 35 自定义基座和可独立安装的 DCloud 云证书内测 APK 均已生成。`0.1.10` 在 Android 15 虚拟机完成从 `0.1.9` 保留数据升级、冷启动并保持原生隐私弹窗和四项敏感权限未授权;媒体选择取消与直通车首次弱网恢复状态机已自动化修复。用户同意/拒绝、登录后录音允许/拒绝、真实系统选择器取消、真实断网恢复和完整反例仍未通过 |
统一 RC 脚本已在干净代码候选提交 `cb928edafd637c3fd8a006621ef8606d455740ef` 上完整复跑,证据目录为 `output/aug1-rc/0.1.9-109-cb928eda-frozen/`,结果为 `releaseEligible=true`。本地最小交付包为 `output/aug1-release/bangdao-aug1-0.1.9-109-cb928eda.zip`,SHA-256 为 `A91C1F672C738C9950295F967833F9E0E7F782C176F679561AE63AD5A7C0C76A`,已完成解压后 8 个载荷逐文件 SHA-256 复验。上述本地自动化冻结不替代生产后端发布授权和人工验收。
统一 RC 脚本已在干净代码候选提交 `dc20b92061f10a356ed73eb105ef7b00c8b8a617` 上完整复跑,证据目录为 `output/aug1-rc/0.1.10-110-dc20b920-frozen/`,结果为 `releaseEligible=true`。本地最小交付包为 `output/aug1-release/bangdao-aug1-0.1.10-110-dc20b920.zip`,SHA-256 为 `4BAA79B2CA2C4D486B6194288D90022D5F994A4D8C8E05D7C2DDD87F9BF5B3B7`,已完成解压后 9 个文件、其中 8 个载荷逐文件 SHA-256 复验。上述本地自动化冻结不替代生产后端发布授权和人工验收。
生活顾问调研已转成 `docs/content-candidates/aug1-life-advisor-content-candidates-v0.1.json`:包含 5 个禁用场景候选和 30 道待审政策题,内容候选校验脚本通过。由于当前只收到 1/24 份访谈,且正式来源、业务审核和 Rubric 签认尚未完成,正式可发布场景与正式有据标准答案均为 `0`;交付包中的候选文件只供审核,不得直接导入或启用。
@@ -129,8 +129,8 @@
- `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 系统文件选择器“用户取消”被误判为上传或转写失败的问题,五个选择服务已统一结构化取消信号,九个页面在取消时恢复空闲态并清理残留“转写中”;真实错误仍显示稳定中文。自动化已覆盖该状态机,但真实系统选择器取消仍须人工点击确认。
- `0.1.9 (109)` DCloud 独立内测 APK 大小 `33,921,936` 字节,SHA-256 为 `0A968807E44F061C330C57E2C6D31A5F1F454177E0EAFBB80A76F5F06A311341`。同一虚拟机从 `0.1.8` 保留数据覆盖安装成功,Launcher 冷启动约 `4.260s`,最新原生隐私弹窗可见,四项权限仍为 `granted=false`,未发现 FATAL 或 ANR。
- 自定义基座和独立内测 APK 均使用 DCloud 云端测试证书,不是企业正式签名 APK;当前 `0.1.9` 已关闭明文流量并内置网络安全配置,但仍只可用于 8 月 1 日受控内测。公司法务签认、企业签名、用户实际同意/拒绝、登录后权限反例仍是正式发布阻断。
- `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.10` 已关闭明文流量并内置网络安全配置,但仍只可用于 8 月 1 日受控内测。公司法务签认、企业签名、用户实际同意/拒绝、登录后权限反例仍是正式发布阻断。
## 4. P0 工作分解