5.6 KiB
STEP-105 FZG1-2 MapLibre 13.6.1 实机 ADB 验收报告 v1
1. 结论
整体状态:PARTIAL。Android x86_64 OpenGL 升级候选已在 FZG 上完成多组运行验收;STEP-102 T2_TWO_FREE 仍 FAIL。不得以已安装、可显示粒子和无崩溃代表升级全部 PASS。
2. 环境和范围
- 2026-10-09 JST;Mac RDC/ADB;FZG1-2 Android 13,serial 192.168.200.139:5555。
- Test App org.maplibre.android.testapp / versionName 13.6.1,已安装 APK SHA-256 为 77bc0b238fb476494410a603443030b104d78f97a737307be52460bf5a68f5aa。
- Git 升级分支 upgrade/android-native-13.6.1-20261009,测试源码 HEAD c30add4d335c5c02aadac5756c1606b5bc497269。
- 仅 ADB UI/手势/Intent/Logcat/截图;没有 Codex、Gradle、Jest、NavSea 修改、iOS、其他 ABI 或正式发布。
3. 验收表
| 实测项目 | 证据 | 结论 |
|---|---|---|
| 初始粒子显示 | 用户看到粒子;UI GLOBAL/ACTIVE/EAST/MIX0%/256;两帧截图 | PASS(初始显示) |
| Cache ON→OFF→ON | 状态回读,runtime-disabled 后恢复 CACHE ON | PASS |
| 地图平移/双击缩放 | App 存活;camera-or-boundary 缓存失效,后续复用 | PASS(基础运行) |
| STEP-101 T1 单次重建 | destroy enter/return、Native reset、new Renderer ready、DONE | PASS |
| STEP-101 T2 20 次重建 | 流式日志20请求、20 Native reset进入/完成、40 Render reset进入/完成、21 ready、crash buffer0 | PASS |
| STEP-099 T4 R-C-R | 71次动态源更新,R0 build2→2、reuse5696→9373、invalidation35→35 | PASS(R0 locality) |
| QBIN V4 Golden | T0/T1 ACCEPTED_INSERTED,6项播放控制 ACCEPTED | PASS(操作契约) |
| STEP-102 T1_FREE_SYMBOL | R0 composite reuse +3683;R1 symbol placement gate false,Live | PASS |
| STEP-102 T2_TWO_FREE | R0 reuse +3682;R1 placementCapable=true、Live/Fallback、reuse0 | FAIL(预期双 Retained) |
| 最终恢复 | 默认 GLOBAL/ACTIVE/EAST/MIX0%/256;前台 Test App 13.6.1;crash buffer0 | PASS |
4. 关键数字及诊断
STEP-101 T2 首轮虽完成20次但设备环形 Logcat 丢失了前15次。该轮不记完整 PASS。第二轮使用 Mac 实时流式日志,从场景启动前持续记录到 DONE,完整包含:20 RESET_REQUEST、20 MapView destroy enter、20 destroy return、20 nativeReset entered、20 nativeReset completed、40 resetRenderer entered、40 completed、21 NEW_RENDERER_READY、1 SCENARIO_DONE,Crash Buffer 0。
STEP-099 T4 R-C-R(底层 Retained/中央粒子 Continuous/上层动态 Retained)在 tick8 至 tick130:R0 build=2→2、reuse=5696→9373(+3677)、invalidation=35→35;动态 GeoJSON 共71次更新。上层 R1 因 static-placement 保守 Live 回退。该 PASS 仅针对独立 R0 的 Source-scoped 缓存隔离。
QBIN V4 Golden 录得 t0=ACCEPTED_INSERTED、t1=ACCEPTED_INSERTED,后续 action=3 Seek25、4 Seek75、1 Play、5 Speed2、2 Pause、7 Clear,均 result=ACCEPTED;最终 UI 显示 V4 CLEARED。这不是天气场颜色和方向的像素级数值证明。
5. T2_TWO_FREE 阻塞事实和归因限制
T1:R0 placementCapable=false/gate=true/actual=composite,build1→1、reuse196→3879、invalidation6→6;带 Symbol 的 R1 placementCapable=true/gate=false/actual=live,符合保守安全设计。
T2:R0 placementCapable=false/gate=true/actual=composite,build1→1、reuse197→3879、invalidation5→5;R1 即使 fixture 指定 Fill,仍 placementCapable=true、gate=false、actual=live、fallback=static-placement,build0→0、reuse0→0、invalidation202→3884。最终 symbolFadeChange≈0.997、placementTransitionActive=true、crossSourceCollisions=true。两窗口 tick8/130 一致;无 FATAL/ANR,Crash Buffer 0。
只读源码:renderSegmentHasPlacementCapableLayer 只要分段内出现类型 symbol 即判 true,而测试 fixture T2 的自定义上层为 Fill。应调查运行时完整 Style Layer 列表、默认 Annotation Symbol 注入、segment begin/end、source/layer 归属。其它场景的 dependency 中曾出现 org.maplibre.annotations,但尚未证明在 T2 中造成该问题。缺少旧 .21 的 T2 运行对照,因此不应把该差异直接断言为 13.6.1 新引入的回归。
现象是保守 Live/Fallback 与复用能力未达预期,不是已证实的错绘或 GPU 资源错误。禁止为凑 PASS 关闭 Placement 安全门。需先核实是场景/区段定义问题还是实现问题,再在授权范围内修复并重新验收。
6. 原始证据、范围与收尾
Mac Git 忽略目录:artifacts/maplibre-particle/step105-fzg-runtime-20261009/,共含 01-baseline、02-cache、03-camera、04-teardown-t1、05-teardown-t2、06-locality-t4、07-qbin-v4、08-step102-t1、09-step102-t2、10-restored;保存截图、UI XML、原始流式 Logcat 与 crash buffer。其中 STEP-101 T2 正式证据为 05-teardown-t2/stream-complete.log。
本轮未做严格像素对比、长时间性能曲线、bearing/pitch 数值校验、Vulkan、RN 11.5.0、iOS、NavSea SDK 接入或正式发布。
结束前将 FZG 的 Test App 重新冷启动至普通粒子状态 GLOBAL / ACTIVE / EAST / MIX 0% / 256,前台运行、版本仍 13.6.1,设备 Crash Buffer 为空;NavSea 没有被安装或覆盖。
下一阶段:STEP-102 T2 的只读诊断与旧版 .21 对照,确定是否默认 annotation layer 被归入 R1,必要时明确修正场景/索引或源码,并在用户手工 Android 编译后由 RDC 重跑 T1/T2、T4 R-C-R 与 STEP-101 20次 reset。未完成前 Android Native 功能 Gate 保持 PARTIAL。
此报告没有业务代码提交。根目录 recoder_step.md 追加事实,中文阶段记录与 Git 远端状态通过 RDC 单独收尾。