3.9 KiB
STEP-063 MapLibre 粒子 Android v1 发布工程化 — Codex完成报告 v1
结论:IMPLEMENTED / WAITING_MANUAL_RELEASE_VALIDATION。
真实基线与发布契约
实际确认 upstream Android 基础为 13.4.1,共同 core 为 18545ca10d296704b2cba675b182ff2c8da24588,当前发行 renderer 为 OpenGL。正式版本采用 13.4.1-particle.1;release manifest 位于 release/maplibre-particle/release-manifest.json。正式 npm 包路径为 packages/maplibre-particle-rn/,名称为 @navsea/maplibre-particle-rn;正式 Maven 坐标为 cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1。
原开发 AAR org.maplibre.gl:android-sdk-opengl:13.4.1-step061 只保留在历史 Step/验收说明中。正式 Android publication、RN package Android bridge 与 package plugin 均指向正式 NavSea coordinate;未继续把 step061 用作当前发行依赖。
RN package 与 Consumer
正式 package 保留 Native WeatherRuntime bridge,re-export 当前 MLRN 公共 Map API。当前仓库不是完整 MLRN fork,故 package 将 @maplibre/maplibre-react-native@11.3.6 作为 peer dependency,并仅以 devDependency 支撑包自身开发;Consumer 只直接安装 NavSea package,npm 将唯一 MLRN 解析到 App 根依赖层,不应额外直接安装第二份官方 MLRN。package plugin 利用 Gradle dependency substitution,将 MLRN 的唯一 OpenGL SDK 请求替换为正式 NavSea AAR,避免两份 Native AAR。
Consumer Host 位于 integration/react-native/MapLibreParticlePackageConsumerTestHost/,只声明 @navsea/maplibre-particle-rn@13.4.1-particle.1,从其导入 Map、Camera、WeatherRuntime 和 style helper;没有 file:、workspace/source-path package dependency,也不复制 bridge 或引用 Native source tree。
tarball 与静态验证
发布前 Consumer 验证修正 MLRN 为 peer dependency 后重新 npm pack,生成 navsea-maplibre-particle-rn-13.4.1-particle.1.tgz(9,100 bytes,SHA-1 247e2db901f6588c9e48bc3156a448b97d203d0d,SHA-256 31335791a5a6e553a538f84816322e8cd119f16d7c2b15436ce785aa497da6a8)。旧 tarball 哈希不再有效。tarball 含 package JSON、TS source/types、Android bridge/Gradle、autolinking config、Expo plugin、README、CHANGELOG、LICENSE;不含 node_modules、.git、build cache、APK、Test Host、WeatherV2 assets、logs、无关 docs 或凭证。
package JSON 和两个 plugin Node syntax 检查 PASS;正式 package TypeScript check PASS(经 build-output-throttle);release manifest/package/Consumer version contract、无 file: consumer dependency、正式 build config 无 step061 与 git diff --check 均 PASS。Consumer 预发布验证已实际安装 tarball。首次安装暴露 MLRN 被普通 dependency 嵌套到 @navsea/.../node_modules/@maplibre/...,Windows RN codegen 因路径超过 260 字符失败;该问题已通过 peer dependency 修正。修正后需要重新安装新 tarball、clean prebuild 并继续 APK 验证。没有运行 Jest。
未执行的人工验证与命令
Codex 未执行 Android Gradle、AAR build/publish、Maven Local publish、APK、ADB 或实体机测试。用户后续在具备 Android 环境时执行:
cd platform/android
# 按当前正式 publication 配置手工构建并发布到 Maven Local 或临时 staging。
./gradlew :MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal --console=plain
cd packages/maplibre-particle-rn
npm pack --pack-destination /tmp/maplibre-particle-release
cd integration/react-native/MapLibreParticlePackageConsumerTestHost
npm install /tmp/maplibre-particle-release/navsea-maplibre-particle-rn-13.4.1-particle.1.tgz --save-exact
npm install --ignore-scripts
npx expo prebuild --platform android --clean
npx expo run:android
随后验证 GSI、WeatherColor、Particle、canonical fixture submit 与 Runtime READY。通过前不得创建正式 release tag,也不得写 RELEASED 或 CLOSED / PASS。