docs: close STEP-082 ios xcframework validation
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# STEP-082 iOS Native FieldRuntime Facade 与 XCFramework 发行基线 v1
|
||||
|
||||
状态:IMPLEMENTED / WAITING_MAC_XCFRAMEWORK_VALIDATION
|
||||
状态:CLOSED / PASS
|
||||
|
||||
## 目标与基线
|
||||
|
||||
@@ -14,19 +14,21 @@
|
||||
- [x] style reload/source missing fail-closed 与 public header 无 Core/STL 泄漏。
|
||||
- [x] XCFramework public header 构建图接线。
|
||||
- [x] distribution-ready 模板和中文设计文档。
|
||||
- [ ] macOS XCFramework 成功构建、Headers/symbol/zip SHA-256 验证。
|
||||
- [ ] `git diff --check`、scoped commit、push 与最终 HEAD(在实现和文档收尾后执行)。
|
||||
- [x] macOS XCFramework 成功构建、Headers/symbol/zip SHA-256 验证。
|
||||
- [x] `git diff --check` 已通过;本次文档收尾后的 scoped closeout commit/push 由宿主执行并回填最终 hash。
|
||||
|
||||
## 允许与禁止
|
||||
|
||||
允许修改 iOS public header/implementation、Bazel public export、release 模板以及指定中文文档。禁止改 QBIN V2、FieldProfile、BindingProjection、renderer/Metal physics、STEP-081 smoke、Android/RN/NavSea;本 Step 未修改这些范围。
|
||||
|
||||
## 构建记录与阻塞
|
||||
## 最终构建记录与关闭依据
|
||||
|
||||
macOS 15.7.7 / Xcode 26.3 / Bazel 8.6.0。已执行 `bazel build //platform/ios:MapLibre.dynamic`;在本 facade 编译前,基线 `//:generated_style_code` 失败:`bazel/core.bzl` 要求 generator 输出 `src/mbgl/style/layers/particle_validation_layer.cpp`,但 `scripts/generate-style-code.mjs` 不生成该文件。该 Core/Bazel codegen 问题不属于本 Step 允许范围,未以扩大修改规避。
|
||||
宿主已在真实实现提交 `136ed726cf749c24b3673c046581a38ef48be390`(`fix: close ios xcframework packaging blockers`)上完成阻塞修复和 macOS 验证。`bazel build //:generated_style_code` PASS;`bazel build //platform/ios:MapLibre.dynamic` PASS,最终日志 `/tmp/step082-host-maplibre-dynamic-final2.log` 含 `Build completed successfully`。
|
||||
|
||||
iPhoneOS arm64 CMake `ios-sdk-static` 已通过:`cmake --build build-ios --target ios-sdk-static -- -quiet` 返回 0,实际生成 `MLNParticleFieldRuntime.o`;唯一输出是既有 private header 的 EAGL deprecation warning。未生成 zip,manifest 为 `NOT_BUILT`。
|
||||
产物为 `bazel-bin/platform/ios/MapLibre.dynamic.xcframework.zip`,大小 `24639200` bytes,SHA-256 为 `64faa174c5c0dc0a2da3e289f0beaf2dedf7298665e3345f39836729b668e239`。`ios-arm64` 与 `ios-arm64_x86_64-simulator` slice 均导出 `Headers/MLNParticleFieldRuntime.h`,两份 `Mapbox.h` 均 import `MLNParticleFieldRuntime.h`;`MLNMapView_Private.h` 的 public export count 为 0。两 slice binary 均存在 `_OBJC_CLASS_$_MLNParticleFieldRuntime` 和 `_OBJC_CLASS_$_MLNParticleFieldRuntimeConfiguration`;device 架构为 arm64,simulator 架构为 x86_64+arm64。
|
||||
|
||||
本次仅完成工作树文档收尾;Git closeout commit/push 将由宿主在本文件和 v2 完成报告生成后执行,最终 hash 以宿主回填/最终回复为准。
|
||||
|
||||
## 下一步
|
||||
|
||||
先由独立允许范围处理 Bazel style-codegen 基线,随后在相同 commit 重跑 XCFramework 并检查 Headers、public ObjC symbol 和 zip SHA-256。通过前不得写 CLOSED/PASS 或进入 STEP-083。
|
||||
STEP-082 已关闭。远端发布仍未执行,manifest 的 artifact URL 保持 `LOCAL_BUILD`;后续发布必须另行上传并以发布后的 URL/校验结果更新 release 元数据。STEP-083 不因本记录自动开始。
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# STEP-082 iOS Native FieldRuntime Facade 与 XCFramework 发行基线 Codex 完成报告 v2
|
||||
|
||||
## 1. 执行结论
|
||||
|
||||
`CLOSED / PASS`。iOS public `MLNParticleFieldRuntime` facade、MapView-owned 生命周期、V4 forwarding、public header 导出和 XCFramework distribution 基线均已完成;宿主已在真实 implementation commit 上修复 packaging blocker,并完成实际 Bazel XCFramework 验证。
|
||||
|
||||
## 2. Git 与范围
|
||||
|
||||
- branch:`particle/main`
|
||||
- 本轮确认的 implementation commit:`136ed726cf749c24b3673c046581a38ef48be390`
|
||||
- implementation message:`fix: close ios xcframework packaging blockers`
|
||||
- 本轮只修改 release manifest、STEP-082 Step 记录、`粒子开发记录.md` 和本报告。
|
||||
- 用户既有 dirty 未触碰:`docs/doxygen/doxygen-awesome-css`、`platform/ios/app/MBXAppDelegate.m`、`platform/windows/vendor/vcpkg`。
|
||||
- 两份未跟踪 STEP-082 任务书未修改、未纳入收尾范围。
|
||||
|
||||
Git closeout commit/push 将由宿主在本报告生成后完成,最终 hash 以宿主回填/最终回复为准;本报告不伪造未知 hash、push 或远端状态。
|
||||
|
||||
## 3. blocker 修复后的真实构建验证
|
||||
|
||||
- `bazel build //:generated_style_code`:PASS。
|
||||
- `bazel build //platform/ios:MapLibre.dynamic`:PASS。日志:`/tmp/step082-host-maplibre-dynamic-final2.log`;最终行为 `Build completed successfully`。
|
||||
- artifact:`bazel-bin/platform/ios/MapLibre.dynamic.xcframework.zip`。
|
||||
- size:`24639200` bytes。
|
||||
- SHA-256:`64faa174c5c0dc0a2da3e289f0beaf2dedf7298665e3345f39836729b668e239`。
|
||||
|
||||
## 4. XCFramework 导出审计
|
||||
|
||||
- `ios-arm64` 和 `ios-arm64_x86_64-simulator` 均有 `Headers/MLNParticleFieldRuntime.h`。
|
||||
- 两个 slice 的 `Mapbox.h` 都 import `MLNParticleFieldRuntime.h`。
|
||||
- `MLNMapView_Private.h` public export count 为 `0`。
|
||||
- 两个 framework binary 均包含 `_OBJC_CLASS_$_MLNParticleFieldRuntime` 和 `_OBJC_CLASS_$_MLNParticleFieldRuntimeConfiguration`。
|
||||
- device slice 架构为 `arm64`;simulator slice 架构为 `x86_64+arm64`。
|
||||
|
||||
## 5. Release 元数据
|
||||
|
||||
`release/maplibre-particle/ios/release-manifest.json` 已更新为 `VALIDATED`。`distributionVersion` 保持 `6.28.0-particle.1`,module 保持 `MapLibre`,artifact 文件名不变;真实 size/SHA-256 与 source commit 已记录。artifact 尚未发布远端,URL 明确为 `LOCAL_BUILD`,不伪造可下载地址。
|
||||
|
||||
## 6. 未完成项与边界
|
||||
|
||||
本 Step 的本地 XCFramework build/export 验证已完成。远端 artifact 上传、远端 URL 和消费端下载回读不在本次范围;必须在真实发布后另行记录。未修改 Android、RN、NavSea、QBIN/FieldProfile/BindingProjection、renderer 或 Metal particle physics,也未重做 STEP-081。
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"status": "NOT_BUILT",
|
||||
"status": "VALIDATED",
|
||||
"distributionVersion": "6.28.0-particle.1",
|
||||
"moduleName": "MapLibre",
|
||||
"artifact": {
|
||||
"fileName": "MapLibre.dynamic.xcframework.zip",
|
||||
"url": "NOT_BUILT",
|
||||
"sizeBytes": null,
|
||||
"sha256": "NOT_BUILT"
|
||||
"url": "LOCAL_BUILD",
|
||||
"sizeBytes": 24639200,
|
||||
"sha256": "64faa174c5c0dc0a2da3e289f0beaf2dedf7298665e3345f39836729b668e239"
|
||||
},
|
||||
"sourceCommit": "3e03949d3411c830cfff4bf320cd350f5b6a7527",
|
||||
"notes": "STEP-082 created the template only. Populate artifact fields only from a successful macOS XCFramework build."
|
||||
"sourceCommit": "136ed726cf749c24b3673c046581a38ef48be390",
|
||||
"notes": "STEP-082 local Bazel XCFramework build has been validated. The artifact has not been published; no remote URL is available."
|
||||
}
|
||||
|
||||
@@ -836,3 +836,10 @@ Android V3-08 单次综合验收已完成并关闭。Native `13.4.1-particle.2`
|
||||
- `MLNParticleFieldRuntime.h` 已加入 iOS Bazel SDK public headers 和 `Mapbox.h`;`MLNMapView_Private.h` 仍仅为 implementation private include。建立 `release/maplibre-particle/ios/` SwiftPM template/manifest,因 XCFramework zip 未生成而明确 `NOT_BUILT`。
|
||||
- macOS Bazel `//platform/ios:MapLibre.dynamic` 在 facade 编译前被既有 style-codegen 输出声明阻断:`particle_validation_layer.cpp` 被列为生成输出但 generator 不生成;未越权改 Core/codegen。iPhoneOS arm64 CMake `ios-sdk-static` 编译已启动,最终状态以 Step/完成报告记录为准;在 XCFramework 成功验证前,STEP-082 保持 `IMPLEMENTED / WAITING_MAC_XCFRAMEWORK_VALIDATION`。
|
||||
- 随后 `cmake --build build-ios --target ios-sdk-static -- -quiet` 返回 0,完成 iPhoneOS arm64 static framework build,且 `MLNParticleFieldRuntime.o` 已由真实 Xcode build graph 生成;唯一 warning 是已有 `MLNMapView_Private.h` 的 EAGL deprecation。Bazel XCFramework codegen blocker 未改变,未产出 zip/SHA-256。
|
||||
|
||||
### 2026-09-18 STEP-082 XCFramework Bazel 阻塞修复与最终关闭
|
||||
|
||||
- 宿主在真实 implementation commit `136ed726cf749c24b3673c046581a38ef48be390`(`fix: close ios xcframework packaging blockers`)上修复 iOS XCFramework packaging blocker;`bazel build //:generated_style_code` 与 `bazel build //platform/ios:MapLibre.dynamic` 均 PASS,后者最终日志为 `/tmp/step082-host-maplibre-dynamic-final2.log`,以 `Build completed successfully` 结束。
|
||||
- 真实本地产物 `bazel-bin/platform/ios/MapLibre.dynamic.xcframework.zip`:`24639200` bytes,SHA-256=`64faa174c5c0dc0a2da3e289f0beaf2dedf7298665e3345f39836729b668e239`。device `ios-arm64` 和 simulator `ios-arm64_x86_64-simulator` 都有 public `Headers/MLNParticleFieldRuntime.h`,两份 `Mapbox.h` 均导入该 header。
|
||||
- 两 slice binary 都有 `_OBJC_CLASS_$_MLNParticleFieldRuntime` 和 `_OBJC_CLASS_$_MLNParticleFieldRuntimeConfiguration`;`MLNMapView_Private.h` public export count=0。device 为 arm64,simulator 同时含 x86_64 与 arm64。
|
||||
- iOS release manifest 现为 `VALIDATED`,distributionVersion 仍为 `6.28.0-particle.1`、module 为 `MapLibre`;artifact 尚未发布,URL 明确为 `LOCAL_BUILD`。STEP-082 CLOSED / PASS;Git closeout commit/push 将由宿主在本轮文档生成后完成,最终 hash 以宿主回填/最终回复为准。
|
||||
|
||||
Reference in New Issue
Block a user