Files
MapLibreParticleLab/docs/报告/STEP-104_官方Native13.6.1升级阶段A_Codex完成报告_v1.md
tei 30d0e6665e
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs(upgrade): record android 13.6.1 native OpenGL compile PASS
2026-10-09 10:31:21 +09:00

5.7 KiB
Raw Permalink Blame History

STEP-104 官方 Native 13.6.1 升级阶段 A — Codex 完成报告 v1

1. 执行结论

PARTIAL:官方 Native 13.6.1 + Particle .21 源码移植已完成三方合并,Android x86_64 OpenGL Native 编译链接 PASS;其他 ABI、GPU 视觉/行为、RN 与 iOS 未验收。 不是正式发布结论。

2. 执行模型与人员分工

  • Codex:gpt-6.1-sol,high,真实会话 turn_context 已由 RDC 独立核对。
  • Codex 负责源码冲突、接口调整和静态核对;RDC 负责 Git 真实合并/index/commit、submodule 和 Native 构建;未切换其他模型。
  • 所有操作在隔离工作树 /Users/tei/dev/MapLibreParticleLab-upgrade-android-1361,branch upgrade/android-native-13.6.1-20261009;未修改 NavSea、正式 .21、Integration 合同或 iOS 专用行为。

3. Git 基线与多个提交

  • 官方新底座:Android Native 13.6.1,c7506d6aff3800e946f89e1a51432fc22d1a6534。
  • 旧自研扩展:发布 .21 630ec657687bad4200c059bbccbb950d9c6f7ce9,完整历史及审计闭环 b433775348373b10fba02dc0e1f728bacd72f9e7。
  • e4c7af7c401aebc0fdb9d85309ad781e328baff4:升级任务与根目录 recoder_step.md 的启动检查点。
  • f8378fd7113c4d230500f0b82902d2356907f4a9:两父三方合并,将自研 Particle 与 RenderSegment 移植至官方 13.6.1(提交时未编译)。
  • a4b5f4eaa0eccb734e00d67adb5e750bba320404:补充真实合并进度与风险记录。
  • 本报告对应的构建发生在 a4b5f4eaa0 上。本文及后续 Gate 记录另作独立收尾 commit,不修改已验证的 Native 产品代码;最终 HEAD 和远端结果以实际 Git 命令回填。

4. 主要源码调整

  • 自研 Field、Ingress、QBIN、WeatherColor、RasterParticle 代码迁移到官方 include/mln、src/mln 路径,不恢复旧 mbgl 产品目录。
  • 合并官方与 .21 的 Source/Layer Factory、Shader manifest 与 OpenGL 建置注册,保留官方 CustomMVTVector 和现有 RasterArray。
  • 适配 RenderLayer 新 PaintParameters 参数和 renderableSize,同步保留 RenderSegment/Retained、fast-path、revision、source-scoped fail-closed、observer 与资源清理。
  • Android JNI 自研入口及官方 Feature State 入口的静态声明/注册核对,未重新定义 RN 公共 API。

5. 冲突与格式检查

  • git merge --no-ff --no-commit 初始 76 个未合并路径;Codex 清除冲突标记,RDC 确认 git ls-files -u 为 0 后完成合并提交。
  • 新版 Native 源码范围的 git diff --check PASS。整体 merge 中有 3 份历史文档保留自旧版的尾随空格,逐字节确认来自 .21 源提交,未篡改历史文档。
  • 源码状态以本次 Git branch 和原生编译证据为准,静态检查不替代行为验收。

6. Native 构建记录

  • 环境:Mac,Homebrew OpenJDK 17,Android SDK/NDK 28.2.13676358,SDK CMake 3.31.6;ABI=x86_64,Renderer=OpenGL,BuildType=Debug。
  • 标准命令(platform/android;先 export JAVA_HOME/ANDROID_HOME/ANDROID_SDK_ROOT):
./gradlew --no-daemon --max-workers=3 --console=plain -Pmaplibre.abis=x86_64 :MapLibreAndroid:externalNativeBuildOpenglDebug
  • 首轮:CMake 因缺少 vendor/maplibre-native-base/deps/cheap-ruler-cpp/include 失败(新 worktree submodule 未初始化)。
  • 第二轮:CMake 因 maplibre-tile-spec/cpp/vendor/earcut/CMakeLists.txt 和 mbgl-vendor-supercluster license 缺失失败。
  • RDC 校验 top-level Native submodules 固定提交,恢复中断克隆导致的残缺 vendor 工作树;第三轮命令成功,Gradle BUILD SUCCESSFUL in 22m 24s,退出码 0。已执行真实 NDK 编译与动态库链接。
  • 第三轮原始构建日志保存于 Mac /tmp/step104_android_native_opengl_gradle_third.log;前两轮错误日志保存于同目录对应 gradle.log 与 gradle_retry.log 文件。

7. 产物证据

  • 完整路径:/Users/tei/dev/MapLibreParticleLab-upgrade-android-1361/platform/android/MapLibreAndroid/build/intermediates/cmake/openglDebug/obj/x86_64/libmaplibre.so。
  • 文件类型:ELF 64-bit LSB shared object、x86-64、dynamically linked、with debug_info、not stripped。
  • 大小:377246848 bytes。
  • SHA-256:ff5a5eb45f84ff633a87fe385fb04ee39ba63ed3bc486003408e02cea78c8907。
  • 此产物未签名、未公开发布,不应作为 NavSea 正式依赖或全 ABI 发布件。

8. 实际测试与未测试范围

  • PASS:三方合并无未解决冲突、Native 编译器完成 x86_64 OpenGL 工程构建、最终 libmaplibre.so 链接。
  • NOT RUN:ARMv7、ARM64、其余 Android ABI、Android APK/实体机/虚拟机 GPU 视觉、QBIN/T0/T1 运行态、Pan/Zoom/Rotate、Style reset、RenderSegment retained 行为、Vulkan、RN 11.5.0 Feature State 联调、iOS Metal/XCFramework。
  • 未执行 Jest;未以静态推断伪报运行通过。

9. 已知问题与阻塞

  • GitHub 下载曾出现间歇性 DNS/HTTPS 超时;RDC 校正必要的 submodule HEAD 后完成编译。
  • Gradle/CMake 输出 SDK XML 版本、Gradle 10 弃用提示;本轮未导致失败。长期工具链调整需单独设计,不并入当前移植 Gate。
  • iOS/shared contract 更改不属于 Android 本轮权限;涉及跨平台共同语义须回 Integration 协调。

10. 下一阶段、停点与发布边界

建议在Android 多 ABI(armeabi-v7a / arm64-v8a / x86 / x86_64)Native 验证 + Test Host GPU 功能回归处设置下一 Gate。下一阶段再独立验证 RN 11.5.0 的公共桥接与 Feature State,iOS 由对应负责方验证。当前不发布 AAR、npm,不改 NavSea 主线。

11. 收尾事实

本次更新采用根目录 recoder_step.md append-only,并追加 STEP-104;Git 提交、远端分支、最终 HEAD、push 结果以 RDC 后续独立回读为准。未完成项如实保留。