From e48258434e5b9ee40ab1d414c223a4ed809be879 Mon Sep 17 00:00:00 2001 From: tei Date: Wed, 21 Oct 2026 16:24:22 +0900 Subject: [PATCH] release: finalize unified particle.28 --- .../13.6.1-particle.28/README.md | 37 +++++++ .../13.6.1-particle.28/SOURCE_LOCK.json | 104 ++++++++++++++++++ .../ios/Package.swift.template | 4 +- release/maplibre-particle/ios/README.md | 10 +- .../ios/release-manifest.json | 12 +- .../maplibre-particle/release-manifest.json | 36 +++--- 6 files changed, 172 insertions(+), 31 deletions(-) create mode 100644 release/maplibre-particle/13.6.1-particle.28/README.md create mode 100644 release/maplibre-particle/13.6.1-particle.28/SOURCE_LOCK.json diff --git a/release/maplibre-particle/13.6.1-particle.28/README.md b/release/maplibre-particle/13.6.1-particle.28/README.md new file mode 100644 index 000000000..0a4f25908 --- /dev/null +++ b/release/maplibre-particle/13.6.1-particle.28/README.md @@ -0,0 +1,37 @@ +# MapLibre Particle V28 正式发行 + +Android/RN:13.6.1-particle.28;iOS Metal/SwiftPM:6.29.0-particle.28。 + +统一冻结构建源码 Commit:4d9cb0ef69dc4bb946c48377f4e1a5b2ba2bbbe8;正式 Git Tag:maplibre-particle/rn/13.6.1-particle.28。 +正式来源、依赖及全部六项文件 SHA-256 见本目录 [SOURCE_LOCK.json](SOURCE_LOCK.json)。 + +## 本次变更 + +iOS MapLibre Native 在 MLNVectorStyleLayer 新增原 Style Layer Filter 的受控原始 JSON 读取与设置 API。实现采用“无损或拒绝”:无法证明与 Core Filter 往返等价时 fail-closed,不经过有损 NSPredicate 读回。原有 predicate、粒子渲染及 Android Native 功能保持。 + +Style 成员关系、代次和 revision 由 MLRN Host 核验,Native 不内置 CM95 语义。本功能是双端方案 B 的上游前提,不代表 NavSea Host 或设备已通过。 + +## 公网产物 + +| 组件 | 文件 | SHA-256 | +| --- | --- | --- | +| android | [android-sdk-particle-opengl-13.6.1-particle.28.aar](https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.aar) | a60818db5987f5305d7f94f7eb64d4f3c757131a432cadc9f60c8c3467303f32 | +| android | [android-sdk-particle-opengl-13.6.1-particle.28.pom](https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.pom) | 20286294b9b210b225c370c7160ca35a023759d4dae58e091df2657d8d540554 | +| android | [android-sdk-particle-opengl-13.6.1-particle.28.module](https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.module) | 883c81928d232160f1c80442c8d831fc362807c2ea5a68bded9b599eb844505c | +| reactNative | [navsea-maplibre-particle-rn-13.6.1-particle.28.tgz](https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.28.tgz) | 16726d076ad1117afd2134d578b24a7466c44e68173fb95fa962b5592bd2accd | +| ios | [MapLibre.dynamic.xcframework.zip](https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip) | 577d0784f1e436c04b3cf0bd0213ce38fdf14612898367ec6e7c73156b82cd74 | +| ios | [MapLibre.dynamic.xcframework.zip.sha256](https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip.sha256) | fa52c0e75b04a9e81d4e21f3be4bcfe0586fccfee3dcc242784cbdb85397a91a | + +## 使用与安装 + +- Android Maven:https://pbf.jpcn.ccwu.cc/maven;坐标 cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.28,OpenGL AAR 含 armeabi-v7a、arm64-v8a、x86、x86_64。 +- React Native:@navsea/maplibre-particle-rn@13.6.1-particle.28;MapLibre RN 11.5.0,React Native >=0.80.0,Expo >=54.0.0 可选。 +- iOS SwiftPM:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git,Exact Version 6.29.0-particle.28,Product MapLibre,Metal iOS arm64 真机专用,无 Simulator slice。 + +## GSRL 核验与尚未验证 + +release.sh 28 prepare/build/publish:PASS;冻结源码提交、Android 四 ABI/Maven Local、RN pack、iOS Metal Bazel opt、NAS 原子发布、六项公网文件逐字节回读及 SwiftPM Tag 均通过。 + +尚未执行 V28 发行 AAR/XCFramework 的真机安装运行,以及 NavSea Host 的 CM95 Filter 查询/应用/恢复、iOS MLRN Bridge 和正式四档测试。构建/发行通过不等于安全语义或设备测试通过。 + +接收方需核验 Git Tag、SOURCE_LOCK、全部 SHA-256、依赖及 Host Filter 可信审核门槛。 diff --git a/release/maplibre-particle/13.6.1-particle.28/SOURCE_LOCK.json b/release/maplibre-particle/13.6.1-particle.28/SOURCE_LOCK.json new file mode 100644 index 000000000..3a50d4f15 --- /dev/null +++ b/release/maplibre-particle/13.6.1-particle.28/SOURCE_LOCK.json @@ -0,0 +1,104 @@ +{ + "schemaVersion": "gsrl/source-lock/v1", + "project": "MapLibreParticleLab", + "releaseUnit": "Particle unified Android OpenGL / React Native / iOS Metal", + "version": "13.6.1-particle.28", + "versions": { + "android": "13.6.1-particle.28", + "reactNative": "13.6.1-particle.28", + "ios": "6.29.0-particle.28" + }, + "source": { + "gitRemote": "https://git.eyaku.jp/tei/MapLibreParticleLab", + "gitCommit": "4d9cb0ef69dc4bb946c48377f4e1a5b2ba2bbbe8", + "gitRef": "refs/tags/maplibre-particle/rn/13.6.1-particle.28", + "note": "gitCommit是Android/RN/iOS共用的实际冻结构建源码;发行Tag指向含SOURCE_LOCK与Manifest的后续Final Commit。" + }, + "files": [ + { + "releaseUnit": "android", + "name": "android-sdk-particle-opengl-13.6.1-particle.28.aar", + "location": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.aar", + "sha256": "a60818db5987f5305d7f94f7eb64d4f3c757131a432cadc9f60c8c3467303f32", + "sizeBytes": 16640539 + }, + { + "releaseUnit": "android", + "name": "android-sdk-particle-opengl-13.6.1-particle.28.pom", + "location": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.pom", + "sha256": "20286294b9b210b225c370c7160ca35a023759d4dae58e091df2657d8d540554", + "sizeBytes": 5687 + }, + { + "releaseUnit": "android", + "name": "android-sdk-particle-opengl-13.6.1-particle.28.module", + "location": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.module", + "sha256": "883c81928d232160f1c80442c8d831fc362807c2ea5a68bded9b599eb844505c", + "sizeBytes": 6999 + }, + { + "releaseUnit": "reactNative", + "name": "navsea-maplibre-particle-rn-13.6.1-particle.28.tgz", + "location": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.28.tgz", + "sha256": "16726d076ad1117afd2134d578b24a7466c44e68173fb95fa962b5592bd2accd", + "sizeBytes": 29063 + }, + { + "releaseUnit": "ios", + "name": "MapLibre.dynamic.xcframework.zip", + "location": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip", + "sha256": "577d0784f1e436c04b3cf0bd0213ce38fdf14612898367ec6e7c73156b82cd74", + "sizeBytes": 4187287 + }, + { + "releaseUnit": "ios", + "name": "MapLibre.dynamic.xcframework.zip.sha256", + "location": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip.sha256", + "sha256": "fa52c0e75b04a9e81d4e21f3be4bcfe0586fccfee3dcc242784cbdb85397a91a", + "sizeBytes": 99 + } + ], + "dependencies": [ + { + "name": "@maplibre/maplibre-react-native", + "version": "11.5.0", + "role": "React Native host peer, iOS MapLibreReactNative Pod" + }, + { + "name": "React Native", + "version": ">=0.80.0", + "role": "RN package peer requirement" + }, + { + "name": "Expo", + "version": ">=54.0.0 (optional)", + "role": "RN optional peer" + }, + { + "name": "Android Native SDK", + "version": "13.6.1-particle.28", + "coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.28", + "role": "OpenGL AAR, arm64-v8a/armeabi-v7a/x86/x86_64" + }, + { + "name": "iOS SwiftPM MapLibre", + "version": "6.29.0-particle.28", + "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git", + "role": "Exact version, product MapLibre, Metal ios-arm64" + } + ], + "usage": "release/maplibre-particle/13.6.1-particle.28/README.md", + "releaseManifest": "release/maplibre-particle/release-manifest.json", + "status": "RELEASED", + "validation": { + "publicReadback": "PASS - release.sh 28 publish exit 0; six public files byte-compared; SwiftPM tag checked", + "androidBuild": "PASS - OpenGL Release four ABI from frozen source 4d9cb0ef69dc4bb946c48377f4e1a5b2ba2bbbe8", + "iosMetalBuild": "PASS - Bazel opt Metal ios-arm64 XCFramework, no simulator slice", + "reactNativePack": "PASS - npm pack 13.6.1-particle.28; MapLibre RN 11.5.0 peer", + "newNativeIosAPI": "COMPILED - rawStyleFilterJSONObjectWithError and setRawStyleFilterJSONObject:error exported in iOS framework headers; no independent device invocation", + "androidDevice": "NOT_TESTED - V28 final AAR on physical device", + "iosMetalDevice": "NOT_TESTED - V28 final XCFramework on physical device", + "navseaHostIntegration": "NOT_TESTED - NavSea MLRN iOS bridge and native app build remain separate", + "note": "GSRL RELEASED certifies source, files, dependencies and public readback, not full CM95 runtime or device tests." + } +} diff --git a/release/maplibre-particle/ios/Package.swift.template b/release/maplibre-particle/ios/Package.swift.template index 8634f38e0..770a711a4 100644 --- a/release/maplibre-particle/ios/Package.swift.template +++ b/release/maplibre-particle/ios/Package.swift.template @@ -9,8 +9,8 @@ let package = Package( targets: [ .binaryTarget( name: "MapLibre", - url: "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.27/MapLibre.dynamic.xcframework.zip", - checksum: "5dbde28600df35484a7f31e7c7c4780f27b919fc6ec59f6aa88d65d81342448c" + url: "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip", + checksum: "577d0784f1e436c04b3cf0bd0213ce38fdf14612898367ec6e7c73156b82cd74" ), ] ) diff --git a/release/maplibre-particle/ios/README.md b/release/maplibre-particle/ios/README.md index fc30fab44..8ea6d7183 100644 --- a/release/maplibre-particle/ios/README.md +++ b/release/maplibre-particle/ios/README.md @@ -1,14 +1,14 @@ # MapLibre Particle iOS 发行 -当前正式发行:6.29.0-particle.27 +当前正式发行:6.29.0-particle.28 - Renderer:Metal - Product / Module:MapLibre -- Binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.27/MapLibre.dynamic.xcframework.zip -- SHA-256:5dbde28600df35484a7f31e7c7c4780f27b919fc6ec59f6aa88d65d81342448c +- Binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip +- SHA-256:577d0784f1e436c04b3cf0bd0213ce38fdf14612898367ec6e7c73156b82cd74 - SwiftPM:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git -- Exact Version:6.29.0-particle.27 -- Source Commit:970e3ad606e59873a32e9389e65ef257e1c259bb +- Exact Version:6.29.0-particle.28 +- Source Commit:4d9cb0ef69dc4bb946c48377f4e1a5b2ba2bbbe8 构建命令固定为: diff --git a/release/maplibre-particle/ios/release-manifest.json b/release/maplibre-particle/ios/release-manifest.json index b58b05b67..cbdc66ef3 100644 --- a/release/maplibre-particle/ios/release-manifest.json +++ b/release/maplibre-particle/ios/release-manifest.json @@ -1,20 +1,20 @@ { "schemaVersion": 2, "status": "PUBLISHED_PUBLIC_READBACK_PASS", - "distributionVersion": "6.29.0-particle.27", + "distributionVersion": "6.29.0-particle.28", "moduleName": "MapLibre", "compilationMode": "opt", "artifact": { "fileName": "MapLibre.dynamic.xcframework.zip", - "sizeBytes": 4181894, - "sha256": "5dbde28600df35484a7f31e7c7c4780f27b919fc6ec59f6aa88d65d81342448c", - "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.27/MapLibre.dynamic.xcframework.zip" + "sizeBytes": 4187287, + "sha256": "577d0784f1e436c04b3cf0bd0213ce38fdf14612898367ec6e7c73156b82cd74", + "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip" }, - "sourceCommit": "970e3ad606e59873a32e9389e65ef257e1c259bb", + "sourceCommit": "4d9cb0ef69dc4bb946c48377f4e1a5b2ba2bbbe8", "swiftPackage": { "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git", "requirement": "exactVersion", - "version": "6.29.0-particle.27", + "version": "6.29.0-particle.28", "productName": "MapLibre" }, "notes": "Metal renderer optimized release built with bazel build -c opt --//:renderer=metal //platform/ios:MapLibre.dynamic" diff --git a/release/maplibre-particle/release-manifest.json b/release/maplibre-particle/release-manifest.json index c29a69c76..26118b0d4 100644 --- a/release/maplibre-particle/release-manifest.json +++ b/release/maplibre-particle/release-manifest.json @@ -1,49 +1,49 @@ { "schemaVersion": 2, "releaseState": "PUBLISHED_PUBLIC_READBACK_PASS", - "particleRevision": 27, - "sourceCommit": "970e3ad606e59873a32e9389e65ef257e1c259bb", - "generatedAtUtc": "2026-10-14T01:50:45.060383+00:00", + "particleRevision": 28, + "sourceCommit": "4d9cb0ef69dc4bb946c48377f4e1a5b2ba2bbbe8", + "generatedAtUtc": "2026-10-21T07:17:43.623656+00:00", "reactNative": { "name": "@navsea/maplibre-particle-rn", - "version": "13.6.1-particle.27", + "version": "13.6.1-particle.28", "artifact": { - "fileName": "navsea-maplibre-particle-rn-13.6.1-particle.27.tgz", - "sizeBytes": 29040, - "sha256": "fdd67210debd8363d4bf72fcc0120ef747dc3037d55b8c0d83330dd98bb0bc5d", - "url": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.27.tgz" + "fileName": "navsea-maplibre-particle-rn-13.6.1-particle.28.tgz", + "sizeBytes": 29063, + "sha256": "16726d076ad1117afd2134d578b24a7466c44e68173fb95fa962b5592bd2accd", + "url": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.28.tgz" }, "mapLibreReactNative": "11.5.0" }, "android": { - "version": "13.6.1-particle.27", - "coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.27", + "version": "13.6.1-particle.28", + "coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.28", "renderer": "opengl", "artifact": { - "fileName": "android-sdk-particle-opengl-13.6.1-particle.27.aar", + "fileName": "android-sdk-particle-opengl-13.6.1-particle.28.aar", "sizeBytes": 16640539, - "sha256": "2ff3ead8e5d7cb8802a4c05ba20cd7f8f0a7029f72619f9a2ec176c942ae8de4", - "url": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.27/android-sdk-particle-opengl-13.6.1-particle.27.aar" + "sha256": "a60818db5987f5305d7f94f7eb64d4f3c757131a432cadc9f60c8c3467303f32", + "url": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.28/android-sdk-particle-opengl-13.6.1-particle.28.aar" }, "ndk": "28.2.13676358", "gradle": "9.5.1", "jdk": "openjdk version \"17.0.20.1\" 2026-08-18" }, "ios": { - "distributionVersion": "6.29.0-particle.27", + "distributionVersion": "6.29.0-particle.28", "renderer": "metal", "compilationMode": "opt", "moduleName": "MapLibre", "artifact": { "fileName": "MapLibre.dynamic.xcframework.zip", - "sizeBytes": 4181894, - "sha256": "5dbde28600df35484a7f31e7c7c4780f27b919fc6ec59f6aa88d65d81342448c", - "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.27/MapLibre.dynamic.xcframework.zip" + "sizeBytes": 4187287, + "sha256": "577d0784f1e436c04b3cf0bd0213ce38fdf14612898367ec6e7c73156b82cd74", + "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.28/MapLibre.dynamic.xcframework.zip" }, "swiftPackage": { "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git", "requirement": "exactVersion", - "version": "6.29.0-particle.27", + "version": "6.29.0-particle.28", "productName": "MapLibre" }, "xcode": "Xcode 26.3 Build version 17C529 ",