71 lines
5.2 KiB
Markdown
71 lines
5.2 KiB
Markdown
# STEP-060C Maven Local 签名隔离修正 — Codex 完成报告
|
||
|
||
## 结论
|
||
|
||
STEP-060C 已为 `CLOSED / PASS`:用户于 2026-09-07 在 Gate C 封存 Linux 环境完成 Maven Local publication,Local 签名隔离按设计生效。本 PASS 仅覆盖 Maven Local signing isolation、发布与 artifact provenance;不代表 RN Test Host Android compile、STEP-060 Phase A/B、lifecycle、Binary Field 或 STEP-061 通过。
|
||
|
||
## 实际修改
|
||
|
||
- 保留 Vanniktech `signAllPublications()`,不移除 Maven Central 正式签名能力。
|
||
- 将 Gradle `SigningExtension.required` 改为延迟 task-graph 条件:任一 `*PublicationToMavenCentralRepository` task 存在时为 true;否则为 false。
|
||
- 因此 `:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal` 的 Sign task 在无 signatory 时跳过,Central publication 仍要求签名。
|
||
- 更新 Gate C/RN Test Host 人工步骤:当前已核对 AAR 可直接 publication,不因本次 publication 配置改动重建。
|
||
|
||
## 修改文件
|
||
|
||
- `platform/android/buildSrc/src/main/kotlin/maplibre.gradle-publish.gradle.kts`
|
||
- `docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md`
|
||
- `integration/react-native/MapLibreParticleRNTestHost/README.md`
|
||
- `docs/50_Step记录/STEP-060B_GateC封存环境与CustomAAR接入修正_v1.md`
|
||
- `docs/50_Step记录/STEP-060C_MavenLocal签名隔离修正_v1.md`
|
||
- `粒子开发记录.md`
|
||
|
||
## API / publication 契约
|
||
|
||
| 项目 | 保持的契约 |
|
||
| --- | --- |
|
||
| Maven Local 坐标 | `org.maplibre.gl:android-sdk-opengl:13.4.1` |
|
||
| Local task | `:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal` |
|
||
| Local 签名 | 无 signatory 时 Sign task 跳过;不使用 `-x sign` |
|
||
| Central 签名 | `*PublicationToMavenCentralRepository` task graph 中仍 required |
|
||
| AAR 来源 | Gate C 已验证的 custom OpenGL AAR;无 flatDir、files repo、第二仓库或 SNAPSHOT |
|
||
|
||
## 人工 Maven Local 验收(2026-09-07)
|
||
|
||
用户执行:
|
||
|
||
```bash
|
||
cd /mnt/sda1/MapLibreParticleLab/platform/android
|
||
./gradlew :MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal --console=plain
|
||
```
|
||
|
||
- 已完成:`:MapLibreAndroid:signOpenglreleasePublication SKIPPED`;`:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal` 通过;`BUILD SUCCESSFUL in 3m 33s`(57 actionable tasks:49 executed、8 up-to-date);输出不含 `no configured signatory`。
|
||
- 已完成:`~/.m2/repository/org/maplibre/gl/android-sdk-opengl/13.4.1/` 含 AAR、POM、module metadata;POM/module 坐标为 `org.maplibre.gl:android-sdk-opengl:13.4.1`。
|
||
- 已完成:Maven Local AAR 与 `platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-opengl-release.aar` SHA-256 同为 `2e73e25cfd31bb181f75ba2d84974afb949640f72de46bc0234d4579abe3ba38`。
|
||
- 已完成:AAR `classes.jar` 有 `org/maplibre/android/maps/MapLibreMap.class`、`org/maplibre/android/maps/WeatherRuntime.class`;AAR 有 `arm64-v8a`、`armeabi-v7a`、`x86`、`x86_64` 四 ABI;Maven Local 不含 `.asc`,符合 Local publication 不签名的设计。
|
||
- 历史说明:`47646fb708d096cf5ee0c3b8eeaeb7e6083081279c79f4a642db554efe88fad7` 为 publication 前中间 AAR SHA;Gradle 重新执行 `bundleOpenglReleaseAar` 后,它不是当前 published artifact。
|
||
|
||
## Codex 静态核验
|
||
|
||
- 静态读取 Vanniktech `gradle-maven-publish-plugin:0.34.0`:`signAllPublications()` 对 release 设置 `SigningExtension.required`;Gradle SigningExtension 的 `setRequired(Object)` 支持 deferred Provider,并在 Sign task 执行时解析。
|
||
- 静态审计 publication 名称、artifactId、version 与 Central task 名称约束。
|
||
- 只读核对 Local/build output AAR SHA、POM/module 坐标、classes、ABI 与 `.asc` 缺失;`git diff --check` 将在本次 docs-only commit 前再次执行。
|
||
|
||
## 未执行 / 无法验证
|
||
|
||
- 未执行:本轮 Codex 未运行 Android Gradle、AAR build、Maven publish、Expo prebuild、APK、ADB、Android 设备/虚拟机测试或 Jest;publication 结果为用户提供的人工实测证据。
|
||
- 未完成:RN Test Host `npm ci`、clean Expo prebuild、generated Gradle resolution、Android compile/install、STEP-060 Phase A/B、style reload/map remount/stale reactTag/detach lifecycle;任务明确留给下一轮 STEP-060 Android 人工验收。
|
||
- 无法验证:本轮没有设备/模拟器与 RN 生成工程执行授权,故不对上述 Android/RN 结果作 PASS 推断。
|
||
|
||
## 已知剩余风险与下一步
|
||
|
||
下一阶段仍是 STEP-060 RN Test Host Android 验收:`npm ci`、clean Expo prebuild、检查 generated Gradle 的 Maven Local/custom SDK resolution、用户手工 Android compile/install、Phase A/B 与 lifecycle 验收。通过后才可进入 STEP-061。
|
||
|
||
## 提交与推送
|
||
|
||
- 功能提交:`5f0804e8ba3a8a6fed1fff09ddd92a76a77bd458` — `fix: isolate Maven Local from release signing`
|
||
- 初始文档提交:`9e0666c7c284d5080ebd2e711f46928f788ddcec` — `docs: record STEP-060C local publish signing fix`
|
||
- 本次人工验收文档收尾 Starting HEAD:`9e0666c7c284d5080ebd2e711f46928f788ddcec`。
|
||
- 本次 docs-only 内容提交:`9a38271ceecfc33d581d7604ddb16839d270961e` — `docs: close STEP-060C Maven Local validation`。
|
||
- 该提交仅回填人工验收证据与后续验收边界;最终推送后的 Final HEAD、Remote HEAD 与 push 结果由本次任务交付时的 Git 实测结果确认。
|