Files
MapLibreParticleLab/docs/50_Step记录/STEP-063_MapLibre粒子Android_v1发布工程化_v2.md
OpenAI Codex bcd020fc55
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: close STEP-063 release validation
2026-09-09 15:07:36 +08:00

4.4 KiB
Raw Permalink Blame History

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。