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

6.4 KiB
Raw Blame History

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