Files
MapLibreParticleLab/docs/报告/STEP-097_A1_FZG1测试APK与实机验证报告_v1.md
tei 0d13552bed
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: record STEP-097 A1 FZG1 APK smoke validation
2026-09-25 23:55:57 +09:00

54 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STEP-097 A1 FZG1 测试 APK 与实机验证报告 v1
**结论:Android FZG1 既有场景冒烟完成;STEP-097 A1 仍为 PARTIAL / BLOCKED。** 本次确实重新构建、安装并通过 ADB 操作 FZG1-2,获得 20 张截图与设备诊断。它不替代 01 stencil 同瓦片双目标注入、02 iOS Metal 附件验证、03 LayerGroup 绘制异常注入及 19 C++ GTest 的正式检查点;A2/B/C 未执行。
## 1. 源码、设备与边界
- 验证日期:2026-09-25;开发/构建/ADB 控制:Mac-mini-tei.lan;仓库:`/Users/tei/dev/MapLibreParticleLab`,`particle/main`,代码 HEAD `91c2491b0ef73fb9e01d7861b9c4ed7b55498197`,构建开始 `git_dirty=false`。
- Integration 已通过 RDC 同步 `main` 至 `318f8ccf911ac3136c3086a1d14e61f83e2d4bce`;本轮未改公共协议、Integration 或 NavSea。
- 设备:Panasonic `FZG1-2`,ADB `192.168.200.139:5555`,Android-x86/Bliss x86_64,1920×1200,ABI 列表以 `device-abi.txt` 为准。ADB 直接从 Mac 连接设备;**没有使用 Win11 虚拟机或模拟器**。
- 包名:`org.maplibre.android.testapp`;Activity:`.activity.particle.ParticleCoreLayerValidationActivity`;测试时始终使用 `adb -s 192.168.200.139:5555`。
## 2. APK 构建和安装的实际结果
- 命令:`./tools/particle_android_validation/build_validation_apk.sh`;OpenGL Debug、x86_64、strip native debug symbols;Gradle `BUILD SUCCESSFUL in 15m 59s`,86 tasks(29 executed / 57 up-to-date)。
- APK:`artifacts/maplibre-particle/step097-fzg1/MapLibreAndroidTestApp-STEP097-A1-91c2491b0-FZG1-x86_64.apk`,**60,295,184 bytes**;内含 `lib/x86_64/libmaplibre.so` 39,422,632 bytes;ZIP/ABI/标准 Pipeline 检查通过。
- APK SHA-256:`8677197c5f83a22747cb51f0c261edffc5db4678fc25b3f366474f6ecb94dc99`;`build-info.txt` 记录同 commit、ABI、时间和 hash。冻结副本与标准 Pipeline 产物字节一致。
- 已备份旧安装包至 `artifacts/maplibre-particle/step097-fzg1/before/original-installed-base.apk`。新包使用 `adb -s 192.168.200.139:5555 install -r <APK>` 覆盖安装,输出 `Success`;设备内 `base.apk` 的 SHA-256 与新包完全相同。未清理设备应用数据、未改 NavSea App。
## 3. FZG1 ADB 操作与截图证据
脚本:`artifacts/maplibre-particle/step097-fzg1/run_smoke.py`(本地验证资料,不属于产品源码)。`smoke-run.log` 与 `mutation-run.log` 两次执行 RC=0;另有针对事件的 `live-capture-run.log` RC=0。原始截图、UI XML、日志统一保存在同目录的 `after/`。以下只表述真实场景和屏幕/诊断结果:
| 截图 | 场景 | 设备观察 |
| --- | --- | --- |
| 00–01 | 普通启动,A:R-C-R | Activity 可启动;A 范围 valid=true、fallback=false,B/T 各一缓存并有 build/reuse;蓝底、粉/灰图形及白线可见。 |
| 02–05 | B:R-C、C:C-R、D:C only、E:single continuous | 场景可切换,截图显示对应图形可见/隐藏;状态均 valid=true、fallback=false。 |
| 06–08 | 恢复 A,CACHE OFF→ON | OFF:`runtime-disabled`、fallback、Fast inactive;ON:`first-frame` 重新构建并恢复 reuse。 |
| 09 | CAMERA NEXT | 相机变化后仍有有效范围与重建/复用,未观察到崩溃或整幅永久清空。 |
| 10–11 | 缺失 START→RESTORE VALID | `valid=false/fallback=true/caches=0`,恢复后 `valid=true/fallback=false`、重建。 |
| 12–15 | TOP REORDER、CROSS CONTINUOUS、FAST FAIL-CLOSED、RESET A | 层序变体可切换;带额外 Continuous 层时 Fast 关闭并保留全路径绘制,重置后恢复 Fast。 |
| 16–19 | 实时抓日志时重置 A、相机、缺失 END、恢复 | 日志有 `STEP093_SCENE_READY` / `STEP093_RANGE`,缺失 END 后设备诊断为 `end-layer-missing`,恢复后有效。 |
- 设备全局 Logcat 缓冲区较小,单次事后 dump 可能覆盖早期 STEP093 事件,故补充**实时过滤采集** `after/live-particle-logcat.txt`。该文件记录 A 场景 READY、缺失 END 和恢复的实际事件;`after/logcat-final.txt` 保留事后日志。
- 在本次保存的设备日志与实时采集内未发现 `FATAL EXCEPTION`、`SIGSEGV` 或 `SIGABRT`;最后确认该测试 Activity 仍为 topResumedActivity。这不是长稳/全设备无故障的证明。
## 4. 异常观察及未关闭的检查点
**待复核诊断现象(不直接判定绘制缺陷):** B「BOTTOM+CONTINUOUS」与 D「CONTINUOUS ONLY」截图中没有上段粉色/白线对象,但诊断仍分别报告 `topPresent=true`、`caches=2/1`,且 T reuse 计数继续增长。可能涉及空段、旧 topology 统计或诊断刷新/对象身份;需用独立布局期望与源码追踪证实,不能仅凭截图认定旧上段污染像素。截图:`02_B_R-C.png`、`04_D_C.png`。
| 原 A1 问题 | 本次验证覆盖 | 状态 |
| --- | --- | --- |
| 01 N01/B01 stencil CPU/GPU 切换 | 只做 R-C-R 等既有不同 GeoJSON source 的视觉冒烟、相机/缓存切换;**没有同 vector source/same tiles 在 R-R/R-C-R 切换的像素 fixture** | 未闭合 |
| 02 N02/B02 Metal depth/stencil | 本次 APK 是 Android OpenGL;不可能代替 Metal 附件、clear/load/store 和 combined attachment 验证 | 未执行 |
| 03 N03/B12 render 抛异常后错误缓存成功 | 做了配置无效 fallback→恢复及 Fast fail-closed;**没有真正 LayerGroup render 抛异常注入与下帧恢复** | 未闭合 |
| 19 F09/O01 旧 cache release 归属 | 设备保留了 topology/资源计数截图;新增 `OldCacheReleaseCannotChargeReplacementAtSameIndex` GTest **没有执行** | 未闭合 |
本次不是完整 STEP-097,也不意味着 24 项均修复;A2、B、C、正式 FZG1 同瓦片遮罩回归、iOS Metal、C++ GTest、性能 benchmark、发布与 NavSea 产品 Gate 均未完成。不存在新正式软件发布,原 `.13` tag/manifest/产物未动。
## 5. 后续准确步骤
1. 补齐 01 同 tile 的 R-R/R-C-R/C-R-R 设备 fixture,02 Metal 附件测试入口,03 render exception 注入及 recovery;解决/解释 B、D 的 topPresent 诊断现象。
2. RDC 在同 commit 执行 19 定向 GTest,补齐上述源码测试;Android 再集中构建/安装一次而不是逐按钮重装,iOS Metal 由 Mac 单独做对应设备验收。
3. 满足 A1 代码/测试入口检查点后,才进入 STEP-097 A2/B/C;本次不得修改旧三轮调查或将部分冒烟标成 A1 PASS。
证据目录与 APK 目前位于 Mac 仓库忽略的 `artifacts/maplibre-particle/step097-fzg1/`。已安装 APK 和冻存 APK SHA 相同,相关文本记录、截图、日志可复核。