3.3 KiB
3.3 KiB
STEP-060E CoreOnly Layer 存在性检查修复 — Codex 完成报告
结论
状态:IMPLEMENTED / WAITING_CODE_REVIEW。本轮完成 Android Host 到 JNI/Core 的 Style 存在性窄查询,修复 RN bridge 对 CoreOnly weather layer 的假阴性;STEP-060 未 CLOSED,未进入 STEP-061。
实际完成内容
- 根因:RasterParticleLayer 与 WeatherColorLayer 是 CoreOnly layer,Core 可正常渲染,但 Style.getLayer() 需要 Java peer,故会错误返回 null。
- 新增公开 MapLibreMap.hasStyleSource(String)、hasStyleLayer(String);实现穿过 NativeMap/NativeMapView 和 JNI,C++ 直接以 map->getStyle().getSource(id) 与 getLayer(id) 判断。
- WeatherRuntimeBridge.attach() 在 style fully loaded 后,使用三个独立 Core 查询检查 rn-weather-fields、rn-weather-color、rn-weather-particles;没有改变 attach 成功路径、replaceWeatherRuntime()、snapshot 或 View detach listener。
- WEATHER_OBJECTS_NOT_READY 保留固定错误码和三个独立 present/missing 字段,新增 styleUri(JSON style 为空时 ),移除 style.getLayers()/getSources() 的 Java peer 枚举。
- Maven 临时版本同步为 13.4.1-step060e。
修改文件
- platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/{NativeMap.java,NativeMapView.java,MapLibreMap.java}
- platform/android/MapLibreAndroid/src/cpp/{native_map_view.hpp,native_map_view.cpp}
- integration/react-native/MapLibreParticleRNTestHost/modules/weather-runtime-bridge/android/src/main/java/org/maplibre/particle/rntesthost/weather/WeatherRuntimeBridgeModule.kt
- platform/android/VERSION、bridge android/build.gradle、plugins/withParticleNativeAndroid.js、Test Host README、本 Step 记录、本文档及 粒子开发记录.md。
验证
- ./gradlew :MapLibreAndroid:tasks --all --console=plain:PASS。
- ./gradlew :MapLibreAndroid:compileOpenglReleaseJavaWithJavac --console=plain:PASS。
- cmake --build platform/android/MapLibreAndroid/.cxx/RelWithDebInfo/243u115z/x86_64 --target maplibre -- -j2:PASS(JNI/OpenGL x86_64 等价精确 CMake/Ninja target,不打包 AAR)。
- 静态检查:JNI Java 声明、C++ 声明/实现/注册名称一致;Bridge 不再调用 Style.getLayer()、Style.getLayers()、Style.getSource() 或 Style.getSources() 作为 weather object 真值。
- git diff --check:PASS。
所有可能产生大量输出的 Gradle 编译均通过 build-output-throttle 执行;未执行 Jest。
未执行与风险
- AAR_BUILD_NOT_EXECUTED_BY_CODEX。
- 未执行 Maven Local publication、Android APK build/install、ADB、设备或模拟器验证。
- 本地 Expo 生成工程先前缺少 NativeWeatherRuntimeBridgeSpec;未为本轮新增大型 codegen 或 mocking 方案。后续人工构建新 AAR 并在 Win11 更新 Maven Local 后,仍需执行两条 dependencyInsight、APK build 与 attach/runtime 人工验收。
- 运行期新 JNI 方法的真值行为需要上述 Android 人工验收;本轮未改变 CoreOnly 注册或 WeatherRuntime 控制状态机。
Git
- source baseline:2d2375cd532468821c6e3c158ee1a275f4522044
- 功能 commit / Final HEAD / push 结果:将在本次受限验证、提交并推送后回填。
- remote branch:origin/particle/main
- 预期 Maven 坐标:org.maplibre.gl:android-sdk-opengl:13.4.1-step060e