# 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 环境时执行: ```bash 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`。