docs: add STEP-063 particle release engineering task
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,889 @@
|
||||
# STEP-063 MapLibre 粒子 Android v1 发布工程化与 React Native 可导入包 Codex 任务 v1
|
||||
|
||||
## 0. 任务性质
|
||||
|
||||
本任务开始把已经通过 Android 实机综合验证的 MapLibre Particle 从“开发工程状态”整理为“可版本化、可发布、可由 React Native 通过包依赖导入的组件”。
|
||||
|
||||
本任务属于发布工程化与包结构整理,不是继续开发新的粒子渲染能力。
|
||||
|
||||
当前用户已确认:
|
||||
|
||||
- Android MapLibre Particle 当前能力达到满意水平。
|
||||
- STEP-062 可按 `CLOSED / PASS` 收尾。
|
||||
- 当前阶段不接入 NavSea。
|
||||
- 发布服务器、npm Registry、Maven Repository 的最终部署位置暂不决定。
|
||||
- npm 正式包名采用:
|
||||
- `@navsea/maplibre-particle-rn`
|
||||
- 正式版本规则采用:
|
||||
- `<上游 MapLibre Native 版本>-particle.<NavSea 修订号>`
|
||||
- 当前计划首个正式版本:
|
||||
- `13.4.1-particle.1`
|
||||
- Android Maven artifact 计划采用:
|
||||
- group: `cc.navsea.maplibre`
|
||||
- artifact: `android-sdk-particle-opengl`
|
||||
- version: `13.4.1-particle.1`
|
||||
|
||||
如果仓库实际调查证明基础 MapLibre Native 并非 `13.4.1`,必须停止版本改写并先报告,不得自行猜测或强行套用版本号。
|
||||
|
||||
---
|
||||
|
||||
# 1. 本任务目标
|
||||
|
||||
完成以下四个目标:
|
||||
|
||||
1. 冻结并记录当前 MapLibre Particle 的真实上游版本基线。
|
||||
2. 建立正式版本号、release manifest、CHANGELOG 与发布契约。
|
||||
3. 把当前 React Native 接入整理成一个正式 npm package:
|
||||
- `@navsea/maplibre-particle-rn`
|
||||
4. 建立一个“只通过发布包消费”的独立 Consumer Test Host,用于后续证明 NavSea 不需要源码路径或 MapLibre Native 源码编译即可使用。
|
||||
|
||||
本任务结束时,不要求真正上传到任何服务器。
|
||||
|
||||
最终服务器发布位置后续单独决定。
|
||||
|
||||
---
|
||||
|
||||
# 2. 强制边界
|
||||
|
||||
## 2.1 禁止继续扩展粒子功能
|
||||
|
||||
本任务不得新增或重写:
|
||||
|
||||
- Particle GPU simulation
|
||||
- WeatherColor 算法
|
||||
- Timeline / Playback 算法
|
||||
- HostField 二进制入口
|
||||
- RasterArraySource 核心语义
|
||||
- U/V canonical contract
|
||||
- MapLibre renderer
|
||||
- JNI 核心路径
|
||||
- WeatherRuntime 业务语义
|
||||
|
||||
除非当前发布工程化过程中发现明确的“无法打包/无法消费”的结构性阻塞。
|
||||
|
||||
如果出现此类阻塞:
|
||||
|
||||
1. 停止扩大修改。
|
||||
2. 明确记录阻塞位置。
|
||||
3. 说明最小修复建议。
|
||||
4. 不得借发布任务顺便重构 Native/Core。
|
||||
|
||||
---
|
||||
|
||||
## 2.2 不接入 NavSea
|
||||
|
||||
本任务不得修改 NavSea 仓库。
|
||||
|
||||
不得:
|
||||
|
||||
- 在 NavSea 中安装 npm package
|
||||
- 修改 NavSea Metro
|
||||
- 修改 NavSea Gradle
|
||||
- 修改 NavSea Pod
|
||||
- 修改 NavSea Store / Adapter / Action
|
||||
- 将 Test Host 逻辑搬入 NavSea
|
||||
|
||||
本任务只负责把发布组件准备好。
|
||||
|
||||
---
|
||||
|
||||
## 2.3 不决定最终发布服务器
|
||||
|
||||
本任务不得擅自加入:
|
||||
|
||||
- 公司 npm Registry URL
|
||||
- GitHub Packages
|
||||
- GitLab Packages
|
||||
- Gitea Packages
|
||||
- Nexus
|
||||
- Artifactory
|
||||
- Verdaccio
|
||||
- 私有 Maven Repository URL
|
||||
- 生产用户名、密码、Token、证书
|
||||
|
||||
可以建立与 Registry 无关的标准发布配置和说明。
|
||||
|
||||
可以使用本地 `.tgz`、本地 staging 目录作为“未上传发布物”验证手段。
|
||||
|
||||
---
|
||||
|
||||
## 2.4 Android 编译边界
|
||||
|
||||
严格遵守项目长期规则:
|
||||
|
||||
**所有 Android 编译由用户手工执行。**
|
||||
|
||||
Codex 不得执行:
|
||||
|
||||
- Android Gradle assemble
|
||||
- Android Gradle build
|
||||
- AAR build
|
||||
- AAR publish
|
||||
- Maven Local publish
|
||||
- APK build
|
||||
- APK install
|
||||
- ADB
|
||||
- Android 实机测试
|
||||
|
||||
Codex 可以:
|
||||
|
||||
- 修改构建配置
|
||||
- 修改版本号
|
||||
- 准备 publication 配置
|
||||
- 做非 Android 编译的静态检查
|
||||
- 执行 TypeScript 编译/类型检查(若不触发 Android build)
|
||||
- 执行 `npm pack`
|
||||
- 检查 `.tgz` 内容
|
||||
- 编写用户手工 Android 构建命令
|
||||
|
||||
---
|
||||
|
||||
## 2.5 不执行 Jest
|
||||
|
||||
本任务不执行 Jest,也不新增 Jest 作为验收要求。
|
||||
|
||||
---
|
||||
|
||||
# 3. 第一步:真实基线只读调查
|
||||
|
||||
开始修改前必须先从当前仓库真实代码调查。
|
||||
|
||||
至少确认:
|
||||
|
||||
## 3.1 MapLibre Native 基础版本
|
||||
|
||||
从实际构建文件、版本定义、Gradle publication、Git metadata 等确认:
|
||||
|
||||
- upstream MapLibre Native version
|
||||
- 当前 Android renderer variant
|
||||
- 当前 STEP-061 AAR 坐标
|
||||
- 当前 STEP-061 AAR version
|
||||
- 当前 Native/Core source 与该版本之间的关系
|
||||
|
||||
预期:
|
||||
|
||||
```text
|
||||
upstreamMapLibreNative = 13.4.1
|
||||
currentDevelopmentArtifact = org.maplibre.gl:android-sdk-opengl:13.4.1-step061
|
||||
renderer = opengl
|
||||
```
|
||||
|
||||
但必须以仓库实际内容为准。
|
||||
|
||||
---
|
||||
|
||||
## 3.2 React Native 基线
|
||||
|
||||
调查当前 RN bridge / package 的真实位置与结构。
|
||||
|
||||
至少确认:
|
||||
|
||||
- 当前 RN package 名
|
||||
- 当前 RN package version
|
||||
- 当前 `package.json`
|
||||
- 当前 Android module / Gradle 文件
|
||||
- 当前 autolinking 方式
|
||||
- 当前 MapLibre RN 公共 API 导出方式
|
||||
- `WeatherRuntime`
|
||||
- `RasterParticleLayer`
|
||||
- `WeatherColorLayer`
|
||||
- HostField submit API
|
||||
- RN Test Host 当前如何引用该 RN 模块
|
||||
- 是否存在 `file:`、workspace path、source path 等开发期依赖
|
||||
|
||||
必须明确:
|
||||
|
||||
**哪些路径只是开发期源码引用,正式 npm package 后必须消失。**
|
||||
|
||||
---
|
||||
|
||||
## 3.3 当前正式能力链路
|
||||
|
||||
只读确认当前已冻结链路:
|
||||
|
||||
```text
|
||||
React Native Host
|
||||
↓ metadataJson + local file:// binary payload
|
||||
RN bridge
|
||||
↓
|
||||
WeatherRuntime
|
||||
↓
|
||||
RasterArraySource::submitHostField()
|
||||
↓
|
||||
LocalParticleFieldFeed
|
||||
↓
|
||||
ParticleFieldDataAdapter
|
||||
↓
|
||||
ParticleFieldSnapshot
|
||||
↓
|
||||
Core Timeline / Runtime Field Window
|
||||
↓
|
||||
WeatherColorLayer + RasterParticleLayer
|
||||
```
|
||||
|
||||
不得因为发布工程化另建第二套入口。
|
||||
|
||||
---
|
||||
|
||||
# 4. 第二步:正式版本契约
|
||||
|
||||
调查确认基础版本无误后,建立正式版本契约。
|
||||
|
||||
## 4.1 正式版本
|
||||
|
||||
首个正式版本:
|
||||
|
||||
```text
|
||||
13.4.1-particle.1
|
||||
```
|
||||
|
||||
语义:
|
||||
|
||||
```text
|
||||
13.4.1
|
||||
= 上游 MapLibre Native 基础版本
|
||||
|
||||
particle
|
||||
= NavSea Particle 扩展发行线
|
||||
|
||||
1
|
||||
= 基于该 upstream version 的第 1 个 NavSea Particle 正式修订
|
||||
```
|
||||
|
||||
后续规则:
|
||||
|
||||
```text
|
||||
13.4.1-particle.2
|
||||
13.4.1-particle.3
|
||||
|
||||
13.5.0-particle.1
|
||||
|
||||
14.0.0-particle.1
|
||||
```
|
||||
|
||||
禁止以后恢复使用 `step061` 这种开发阶段编号作为正式发行版本。
|
||||
|
||||
---
|
||||
|
||||
## 4.2 npm package
|
||||
|
||||
正式 npm package:
|
||||
|
||||
```text
|
||||
@navsea/maplibre-particle-rn
|
||||
```
|
||||
|
||||
正式首发 version:
|
||||
|
||||
```text
|
||||
13.4.1-particle.1
|
||||
```
|
||||
|
||||
要求 package 名清楚表达:
|
||||
|
||||
- NavSea 维护
|
||||
- MapLibre
|
||||
- Particle
|
||||
- React Native
|
||||
|
||||
---
|
||||
|
||||
## 4.3 Android Maven artifact
|
||||
|
||||
正式 Android artifact:
|
||||
|
||||
```text
|
||||
cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1
|
||||
```
|
||||
|
||||
不得继续使用官方坐标作为 NavSea 正式发行坐标:
|
||||
|
||||
```text
|
||||
org.maplibre.gl:android-sdk-opengl
|
||||
```
|
||||
|
||||
注意:
|
||||
|
||||
Java/Kotlin package namespace 不要求因此重命名。
|
||||
|
||||
本任务重点是 Maven publication coordinate 与依赖契约,不允许进行大规模 Java/C++ namespace rename。
|
||||
|
||||
---
|
||||
|
||||
# 5. 第三步:建立 Release Manifest
|
||||
|
||||
在项目中建立稳定、机器可读的 release manifest。
|
||||
|
||||
路径由 Codex根据现有仓库结构选择,但建议类似:
|
||||
|
||||
```text
|
||||
release/maplibre-particle/release-manifest.json
|
||||
```
|
||||
|
||||
或:
|
||||
|
||||
```text
|
||||
release/maplibre-particle/13.4.1-particle.1.json
|
||||
```
|
||||
|
||||
至少包含:
|
||||
|
||||
```json
|
||||
{
|
||||
"release": "13.4.1-particle.1",
|
||||
"upstreamMapLibreNative": "13.4.1",
|
||||
"extensionLine": "particle",
|
||||
"extensionRevision": 1,
|
||||
"platform": {
|
||||
"android": {
|
||||
"renderer": "opengl"
|
||||
}
|
||||
},
|
||||
"reactNativePackage": {
|
||||
"name": "@navsea/maplibre-particle-rn",
|
||||
"version": "13.4.1-particle.1"
|
||||
},
|
||||
"nativeArtifact": {
|
||||
"group": "cc.navsea.maplibre",
|
||||
"artifact": "android-sdk-particle-opengl",
|
||||
"version": "13.4.1-particle.1"
|
||||
},
|
||||
"publication": {
|
||||
"npmRegistry": null,
|
||||
"mavenRepository": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
可以增加必要字段,例如:
|
||||
|
||||
- source commit
|
||||
- compatibility
|
||||
- canonical field schema
|
||||
- RN compatibility
|
||||
- minSdk / compileSdk(如果项目已有真实事实)
|
||||
- release state
|
||||
|
||||
但不得猜测未确认版本。
|
||||
|
||||
---
|
||||
|
||||
# 6. 第四步:正式 React Native package
|
||||
|
||||
目标:
|
||||
|
||||
```text
|
||||
@navsea/maplibre-particle-rn@13.4.1-particle.1
|
||||
```
|
||||
|
||||
必须成为 NavSea 未来唯一面对的 React Native MapLibre Particle 包入口。
|
||||
|
||||
---
|
||||
|
||||
## 6.1 设计原则
|
||||
|
||||
NavSea 未来目标使用方式:
|
||||
|
||||
```ts
|
||||
import {
|
||||
MapView,
|
||||
Camera,
|
||||
RasterParticleLayer,
|
||||
WeatherColorLayer,
|
||||
WeatherRuntime,
|
||||
} from '@navsea/maplibre-particle-rn';
|
||||
```
|
||||
|
||||
实际导出名称必须依据当前仓库真实 API。
|
||||
|
||||
不得为了示例强行重命名现有稳定 API。
|
||||
|
||||
---
|
||||
|
||||
## 6.2 不允许正式消费源码路径
|
||||
|
||||
正式 package 不得要求 Consumer:
|
||||
|
||||
```text
|
||||
file:../MapLibreParticleLab/...
|
||||
../../platform/react-native
|
||||
workspace 源码路径
|
||||
CMake source path
|
||||
MapLibre Native source tree
|
||||
本地源码软链接
|
||||
```
|
||||
|
||||
Consumer 只能依赖正式 npm package。
|
||||
|
||||
Android Native 应通过正式 artifact dependency 解决,而不是 Consumer 直接编译 MapLibre Native 源码。
|
||||
|
||||
---
|
||||
|
||||
## 6.3 包内部结构
|
||||
|
||||
根据当前 React Native package 实际结构做最小整理。
|
||||
|
||||
要求:
|
||||
|
||||
- `package.json` 名称正式改为 `@navsea/maplibre-particle-rn`
|
||||
- version = `13.4.1-particle.1`
|
||||
- 保留正确的 React Native autolinking
|
||||
- 保留当前稳定 JS/TS 公共 API
|
||||
- 保留 Native bridge
|
||||
- 内部 Android Gradle dependency 改为正式 artifact:
|
||||
- `cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1`
|
||||
- 不得同时再自动引入官方 `org.maplibre.gl:android-sdk-opengl` 导致双 Native AAR
|
||||
- 不得引入第二份 MapLibre RN native module
|
||||
|
||||
---
|
||||
|
||||
## 6.4 唯一 MapLibre RN 入口原则
|
||||
|
||||
需要重点审计:
|
||||
|
||||
Consumer 是否仍然需要同时安装:
|
||||
|
||||
```text
|
||||
@maplibre/maplibre-react-native
|
||||
```
|
||||
|
||||
如果当前 NavSea Particle RN package 本质上是对 MapLibre RN 的完整 fork/扩展,则正式目标应是:
|
||||
|
||||
```text
|
||||
Consumer
|
||||
↓
|
||||
@navsea/maplibre-particle-rn
|
||||
↓
|
||||
唯一 RN native module
|
||||
↓
|
||||
cc.navsea.maplibre:android-sdk-particle-opengl
|
||||
```
|
||||
|
||||
不应形成:
|
||||
|
||||
```text
|
||||
@maplibre/maplibre-react-native
|
||||
+
|
||||
@navsea/maplibre-particle-rn
|
||||
```
|
||||
|
||||
两套 Native MapLibre 同时进入 App。
|
||||
|
||||
如果仓库实际结构暂时无法做到唯一入口,必须在报告中明确说明,不得假装已经完成。
|
||||
|
||||
---
|
||||
|
||||
# 7. 第五步:发布包内容审计
|
||||
|
||||
必须能够执行:
|
||||
|
||||
```text
|
||||
npm pack
|
||||
```
|
||||
|
||||
生成类似:
|
||||
|
||||
```text
|
||||
navsea-maplibre-particle-rn-13.4.1-particle.1.tgz
|
||||
```
|
||||
|
||||
实际文件名以 npm 规则为准。
|
||||
|
||||
Codex 必须检查 tarball 内容。
|
||||
|
||||
至少确保:
|
||||
|
||||
必须包含:
|
||||
|
||||
- package.json
|
||||
- JS/TS build output 或正式 package 所需源码
|
||||
- type declarations
|
||||
- React Native native module 必需文件
|
||||
- android module 必需文件
|
||||
- README
|
||||
- LICENSE/NOTICE(依据仓库现有许可要求)
|
||||
- 必需 plugin/config 文件
|
||||
|
||||
不得包含:
|
||||
|
||||
- node_modules
|
||||
- `.git`
|
||||
- 大量 build cache
|
||||
- Android APK
|
||||
- 临时 log
|
||||
- Test Host
|
||||
- WeatherV2 测试数据
|
||||
- `.codex-build-logs`
|
||||
- unrelated docs
|
||||
- 任何 credential
|
||||
|
||||
---
|
||||
|
||||
# 8. 第六步:Android artifact publication 配置
|
||||
|
||||
把 Android Native publication 从开发阶段坐标整理成正式坐标。
|
||||
|
||||
目标:
|
||||
|
||||
```text
|
||||
groupId:
|
||||
cc.navsea.maplibre
|
||||
|
||||
artifactId:
|
||||
android-sdk-particle-opengl
|
||||
|
||||
version:
|
||||
13.4.1-particle.1
|
||||
```
|
||||
|
||||
必须保留:
|
||||
|
||||
```text
|
||||
renderer = opengl
|
||||
```
|
||||
|
||||
本阶段只准备 publication 配置。
|
||||
|
||||
Codex 不执行 AAR build 或 publish。
|
||||
|
||||
---
|
||||
|
||||
# 9. 第七步:建立独立 Consumer Test Host
|
||||
|
||||
新增一个真正用于验证“发布包消费”的最小 React Native Test Host。
|
||||
|
||||
名称建议:
|
||||
|
||||
```text
|
||||
MapLibreParticlePackageConsumerTestHost
|
||||
```
|
||||
|
||||
实际路径应遵守现有 integration 结构。
|
||||
|
||||
---
|
||||
|
||||
## 9.1 Consumer Test Host 的核心约束
|
||||
|
||||
它不得:
|
||||
|
||||
- 引用 MapLibreParticleLab RN 源码目录
|
||||
- 使用 workspace source dependency
|
||||
- 使用相对路径导入正式 RN package 源码
|
||||
- 直接引用 MapLibre Native source tree
|
||||
- 自己实现 WeatherRuntime bridge
|
||||
- 复制 Native bridge 源码
|
||||
|
||||
它只能通过安装后的:
|
||||
|
||||
```text
|
||||
@navsea/maplibre-particle-rn
|
||||
```
|
||||
|
||||
使用功能。
|
||||
|
||||
---
|
||||
|
||||
## 9.2 当前服务器未决定时的测试方式
|
||||
|
||||
由于最终 npm/Maven 服务器尚未决定,本阶段允许:
|
||||
|
||||
### npm
|
||||
|
||||
使用本地:
|
||||
|
||||
```text
|
||||
npm pack
|
||||
```
|
||||
|
||||
生成 `.tgz` 后安装:
|
||||
|
||||
```text
|
||||
npm install <package.tgz>
|
||||
```
|
||||
|
||||
这属于“发布包消费”,不是源码路径消费。
|
||||
|
||||
### Android Native artifact
|
||||
|
||||
本任务只准备正式 artifact publication。
|
||||
|
||||
后续由用户手工构建并放入 Maven Local 或临时 staging repository,再进行 Consumer APK 编译。
|
||||
|
||||
不得因为服务器未决定,就退回 source path。
|
||||
|
||||
---
|
||||
|
||||
## 9.3 Consumer Test Host 最低功能
|
||||
|
||||
先做最小 smoke host,不要求复制 STEP-062 全部复杂测试 UI。
|
||||
|
||||
最低要求:
|
||||
|
||||
- MapLibre MapView
|
||||
- GSI basemap
|
||||
- `WeatherColorLayer`
|
||||
- `RasterParticleLayer`
|
||||
- `WeatherRuntime`
|
||||
- 一个最小真实或 canonical fixture 提交入口
|
||||
- Runtime state 可见
|
||||
- Particle / WeatherColor 显示
|
||||
|
||||
如果已有可复用 STEP-062 Test Host 逻辑,可以复用业务层代码,但不得通过源码 dependency 复用 RN package。
|
||||
|
||||
---
|
||||
|
||||
# 10. 第八步:文档
|
||||
|
||||
所有文档中文。
|
||||
|
||||
至少新增或更新:
|
||||
|
||||
## 10.1 架构/发布设计
|
||||
|
||||
建议:
|
||||
|
||||
```text
|
||||
docs/30_设计/MapLibre粒子Android发布与ReactNative包设计_v1.md
|
||||
```
|
||||
|
||||
至少说明:
|
||||
|
||||
- upstream version
|
||||
- NavSea Particle version rule
|
||||
- npm package name
|
||||
- Maven coordinate
|
||||
- RN package 与 Native artifact 关系
|
||||
- 为什么 Consumer 不编译 MapLibre Native 源码
|
||||
- 为什么不能同时装官方 RN MapLibre 和 NavSea Particle RN
|
||||
- server registry 尚未决定
|
||||
- 本地 `.tgz` / staging 只是预发布验证手段
|
||||
- 后续 upstream upgrade 规则
|
||||
|
||||
---
|
||||
|
||||
## 10.2 STEP 记录
|
||||
|
||||
建议:
|
||||
|
||||
```text
|
||||
docs/50_Step记录/STEP-063_MapLibre粒子Android_v1发布工程化_v1.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10.3 Codex 完成报告
|
||||
|
||||
建议:
|
||||
|
||||
```text
|
||||
docs/报告/STEP-063_MapLibre粒子Android_v1发布工程化_Codex完成报告_v1.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10.4 CHANGELOG
|
||||
|
||||
为正式 package 建立中文 CHANGELOG 或遵循仓库现有发布记录结构。
|
||||
|
||||
至少记录:
|
||||
|
||||
```text
|
||||
13.4.1-particle.1
|
||||
|
||||
- 基于 MapLibre Native 13.4.1
|
||||
- Android OpenGL
|
||||
- WeatherColor
|
||||
- RasterParticle
|
||||
- HostField binary ingress
|
||||
- Timeline / Playback
|
||||
- React Native WeatherRuntime
|
||||
- STEP-061 Native/RN ingress 验证
|
||||
- STEP-062 GSI + WeatherV2 + Particle Android 综合验证
|
||||
```
|
||||
|
||||
不得把没有验证的能力写成已通过。
|
||||
|
||||
---
|
||||
|
||||
# 11. 静态验收
|
||||
|
||||
Codex 可执行且应执行:
|
||||
|
||||
- package JSON 校验
|
||||
- TypeScript typecheck
|
||||
- `npm pack`
|
||||
- tarball 内容列表审计
|
||||
- 检查正式 package 中不存在开发期 `file:` dependency
|
||||
- 检查正式 package 中不存在 MapLibre Native source path
|
||||
- 检查 Android Gradle dependency 指向正式 coordinate
|
||||
- 检查没有同时依赖正式 Particle AAR 与官方 MapLibre AAR
|
||||
- `git diff --check`
|
||||
- repository search 审计旧 `13.4.1-step061` 使用位置
|
||||
|
||||
注意:
|
||||
|
||||
历史文档中出现 `13.4.1-step061` 是合法的。
|
||||
|
||||
但正式 release/package/build config 不得继续把它作为当前发行依赖。
|
||||
|
||||
---
|
||||
|
||||
# 12. 用户手工 Android 验证入口
|
||||
|
||||
Codex 完成本任务后,必须给出准确的用户手工命令,但不得自行执行。
|
||||
|
||||
后续用户将手工完成两个阶段:
|
||||
|
||||
## 阶段 A:正式 AAR
|
||||
|
||||
构建:
|
||||
|
||||
```text
|
||||
cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1
|
||||
```
|
||||
|
||||
并验证 artifact 生成。
|
||||
|
||||
最终 publish server 尚未决定,因此可先由用户手工发布到 Maven Local 或指定 staging 目录用于验证。
|
||||
|
||||
---
|
||||
|
||||
## 阶段 B:Consumer Test Host APK
|
||||
|
||||
Consumer 只安装:
|
||||
|
||||
```text
|
||||
@navsea/maplibre-particle-rn@13.4.1-particle.1
|
||||
```
|
||||
|
||||
通过正式 artifact dependency 获取 Android Native。
|
||||
|
||||
然后用户手工:
|
||||
|
||||
- Android assembleDebug
|
||||
- 安装 APK
|
||||
- 实机 smoke
|
||||
- GSI
|
||||
- WeatherColor
|
||||
- Particle
|
||||
- Runtime READY
|
||||
|
||||
通过后才能正式创建 release tag。
|
||||
|
||||
---
|
||||
|
||||
# 13. Git Tag 规则
|
||||
|
||||
本任务暂时不得创建正式 release tag。
|
||||
|
||||
原因:
|
||||
|
||||
`13.4.1-particle.1` 必须先经过:
|
||||
|
||||
1. 正式 AAR 手工构建
|
||||
2. npm tarball package consumer 验证
|
||||
3. Consumer Test Host Android APK 实机验证
|
||||
|
||||
全部通过后,再单独执行最终 Release Freeze 任务创建 tag。
|
||||
|
||||
建议未来 tag:
|
||||
|
||||
```text
|
||||
maplibre-particle/android/13.4.1-particle.1
|
||||
```
|
||||
|
||||
实际 tag 命名在最终发布任务确认。
|
||||
|
||||
---
|
||||
|
||||
# 14. Git 收尾
|
||||
|
||||
本任务会修改项目文件,因此必须提交并 push 到:
|
||||
|
||||
```text
|
||||
origin/particle/main
|
||||
```
|
||||
|
||||
严格遵守项目 Git 规则。
|
||||
|
||||
不得:
|
||||
|
||||
```text
|
||||
git add .
|
||||
git add -A
|
||||
```
|
||||
|
||||
必须精确 add 本任务文件。
|
||||
|
||||
不得提交历史无关 untracked 文件。
|
||||
|
||||
完成后:
|
||||
|
||||
```text
|
||||
git fetch origin
|
||||
git rev-parse HEAD
|
||||
git rev-parse origin/particle/main
|
||||
git status --short
|
||||
```
|
||||
|
||||
必须确认:
|
||||
|
||||
```text
|
||||
HEAD == origin/particle/main
|
||||
```
|
||||
|
||||
如果 push 失败:
|
||||
|
||||
**不得声称任务完成。**
|
||||
|
||||
---
|
||||
|
||||
# 15. 任务完成状态
|
||||
|
||||
如果代码/package/publication 配置均完成,静态检查和 npm pack 均通过,但尚未执行用户手工 Android 构建:
|
||||
|
||||
状态写:
|
||||
|
||||
```text
|
||||
IMPLEMENTED / WAITING_MANUAL_RELEASE_VALIDATION
|
||||
```
|
||||
|
||||
不得提前写:
|
||||
|
||||
```text
|
||||
RELEASED
|
||||
CLOSED / PASS
|
||||
```
|
||||
|
||||
正式 `CLOSED / PASS` 等待后续用户手工 AAR + Consumer APK 验证。
|
||||
|
||||
---
|
||||
|
||||
# 16. Codex 最终报告必须包含
|
||||
|
||||
- 实际确认的 upstream MapLibre Native version
|
||||
- 当前 RN 基线
|
||||
- 正式版本号
|
||||
- npm package name
|
||||
- Maven coordinate
|
||||
- release manifest 路径
|
||||
- 正式 RN package 路径
|
||||
- Consumer Test Host 路径
|
||||
- `npm pack` 结果
|
||||
- tarball 文件名
|
||||
- tarball 内容审计结果
|
||||
- 是否仍存在正式配置中的 `step061`
|
||||
- 是否存在 `file:` 或 source-path consumer dependency
|
||||
- 是否修改 Native/Core 功能代码
|
||||
- 是否执行 Android Gradle
|
||||
- 是否构建 AAR
|
||||
- 是否执行 ADB
|
||||
- 是否执行 Jest
|
||||
- 用户下一步手工命令
|
||||
- commit hash
|
||||
- commit message
|
||||
- push result
|
||||
- remote branch
|
||||
- Final HEAD
|
||||
- 历史无关 untracked 项说明
|
||||
|
||||
Reference in New Issue
Block a user