Files
MapLibreParticleLab/docs/报告/STEP-060A_RNTestHost编译前修正_Codex完成报告_v1.md
OpenAI Codex 80f360be78
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: finalize STEP-060A report metadata
2026-09-07 18:12:19 +08:00

43 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STEP-060A RN Test Host 编译前修正 — Codex 完成报告
状态:`READY_ANDROID_VALIDATION`
## 实际修正
1. RN `0.85.2` 当前安装的 `node_modules/@react-native/codegen/lib/generators/modules/GenerateModuleJavaSpec.js` 第 36 行生成 `public abstract class`,第 526 与 536 行为必选方法生成 `@ReactMethod` 与 `abstract`。Promise 返回在同一模板中追加 `Promise promise`。这证明 STEP-060 的 Kotlin implementation 必须 override Spec 方法。
2. `WeatherRuntimeBridgeModule.kt` 已为 attach、detach、getState、enabled/visible/target FPS、forecast、playback/speed、stops、particle/trail colors 及全部 visual controls 共 20 个 JS Spec 方法补齐 `override`。逐项脚本比较 `NativeWeatherRuntimeBridge.ts` 的 20 个方法与 Kotlin `override fun`,没有缺失。View attach listener 的两个 override 是 Android 回调,不是 Spec 方法。
3. 未发现除 override 外的 Codegen signature mismatch;number→`Double`、boolean→`Boolean`、string enum→`String`、ColorStop list→`ReadableArray` 和 Promise 末参均保持现有最小实现,没有重构 bridge。
4. Test Host 统一使用 npm,`packageManager` 为 `npm@10.9.4`,锁文件是现有 `package-lock.json`(lockfile v3);没有 yarn.lock。
5. 实际 `npm ci --ignore-scripts --no-audit --no-fund` 通过,未需要 `--legacy-peer-deps`。当前环境 npm 为 11.19.0;`packageManager` 声明保留任务指定的 npm 10.9.4 目标,人工验收以 `npm ci` 使用 lock。
6. package/config 明确控制 package 版本、`app.json` 的 New Architecture 请求、MLRN native `13.4.1/opengl` root extras 与 Maven Local 防 fallback。AGP、Gradle、Kotlin、SDK、NDK、Hermes 和最终 New Architecture 生成值仍待首次 prebuild 后实际检查;文档不再把它们表述为已验证冻结。
7. STEP-060 ownership/lifecycle 未改:每次 command 仍通过 Fabric UIManager 定位 concrete MLRNMapView,再到 MapLibreMap 的 map-owned WeatherRuntime。未新增 Adapter、Normalizer、global/current map 或第二 registry。
8. 未实现 Binary Field,未加入 number[]/JSON/base64 field、JSI、NavSea、iOS、Core renderer/timeline 改动。
## 文件
- `integration/react-native/MapLibreParticleRNTestHost/modules/weather-runtime-bridge/android/src/main/java/org/maplibre/particle/rntesthost/weather/WeatherRuntimeBridgeModule.kt`
- `integration/react-native/MapLibreParticleRNTestHost/package.json`
- `integration/react-native/MapLibreParticleRNTestHost/README.md`
- `docs/50_Step记录/STEP-060A_RNTestHost编译前修正_v1.md`
- `docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md`
- `docs/报告/STEP-060_RNTestHost与WeatherRuntime薄桥接_Codex完成报告_v1.md`
- `粒子开发记录.md` 与本报告。
## 实际验证
- `npm install --package-lock-only --ignore-scripts --no-audit --no-fund`:PASS。
- `npm ci --ignore-scripts --no-audit --no-fund`:PASS(530 packages);不需 legacy peer deps。
- throttle 下 `npx tsc --noEmit`:PASS。
- RN Codegen generator 语义、20 个 JS Spec 与 Kotlin override 一一检查、`node --check`、package/lock 检查、yarn 残留搜索、`git diff --check`:PASS。
## 未执行与人工验收
未执行 Android Gradle、custom AAR publish、Expo prebuild、APK/AAB、ADB、安装、App launch、模拟器/真机、Jest。用户下一步按更新后的 STEP-060 人工验收说明:先记录 HEAD、清除旧 Maven Local 同版本 artifact、publish 当前 custom SDK、`npm ci`、Expo prebuild、核对实际工具链/Hermes/New Architecture 与 custom resolution,再进行 Phase A/B、style reload 和 remount 验收。
## Git
- Starting HEAD:`6a99f1a1424ce7e30c26e825251df956a46bf4c4`
- 功能 commit:`51b58024323aeb47103ccc08e50a53ac0ab75d43`(`fix: correct RN WeatherRuntime codegen bridge`)
- 文档 commit:`7c771709e012d3525aa07b766d36fedde12aed7c`(`docs: record STEP-060A prebuild fixes`)
- Final HEAD / Remote HEAD / push:由本报告元数据收尾 commit 与 push 后交付消息给出。