docs: record Android 0.1.9 RC evidence

This commit is contained in:
key
2026-07-29 02:23:06 +08:00
parent cb928edafd
commit 376a7c4b84
7 changed files with 24 additions and 16 deletions
+6
View File
@@ -28,6 +28,10 @@
同一 `0.1.8` APK 又在虚拟机完成保留数据的同版本覆盖安装。覆盖后冷启动 `3.092s`、标准 Launcher Intent 暖启动 `0.538s`、从系统桌面恢复热启动 `0.120s`;原生隐私弹窗和四项未授权状态始终保持,未发现 FATAL 或 ANR。该结果证明当前 APK 的安装升级、入口解析和首次弹窗前生命周期基线,不证明登录后前后台、弱网、录音或业务闭环。
随后针对 Android 系统文件选择器“用户取消”被误判成上传或转写失败的问题,将五个文件选择服务统一为结构化取消信号,并在九个页面恢复空闲态、清理残留“转写中”提示;真实平台异常仍显示稳定中文错误。新增回归覆盖五个选择器的取消/失败分流以及九个消费页面,移动端测试增至 `197/197`,类型检查通过。自动化证明状态机已修复,但真实系统文件选择器的取消操作仍须人工点击确认。
当前候选包已升级为 `0.1.9 (109)`,大小 `33,921,936` 字节,SHA-256 为 `0A968807E44F061C330C57E2C6D31A5F1F454177E0EAFBB80A76F5F06A311341`。DCloud 云打包成功后,APK 元数据、测试签名、包内资源、法务链接、网络安全配置和敏感值门禁全部通过;同一虚拟机从 `0.1.8` 保留数据覆盖安装成功,Launcher 冷启动约 `4.260s`,显示最新原生隐私弹窗,四项敏感权限仍为 `granted=false`,未发现 FATAL 或 ANR。验收仍未代替用户点击拒绝或同意。
## 已完成的 Android 基座证据
- [x] 自定义基座包名、版本、API 35、单签名、v2 签名和 SHA-256 可重复校验。
@@ -39,6 +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 文件选择器取消仍列为下方人工门禁。
## 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.8-dcloud-test.apk' `
-ApkPath '.\mobile-uni\dist\debug\bangdao-0.1.9-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.8-dcloud-test.apk' `
-ApkPath '.\mobile-uni\dist\debug\bangdao-0.1.9-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.8-dcloud-test.apk`:包名 `com.yincheng.wygj`、版本 `0.1.8 (108)`、`targetSdkVersion=35`,大小 `33,921,705` 字节,SHA-256 为 `E252140645F3AAD14B3594FD78E76BDF1A2122F7DC70EBD21CC5DF53223C7878`,签名证书 SHA-256 为 `AB06ECC0DE544DE73C385F3F0690B22966EBC12887FB8BEE1830CDBEFDEBEF5D`。APK 反编译门禁已确认包内业务资源等于当前 App-Plus 编译产物,法务配置、敏感值扫描、`usesCleartextTraffic=false`、`networkSecurityConfig` 引用和系统证书信任配置均通过;本机 Android 15/API 35 虚拟机完成卸载重装、冷启动和权限基线复核,总启动耗时约 `2.9s`,四项敏感权限保持未授权且 crash 缓冲区为空。该包仍使用 DCloud 云端测试证书,只能作为 8 月 1 日受控内测包;企业正式 release 还必须使用签认后的企业证书摘要。
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 还必须使用签认后的企业证书摘要。
企业正式签名 APK 还必须用发布负责人保管的证书摘要执行 release 模式核验;该模式会额外拒绝 `debuggable=true`、明文 HTTP 和签名摘要不一致:
@@ -1,6 +1,6 @@
# 帮道 8 月 1 日 Android 内测 Go/No-Go
> 评估时间:2026-07-29 01:55(CST)
> 评估时间:2026-07-29 02:18(CST)
>
> 评估对象:2026-08-01 受控内部测试 APK,不代表正式发布、应用商店上架或阶段一严格试点验收。
>
@@ -16,23 +16,23 @@
| 检查项 | 当前结果 |
|---|---|
| 版本冻结 | 代码候选提交 `8764031d4acf2fbaa4870c76f520c1fffbae1ec4`,工作区干净,统一 RC 证据 `releaseEligible=true`;该冻结提交相对 `origin/main` 领先 4 个提交,尚未推送 |
| 移动端自动化 | 193 项单元测试通过;TypeScript 类型检查通过 |
| 版本冻结 | 代码候选提交 `cb928edafd637c3fd8a006621ef8606d455740ef`,工作区干净,统一 RC 证据 `releaseEligible=true`;该冻结提交相对 `origin/main` 领先 7 个提交,尚未推送 |
| 移动端自动化 | 197 项单元测试通过;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.8 (108)`,`targetSdkVersion=35`,v2 签名,明文 HTTP 关闭且网络安全资源已进入 APK;SHA-256 `E252140645F3AAD14B3594FD78E76BDF1A2122F7DC70EBD21CC5DF53223C7878` |
| 独立 APK | `com.yincheng.wygj`,`0.1.9 (109)`,`targetSdkVersion=35`,v2 签名,明文 HTTP 关闭且网络安全资源已进入 APK;SHA-256 `0A968807E44F061C330C57E2C6D31A5F1F454177E0EAFBB80A76F5F06A311341` |
| APK 内容门禁 | 包内业务资源等于当前 App-Plus 编译产物;法务链接、手机号、固定测试验证码、私钥和常见令牌扫描通过 |
| 真机安装启动 | vivo V2443A(Android 15)完成 `0.1.6` 覆盖安装和冷启动;相机、录音、媒体权限保持未授权,未见 `FATAL EXCEPTION` |
| 虚拟机安装与生命周期 | 本机 `Medium_Phone` Android 15/API 35 完成 `0.1.8` 卸载重装、同版本覆盖安装、冷启动、后台/前台恢复和标准 Launcher Intent 启动;覆盖安装后冷启动 `3.092s`,Launcher 暖启动 `0.538s`,后台恢复热启动 `0.120s`,原生隐私弹窗与四项未授权状态保持,未见 FATAL/ANR |
| 虚拟机安装与生命周期 | 本机 `Medium_Phone` Android 15/API 35 已完成 `0.1.8` 卸载重装、同版本覆盖及冷/暖/热启动,并从 `0.1.8` 保留数据升级到 `0.1.9`;新包冷启动 `4.260s`,原生隐私弹窗与四项未授权状态保持,未见 FATAL/ANR |
| 首次隐私弹窗 | 最新包已在虚拟机干净启动显示原生弹窗;前一候选包的两个 HTTPS 链接已在 vivo 系统浏览器打开,仍需用户亲自执行拒绝/同意反例 |
| 法务静态页 | `https://peilian.njzhmj.top/legal/terms.html` 与 `https://peilian.njzhmj.top/legal/privacy.html` 已部署并可访问;发布前站点备份为 `/opt/wygj/backups/www-20260728224710` |
## No-Go 阻断项
1. **生产依赖未形成同一版本。** 只读预检确认生产根站、租户接口、移动首页和 64/64 schema 门禁通过,但本地/生产 `ruoyi-aihr` 规范化哈希分别为 `c93460e80b9552233cf9e57e8522ae08b18799c58314dac3079c3cc651bb4097` / `15f5513ac731d06f1ccbc6e709024a1cc40ca1080d60e91ceb25436d58c585a6`;管理端和移动 H5 入口资源也均不匹配。不能把本地测试通过外推为生产 APK 调用链通过。此次仅上线法务静态页,未发布后端、H5 业务资源或数据库迁移。
2. **原生人工反例未完成。** 覆盖安装和冷启动已通过;仍缺用户亲自执行的同意/拒绝、拒绝后退出、同意后登录、短信失败与重新登录、麦克风允许/拒绝、媒体取消、前后台切换和弱网验证。
2. **原生人工反例未完成。** 覆盖升级和冷启动已通过,媒体取消状态机已自动化修复;仍缺用户亲自执行的同意/拒绝、拒绝后退出、同意后登录、短信失败与重新登录、麦克风允许/拒绝、真实系统选择器取消、登录后前后台切换和弱网验证。
3. **核心业务真机闭环未完成。** 仍缺认证账号下完整“查/练/问”、五个直通渠道、五个正式对练场景、ASR/TTS、附件上传下载和越权反例。
4. **内容与业务验收不足。** 当前仅收到 1/24 份生活顾问访谈。技术侧已把调研整理为 30 道政策题候选和 5 个场景候选,但全部保持待审/禁用,正式可发布场景和正式有据标准答案仍为 0/0;五渠道真实处理人也没有业务签认证据。
5. **发布与回滚未签认。** 本地已有 APK/后端最小版本矩阵、构建证据和回滚边界,但尚无负责人签字、完整预检通过和回滚演练记录。当前 APK 已关闭明文流量但仍使用 DCloud 测试证书,只能用于受控内测;企业签名和公司法务正式签认仍是正式发布门槛。
@@ -41,7 +41,7 @@
| 顺序 | 必须完成 | 验收证据 |
|---|---|---|
| 已完成 | 确定 APK、后端、管理端/H5、数据库四个发布单元,提交并冻结 release commit | `8764031d`、`releaseEligible=true`、`output/aug1-rc/0.1.8-108-8764031d-frozen/`、四单元版本矩阵 |
| 已完成 | 确定 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`) |
| 1 | 获得授权后只发布实际依赖的后端;管理端/H5 延期,schema 本批不变;随后重跑完整 `release-preflight` | 本地与生产 `ruoyi-aihr` 模块匹配,schema 继续通过 |
| 2 | 用户在已连接 Android 手机上完成隐私选择和权限正反例 | 设备、包版本、步骤、结果;不记录手机号、验证码和个人内容 |
| 3 | 用正式测试账号完成“查/练/问”、五直通渠道及附件/语音闭环 | 每条用例的时间、结果、失败截图或日志 |
@@ -90,7 +90,7 @@
| 门禁 | 结果 | 说明 |
|---|---|---|
| `mobile-uni` 单元测试 | 通过 | 193/193;测试过程有本机 WebSocket 端口占用告警,但无失败 |
| `mobile-uni` 单元测试 | 通过 | 197/197;新增文件选择器取消/失败分流与九个消费页面回归,测试过程有本机 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.8` 在 Android 15 虚拟机完成卸载重装、同版本覆盖、冷启动、后台恢复和标准 Launcher 启动,始终显示原生隐私弹窗且四项敏感权限未授权;用户同意/拒绝、登录后录音允许/拒绝和完整反例仍未通过 |
| Android 设备、调试基座、测试签名和真机门禁 | **部分通过,仍阻断** | HBuilderX 5.22 已识别 vivo V2443A(Android 15);API 35 自定义基座和可独立安装的 DCloud 云证书内测 APK 均已生成。`0.1.9` 在 Android 15 虚拟机完成从 `0.1.8` 保留数据升级、冷启动并保持原生隐私弹窗和四项敏感权限未授权;媒体选择取消状态机已自动化修复。用户同意/拒绝、登录后录音允许/拒绝、真实系统选择器取消和完整反例仍未通过 |
统一 RC 脚本已在干净代码候选提交 `8764031d4acf2fbaa4870c76f520c1fffbae1ec4` 上完整复跑,证据目录为 `output/aug1-rc/0.1.8-108-8764031d-frozen/`,结果为 `releaseEligible=true`。本地最小交付包为 `output/aug1-release/bangdao-aug1-0.1.8-108-8764031d.zip`,SHA-256 为 `6103A91917BD37D31FF7BEDB95549D23D855E60D3E9449E86D6239A40D0CB855`,已完成解压后逐文件 SHA-256 复验。上述本地自动化冻结不替代生产后端发布授权和人工验收。
统一 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 复验。上述本地自动化冻结不替代生产后端发布授权和人工验收。
生活顾问调研已转成 `docs/content-candidates/aug1-life-advisor-content-candidates-v0.1.json`:包含 5 个禁用场景候选和 30 道待审政策题,内容候选校验脚本通过。由于当前只收到 1/24 份访谈,且正式来源、业务审核和 Rubric 签认尚未完成,正式可发布场景与正式有据标准答案均为 `0`;交付包中的候选文件只供审核,不得直接导入或启用。
@@ -128,7 +128,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。该证据只完成安装与首次弹窗前的生命周期基线,未代替用户选择隐私选项。
- 自定义基座和独立内测 APK 均使用 DCloud 云端测试证书,不是企业正式签名 APK;当前 `0.1.8` 已关闭明文流量并内置网络安全配置,但仍只可用于 8 月 1 日受控内测。公司法务签认、企业签名、用户实际同意/拒绝、登录后权限反例仍是正式发布阻断。
- 针对 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 日受控内测。公司法务签认、企业签名、用户实际同意/拒绝、登录后权限反例仍是正式发布阻断。
## 4. P0 工作分解