54 lines
6.4 KiB
Markdown
54 lines
6.4 KiB
Markdown
# 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 相同,相关文本记录、截图、日志可复核。
|