diff --git a/docs/40_任务/STEP-072B_V3-08_RN_Kotlin_ReadableMap编译修复_Codex任务_v1.md b/docs/40_任务/STEP-072B_V3-08_RN_Kotlin_ReadableMap编译修复_Codex任务_v1.md new file mode 100644 index 000000000..15ca1edd6 --- /dev/null +++ b/docs/40_任务/STEP-072B_V3-08_RN_Kotlin_ReadableMap编译修复_Codex任务_v1.md @@ -0,0 +1,32 @@ +# STEP-072B V3-08 RN Kotlin ReadableMap 编译修复 Codex 任务 v1 + +## 背景 +V3-08 Win11 正式 npm 消费链已验证到 Android Kotlin 编译阶段。`@navsea/maplibre-particle-rn@13.4.1-particle.3` 的 `WeatherRuntimeBridgeModule.kt` 在 `setWeatherColorStops()` 中使用 `ReadableMap`,但源码 import 区缺少 `com.facebook.react.bridge.ReadableMap`。 + +Win11 错误: +- `Unresolved reference 'ReadableMap'` +- 后续多个 `getDouble` unresolved 均为级联错误。 + +## 唯一允许的代码修改 +仅修改: +`packages/maplibre-particle-rn/android/src/main/java/org/navsea/maplibre/particle/weather/WeatherRuntimeBridgeModule.kt` + +在 React Native bridge import 区加入: +`import com.facebook.react.bridge.ReadableMap` + +除此之外不得修改任何生产代码、接口、行为或格式。 +## 禁止项 +- 不得运行 Android Gradle、APK/AAR build、ADB、Jest。 +- 不得修改版本号、Maven 坐标、npm package metadata、TurboModule spec、README、CHANGELOG 或 release manifest。 +- 不得修改 Win11 临时 worktree。 +- 不得执行 Git add/commit/push/reset/clean。 +- 不得触碰 STEP-062 dirty 文件和任何无关 untracked/build 目录。 + +## Codex 完成要求 +1. 读取目标 Kotlin 文件并确认缺失 import。 +2. 只增加 `ReadableMap` import。 +3. 输出 `git diff -- <目标文件>` 供人工审计。 +4. 不执行任何编译或测试。 + +## 后续由 ChatGPT 执行 +ChatGPT 将直接完成 Linux 静态检查、重新 npm pack/publish、Win11 dependency/build 验证、文档与 Git 收尾。 diff --git a/docs/50_Step记录/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_v1.md b/docs/50_Step记录/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_v1.md index f2f91504e..1de803265 100644 --- a/docs/50_Step记录/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_v1.md +++ b/docs/50_Step记录/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_v1.md @@ -41,3 +41,17 @@ ## Git 实现基线 - implementation/preparation commit:`11cf58d344e64e6aff77deceb2c34c8eda045f1b`(`chore: prepare V3-08 android validation`)。 - 已成功 push 到 `origin/particle/main`;push 后实现基线 HEAD 与远端一致。 + +## 2026-09-11 V3-08 最终关闭 + +状态:**CLOSED / PASS**。 + +Win11/CARBON7i 使用 Gradle 8.14.3、AGP 8.12.0、Kotlin 2.1.20、JDK 17.0.18、NDK 27.1.12297006、compileSdk/targetSdk 36、minSdk 24 完成正式 npm 消费链与 Debug APK 构建。dependencyInsight 最终解析到 `cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.2`。 + +实体机 `192.168.1.146` 上五组数据均满足 T0=`ACCEPTED_PENDING_INITIAL_WINDOW`、T1=`INITIAL_WINDOW_READY`、最终 Runtime=`READY`:Wind real、Rain scalar-only、Wave real、Tide/Current、Wave synthetic independence。 + +控制面 PLAY/PAUSE、HALF/NORMAL/DOUBLE、FPS AUTO/30/60、seek T0/T1、Weather/Particle 独立显隐、Field stops、Particle color、Trail color、Apply visual 均返回 `ACCEPTED`;最终 FATAL/JNI/UnsatisfiedLinkError 扫描为空。 + +测试期间发现 fixture 位于 Metro project root 外,临时 Win11 `D:\V308` 验收 worktree 通过 `watchFolders` 纳入 `integration/react-native/particle-v3-fields` 后 bundle 成功。该临时 Metro 修改不进入正式仓库,不属于 Native/RN Runtime 缺陷。 + +最终产物:Native `.2` AAR SHA-256 `f890f834692d3cacb8a281b2d0f82cf4a7f8ba7756132092be800505b961e9a2`;RN `.3` tgz SHA-256 `16e5dab86aac9832f7a48d8c35dd9821f80f52e7e53ff4e0e6c98724781eda3a`;APK SHA-256 `49824062CAB72771282294114B5A818D2067F9B786B8697D2D2A983BF0B743E2`。 diff --git a/docs/60_测试/STEP-072_V3-08_Android单次综合验收_v1.md b/docs/60_测试/STEP-072_V3-08_Android单次综合验收_v1.md index 9c0a19e12..a777842ef 100644 --- a/docs/60_测试/STEP-072_V3-08_Android单次综合验收_v1.md +++ b/docs/60_测试/STEP-072_V3-08_Android单次综合验收_v1.md @@ -106,3 +106,17 @@ adb -s 192.168.1.146 logcat -v time | Select-String -Pattern 'submitField|INITIA ``` 记录每组的 T0/T1/READY 证据、控制项结果、AAR SHA 比对、`javap` 输出摘要及 logcat。仅当五组均符合要求且无 fatal bridge/JNI 错误时,才可由用户决定更新 Android 验收状态;本文件本身不代表已执行或通过。 + +## 2026-09-11 V3-08 最终关闭 + +状态:**CLOSED / PASS**。 + +Win11/CARBON7i 使用 Gradle 8.14.3、AGP 8.12.0、Kotlin 2.1.20、JDK 17.0.18、NDK 27.1.12297006、compileSdk/targetSdk 36、minSdk 24 完成正式 npm 消费链与 Debug APK 构建。dependencyInsight 最终解析到 `cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.2`。 + +实体机 `192.168.1.146` 上五组数据均满足 T0=`ACCEPTED_PENDING_INITIAL_WINDOW`、T1=`INITIAL_WINDOW_READY`、最终 Runtime=`READY`:Wind real、Rain scalar-only、Wave real、Tide/Current、Wave synthetic independence。 + +控制面 PLAY/PAUSE、HALF/NORMAL/DOUBLE、FPS AUTO/30/60、seek T0/T1、Weather/Particle 独立显隐、Field stops、Particle color、Trail color、Apply visual 均返回 `ACCEPTED`;最终 FATAL/JNI/UnsatisfiedLinkError 扫描为空。 + +测试期间发现 fixture 位于 Metro project root 外,临时 Win11 `D:\V308` 验收 worktree 通过 `watchFolders` 纳入 `integration/react-native/particle-v3-fields` 后 bundle 成功。该临时 Metro 修改不进入正式仓库,不属于 Native/RN Runtime 缺陷。 + +最终产物:Native `.2` AAR SHA-256 `f890f834692d3cacb8a281b2d0f82cf4a7f8ba7756132092be800505b961e9a2`;RN `.3` tgz SHA-256 `16e5dab86aac9832f7a48d8c35dd9821f80f52e7e53ff4e0e6c98724781eda3a`;APK SHA-256 `49824062CAB72771282294114B5A818D2067F9B786B8697D2D2A983BF0B743E2`。 diff --git a/docs/报告/STEP-072B_V3-08_RN_Kotlin_ReadableMap编译修复_Codex完成报告_v1.md b/docs/报告/STEP-072B_V3-08_RN_Kotlin_ReadableMap编译修复_Codex完成报告_v1.md new file mode 100644 index 000000000..ff252d1ef --- /dev/null +++ b/docs/报告/STEP-072B_V3-08_RN_Kotlin_ReadableMap编译修复_Codex完成报告_v1.md @@ -0,0 +1,17 @@ +# STEP-072B V3-08 RN Kotlin ReadableMap 编译修复 Codex 完成报告 v1 + +## 结论 + +**PASS / CLOSED**。 + +Codex 严格按任务边界,仅在 `WeatherRuntimeBridgeModule.kt` 增加 `com.facebook.react.bridge.ReadableMap` import,未修改 API、ABI、TurboModule spec、Maven 坐标或业务逻辑。 + +## 验证结果 + +Linux hard gate 全部通过:fixture validator、package TypeScript、RN Test Host typecheck、TurboModule codegen、`git diff --check`。 + +重新发布的 `@navsea/maplibre-particle-rn@13.4.1-particle.3` 公网 tarball SHA-256 为 `16e5dab86aac9832f7a48d8c35dd9821f80f52e7e53ff4e0e6c98724781eda3a`。 + +Win11 正式 npm 消费链编译通过:`:navsea_maplibre-particle-rn:compileDebugKotlin` PASS,`:app:assembleDebug` PASS,`BUILD SUCCESSFUL in 6m 20s`。APK SHA-256 为 `49824062CAB72771282294114B5A818D2067F9B786B8697D2D2A983BF0B743E2`。 + +实体机五组 V3 数据与 Runtime/控制面最终验收全部通过,STEP-072/V3-08 可关闭。 diff --git a/docs/报告/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_Codex完成报告_v1.md b/docs/报告/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_Codex完成报告_v1.md index a5467024d..6fae3a1c8 100644 --- a/docs/报告/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_Codex完成报告_v1.md +++ b/docs/报告/STEP-072_V3-08_Android_Native_v2与单次综合验收准备_Codex完成报告_v1.md @@ -38,4 +38,18 @@ Test Host 同时存在两套 `WeatherRuntimeBridge` 的问题已消除。Expo au - 本报告 Git 元数据回填将作为 docs-only closeout 提交;该提交后的仓库 Final HEAD 由最终验证结果记录,不伪造自引用 hash。 ## 下一步 -仅由用户执行 V3-08 单次 Android 综合验收。验收通过前 release manifest 保持 `awaiting_android_manual_build_publish_acceptance` / Android `not_run`,不得把 `.3` 标记 released 或创建 release tag。 \ No newline at end of file +仅由用户执行 V3-08 单次 Android 综合验收。验收通过前 release manifest 保持 `awaiting_android_manual_build_publish_acceptance` / Android `not_run`,不得把 `.3` 标记 released 或创建 release tag。 + +## 2026-09-11 V3-08 最终关闭 + +状态:**CLOSED / PASS**。 + +Win11/CARBON7i 使用 Gradle 8.14.3、AGP 8.12.0、Kotlin 2.1.20、JDK 17.0.18、NDK 27.1.12297006、compileSdk/targetSdk 36、minSdk 24 完成正式 npm 消费链与 Debug APK 构建。dependencyInsight 最终解析到 `cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.2`。 + +实体机 `192.168.1.146` 上五组数据均满足 T0=`ACCEPTED_PENDING_INITIAL_WINDOW`、T1=`INITIAL_WINDOW_READY`、最终 Runtime=`READY`:Wind real、Rain scalar-only、Wave real、Tide/Current、Wave synthetic independence。 + +控制面 PLAY/PAUSE、HALF/NORMAL/DOUBLE、FPS AUTO/30/60、seek T0/T1、Weather/Particle 独立显隐、Field stops、Particle color、Trail color、Apply visual 均返回 `ACCEPTED`;最终 FATAL/JNI/UnsatisfiedLinkError 扫描为空。 + +测试期间发现 fixture 位于 Metro project root 外,临时 Win11 `D:\V308` 验收 worktree 通过 `watchFolders` 纳入 `integration/react-native/particle-v3-fields` 后 bundle 成功。该临时 Metro 修改不进入正式仓库,不属于 Native/RN Runtime 缺陷。 + +最终产物:Native `.2` AAR SHA-256 `f890f834692d3cacb8a281b2d0f82cf4a7f8ba7756132092be800505b961e9a2`;RN `.3` tgz SHA-256 `16e5dab86aac9832f7a48d8c35dd9821f80f52e7e53ff4e0e6c98724781eda3a`;APK SHA-256 `49824062CAB72771282294114B5A818D2067F9B786B8697D2D2A983BF0B743E2`。 diff --git a/packages/maplibre-particle-rn/android/src/main/java/org/navsea/maplibre/particle/weather/WeatherRuntimeBridgeModule.kt b/packages/maplibre-particle-rn/android/src/main/java/org/navsea/maplibre/particle/weather/WeatherRuntimeBridgeModule.kt index 586b877b0..b48aa9606 100644 --- a/packages/maplibre-particle-rn/android/src/main/java/org/navsea/maplibre/particle/weather/WeatherRuntimeBridgeModule.kt +++ b/packages/maplibre-particle-rn/android/src/main/java/org/navsea/maplibre/particle/weather/WeatherRuntimeBridgeModule.kt @@ -8,6 +8,7 @@ import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.turbomodule.core.interfaces.TurboModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.ReadableArray +import com.facebook.react.bridge.ReadableMap import com.facebook.react.uimanager.IllegalViewOperationException import com.facebook.react.uimanager.UIManagerHelper import com.facebook.react.uimanager.common.UIManagerType diff --git a/release/maplibre-particle/release-manifest.json b/release/maplibre-particle/release-manifest.json index 93a5ffea7..4b4c1357c 100644 --- a/release/maplibre-particle/release-manifest.json +++ b/release/maplibre-particle/release-manifest.json @@ -1,6 +1,6 @@ { "release": "13.4.1-particle.3", - "releaseState": "awaiting_android_manual_build_publish_acceptance", + "releaseState": "android_device_acceptance_pass", "upstreamMapLibreNative": "13.4.1", "upstreamCoreCommit": "18545ca10d296704b2cba675b182ff2c8da24588", "extensionLine": "particle", @@ -19,7 +19,7 @@ "group": "cc.navsea.maplibre", "artifact": "android-sdk-particle-opengl", "version": "13.4.1-particle.2", - "state": "awaiting_manual_build_publish_acceptance" + "state": "published_validated" }, "releaseRelationship": "13.4.1-particle.3 的 v2 multi-plane RN/TS API 目标为新的 Native artifact 13.4.1-particle.2;不得复用、覆盖或宣称发布旧 13.4.1-particle.1。", "canonicalField": { @@ -30,14 +30,61 @@ }, "validation": { "android": { - "status": "not_run", + "status": "pass", "required": [ "Native .2 Release OpenGL AAR build and Maven Local publish", "AAR SHA consistency check", "javap WeatherRuntime v2 API check", "Test Host clean prebuild/build/install/start", "five field datasets and Runtime READY acceptance" - ] + ], + "validatedBuildEnvironment": { + "gradle": "8.14.3", + "agp": "8.12.0", + "kotlin": "2.1.20", + "jdk": "17.0.18", + "ndk": "27.1.12297006", + "compileSdk": 36, + "targetSdk": 36, + "minSdk": 24 + }, + "buildResult": { + "status": "pass", + "task": ":app:assembleDebug", + "duration": "6m20s", + "apkSha256": "49824062CAB72771282294114B5A818D2067F9B786B8697D2D2A983BF0B743E2", + "apkSizeBytes": 185729464 + }, + "deviceAcceptance": { + "status": "pass", + "validatedAt": "2026-09-11", + "device": "192.168.1.146", + "package": "org.maplibre.particle.rntesthost", + "datasets": [ + "wind-real", + "rain-decoder-fixture", + "wave-real", + "tide-real", + "wave-synthetic-independence" + ], + "runtimeGate": { + "T0": "ACCEPTED_PENDING_INITIAL_WINDOW", + "T1": "INITIAL_WINDOW_READY", + "final": "READY" + }, + "controls": [ + "PLAY/PAUSE", + "HALF/NORMAL/DOUBLE", + "FPS AUTO/30/60", + "seek T0/T1", + "Field/Particle visibility", + "Field stops", + "Particle color", + "Trail color", + "Apply visual" + ], + "fatalScan": "pass" + } }, "previousBaseline": { "reactNativePackage": "13.4.1-particle.2", @@ -65,10 +112,21 @@ }, "publication": { "nativeArtifact": { - "status": "not_published", - "aarSha256": null, - "publishedAt": null + "status": "published", + "aarSha256": "f890f834692d3cacb8a281b2d0f82cf4a7f8ba7756132092be800505b961e9a2", + "aarSizeBytes": 166519805, + "publishedAt": "2026-09-11", + "publicHttpStatus": 200, + "publicBytesVerified": true }, - "releaseTag": null + "releaseTag": null, + "reactNativePackage": { + "status": "published", + "tarball": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.3.tgz", + "sha256": "16e5dab86aac9832f7a48d8c35dd9821f80f52e7e53ff4e0e6c98724781eda3a", + "sizeBytes": 12849, + "publicHttpStatus": 200, + "publicBytesVerified": true + } } } diff --git a/粒子开发记录.md b/粒子开发记录.md index 988a07d92..f13c5e566 100644 --- a/粒子开发记录.md +++ b/粒子开发记录.md @@ -681,3 +681,7 @@ WeatherColorLayer 的 `ParticleGpuValidationUBO` designated initializer 补齐 ` - 已冻结 V3-08 单次 Android 验收流程:Linux 构建/发布 Native `.2` → SHA/API 检查 → Win11 Maven Local handoff → clean prebuild/dependencyInsight/一次 APK build → Metro 8091 → 固定设备 `192.168.1.146` → Wind/Rain/Wave/Tide/synthetic Wave 五组综合验收。Android Gradle/AAR/APK/ADB/Jest 均未执行,状态 `IMPLEMENTED / WAITING_ANDROID_VALIDATION`。 - STEP-072 implementation/preparation `11cf58d344e64e6aff77deceb2c34c8eda045f1b`(`chore: prepare V3-08 android validation`)已成功 push 到 `origin/particle/main`;push 后实现基线 HEAD 与远端一致。 + +### 2026-09-11 STEP-072 / V3-08 CLOSED / PASS + +Android V3-08 单次综合验收已完成并关闭。Native `13.4.1-particle.2` 已发布并验证;RN `13.4.1-particle.3` 通过正式 npm tarball + 远程 Maven 消费链。Win11 Gradle 8.14.3 / AGP 8.12.0 / Kotlin 2.1.20 构建 PASS。实体机 `192.168.1.146` 五组 Wind/Rain/Wave/Tide/Wave synthetic 均通过 T0/T1/READY 门槛,播放、速度、FPS、seek、独立显隐和视觉 API 均 ACCEPTED,fatal/JNI 扫描为空。