4.4 KiB
STEP-063 MapLibre 粒子 Android v1 发布工程化 v2
状态:CLOSED / PASS
日期:2026-09-09
最终结论
STEP-063 已完成 MapLibre Particle Android v1 的正式发布工程化,并完成“正式 npm package → 正式 Maven AAR → React Native Consumer → 真实 WeatherV2 → WeatherColor / Particle”的 Android 实机消费验证。
正式版本冻结为:
MapLibre Native upstream : 13.4.1
npm package : @navsea/maplibre-particle-rn@13.4.1-particle.1
Android Maven artifact : cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1
Maven repository : https://pbf.jpcn.ccwu.cc/maven
renderer : OpenGL
STEP-061 的 13.4.1-step061 只保留为历史开发制品,不再作为正式 Consumer、package 或 Maven 发布依赖。
正式制品
- 正式 Android AAR:166,304,929 bytes;SHA-256
63c976c5a73fe8f132f428afecca40b09fa2dbdedaa13721586c472ea7eb279d。 - 正式 npm 预发布 tarball:
navsea-maplibre-particle-rn-13.4.1-particle.1.tgz,9,100 bytes。 - tarball SHA-1:
247e2db901f6588c9e48bc3156a448b97d203d0d。 - tarball SHA-256:
31335791a5a6e553a538f84816322e8cd119f16d7c2b15436ce785aa497da6a8。
Consumer 依赖模型修正
Windows 首次 Consumer APK 编译曾因 MLRN 被安装在:
@navsea/maplibre-particle-rn/node_modules/@maplibre/maplibre-react-native
导致 RN codegen/CMake 路径超过 Windows 260 字符限制。正式包随后将 @maplibre/maplibre-react-native@11.3.6 改为 peer dependency,并保留 devDependency 仅供包自身开发;修正提交为 fa431ba6fd1f182b8b77345b50a9d74e225f17d4。
重新安装后实际验证:
root MLRN = present
nested MLRN = absent
Gradle dependencyInsight 同时确认:
org.maplibre.gl:android-sdk-opengl:13.4.1
→ cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1
没有回退到官方 Native AAR、Maven Local 或 step061。
真实 WeatherV2 Package Consumer 验证
Consumer Test Host 已由 2×2 smoke fixture 升级为真实 WeatherV2 T0–T3 验收 Host;实现提交:3ac678a3c8164082452bd77e61989ccc928ed8bd。
真实数据固定为 ECMWF HRES 2026-08-07:
T0 2026080700
T1 2026080706
T2 2026080712
T3 2026080718
每帧:
grid = 513 × 769
payload = 3,155,976 bytes
schema = maplibre-particle-field/v1
encoding = float32-le
layout = interleaved-uv
U = eastward-positive m/s
V = northward-positive m/s
bounds = west 112.5 / south 0.0 / east 157.5 / north 55.77657301866769
transport = metadataJson + local file:// payload
Linux 静态验证已通过:TypeScript、根层 peer dependency、禁止旧 bridge / direct MLRN import 审计、Metro Android export;Metro 实际识别并导出 4 个 .f32 assets。
Win11 Consumer 编译环境按 NavSea 基线对齐:Gradle Wrapper 8.14.3、buildTools 36.0.0、minSdk 24、compile/target 36、NDK 27.1.12297006、Kotlin Plugin 2.1.20、顶层声明 AGP 8.5.0、RN Gradle Plugin 请求 AGP 8.12.0、JDK 17、New Architecture/Hermes 开启、edge-to-edge 关闭。
用户随后手工完成 assembleDebug、APK 安装与实体机运行,并明确确认当前正式 Package Consumer APK 正常。结合本轮真实 WeatherV2 Consumer 的设计,STEP-063 的人工 release validation 门槛已通过。
最终边界
本 Step 没有修改 Particle/Core/JNI/WeatherRuntime 业务算法,没有接入 NavSea,没有加入或执行 Jest。正式 package Consumer 不引用 MapLibreParticleLab source path、旧本地 bridge、Maven Local 或手工复制 AAR。
当前 release manifest 可以进入“已验证、等待最终 release freeze/tag”状态,但仍然:
npmRegistry = null
releaseTag = null
因此 CLOSED / PASS 表示 STEP-063 发布工程化与 Consumer 验收完成,不等于 npm 已上传或 release tag 已创建。
React 使用文档
React Native 正式调用、生命周期、提交 API 以及 canonical 显示数据结构详见:
docs/30_设计/MapLibre粒子ReactNative使用说明_v1.md
其中明确冻结:规则二维 NW-origin row-major Grid、float32-le / interleaved-uv、每 cell 8 bytes、U eastward / V northward、metadata 字段、byteLength 公式、file-reference transport、Timeline 与 React/Core 责任边界。
下一阶段如需正式创建 tag,应单独执行 Release Freeze;不要在本 Step 文档收尾中隐式创建 tag。