docs(upgrade): record android 13.6.1 native OpenGL compile PASS
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
tei
2026-10-09 10:31:21 +09:00
parent a4b5f4eaa0
commit 30d0e6665e
3 changed files with 83 additions and 0 deletions

View File

@@ -18,3 +18,11 @@
- 76 个冲突路径已处理、没有未合并 index 条目;RDC 已检查 Git history 和 Native 代码空白格式。
- 与旧发布的 Particle/QBIN/RenderSegment 功能是否能够完整编译、正确渲染仍未验证。本任务目标保持进行中;下一 Gate 为 Android Native 精确编译。
- 本检查点只能称为 `SOURCE_MERGED / BUILD_NOT_RUN`,不是 Android/iOS SDK PASS。
## Gate 2 / 2026-10-09 / RDC Native 编译实际结果
- 结果:Android x86_64 OpenGL Native **PASS**(Gradle `BUILD SUCCESSFUL in 22m 24s`;进程退出码 0),编译提交 `a4b5f4eaa0eccb734e00d67adb5e750bba320404`。
- 产物:`MapLibreAndroid/build/intermediates/cmake/openglDebug/obj/x86_64/libmaplibre.so`,`377246848` bytes,SHA-256 `ff5a5eb45f84ff633a87fe385fb04ee39ba63ed3bc486003408e02cea78c8907`。
- 已排除的构建阻塞:新 worktree 的 cheap-ruler-cpp、tile-spec/earcut、supercluster LICENSE 依赖检出缺失;按 Git 固定提交恢复,无需修改产品源码。
- 未完成项:其余 ABI、Android 安装/真机 GPU、Vulkan、RN 11.5.0、iOS Metal、发布均 NOT RUN;STEP-104 为 **PARTIAL**(阶段 A Native 编译 Gate 通过,产品发行 Gate 未开始)。
- 下一步:Android 多 ABI + 真实 GPU/Style/RenderSegment 功能验收,再进入 RN 11.5.0 公共桥接联调。

View File

@@ -0,0 +1,64 @@
# 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):
```bash
./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 后续独立回读为准。未完成项如实保留。

View File

@@ -33,3 +33,14 @@
- 代码路径的 `git diff --cached --check` PASS;整个 merge 的 `git diff --cached --check` 不通过,但仅涉及 3 份来自 .21 的**原样历史文档**既有尾随空格,未改写历史文档。
- 已完成:合并树可提交、官方修复与自研层/Source/Particle/RenderSegment 并存;**尚未编译、链接、运行、Android GPU 验证及 iOS 验证**。
- 下一步:RDC 以官方 Android 新树独立配置/精确编译;若失败保留首个真实错误并按明确范围修正或停止。
## 2026-10-09 / STEP-104 / Gate 2:Android Native OpenGL 编译 PASS
- 目标与范围:仅验证官方 Android Native 13.6.1 底座上的自研 Particle / WeatherColor / RenderSegment 合并代码可编译链接;架构和正式发布未变化。
- 实际验证提交:`a4b5f4eaa0eccb734e00d67adb5e750bba320404`,其中合并源码提交 `f8378fd7113c4d230500f0b82902d2356907f4a9`;执行器 GPT-6.1 Sol / High,Native 构建由 RDC 独立执行。
- Mac 构建命令(在 `platform/android`):`JAVA_HOME=/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home ANDROID_HOME=/Users/tei/Library/Android/sdk ANDROID_SDK_ROOT=/Users/tei/Library/Android/sdk ./gradlew --no-daemon --max-workers=3 --console=plain -Pmaplibre.abis=x86_64 :MapLibreAndroid:externalNativeBuildOpenglDebug`(环境变量需导出供子进程使用)。
- 前两次尝试失败在 CMake 配置:第一次缺少 `cheap-ruler-cpp`,第二次缺少 tile-spec 内部 `earcut` 与 `supercluster/LICENSE`,均是新 worktree 第三方依赖未初始化/未检出,并非已知自研源码编译错误。RDC 按 Git 固定 SHA 检出 31 个顶层 Native 依赖,修复内部依赖与残缺工作树;中途 GitHub DNS/HTTPS 不稳定,不得伪报成功。
- 第三次编译:**BUILD SUCCESSFUL in 22m 24s**,Gradle 18 tasks(4 executed / 14 up-to-date);RDC 确认构建进程 exit code 0、Ninja 编译与最终链接完成。
- 产物:`platform/android/MapLibreAndroid/build/intermediates/cmake/openglDebug/obj/x86_64/libmaplibre.so`,ELF 64-bit x86-64 动态库,包含 debug_info,大小 `377246848` bytes,SHA-256 `ff5a5eb45f84ff633a87fe385fb04ee39ba63ed3bc486003408e02cea78c8907`。
- Gate 结论:**Android x86_64 / OpenGL Native compile+link PASS**。这不是 APK 实机验证,不是全 ABI、Vulkan/iOS/RN 11.5.0/发布 PASS;其他 ABI 和运行态 Gate 暂未执行。
- 下一步建议:保留此为可复验的 Native 编译检查点;下阶段批量执行 Android 多 ABI 编译与 Test Host GPU 场景(Field/QBIN、Pan/Zoom/Rotate、RenderSegment、Style lifecycle),确认后再推进 RN 11.5.0。