5.7 KiB
5.7 KiB
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,branchupgrade/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 --checkPASS。整体 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-superclusterlicense 缺失失败。 - 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。
- 大小:
377246848bytes。 - 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 后续独立回读为准。未完成项如实保留。