diff --git a/release/README.md b/release/README.md new file mode 100644 index 000000000..d21a66217 --- /dev/null +++ b/release/README.md @@ -0,0 +1,22 @@ +# Particle 正式发行入口 + +本仓库按 GSRL v1.0.0 维护源码发行记录。**正式二进制在 NAS/PBF 公网仓库,Git 不存放 AAR、tgz 或 XCFramework。** + +## 当前推荐发行 + +| 发行代号 | Android Native / RN | iOS Metal | 状态 | 入口 | +| --- | --- | --- | --- | --- | +| v22 | `13.6.1-particle.22` | `6.29.0-particle.22` | GSRL Source Lock 正式发行 | [v22 版本说明](maplibre-particle/13.6.1-particle.22/README.md) | + +- v22 Source Lock:[SOURCE_LOCK.json](maplibre-particle/13.6.1-particle.22/SOURCE_LOCK.json) +- v22 统一发布清单:[release-manifest.json](maplibre-particle/release-manifest.json) +- Maven:`https://pbf.jpcn.ccwu.cc/maven` +- RN 包:`https://pbf.jpcn.ccwu.cc/npm` +- iOS Metal 二进制:`https://pbf.jpcn.ccwu.cc/swift/maplibre-particle` +- SwiftPM:`https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git` + +## 历史版本 + +v21:`13.4.1-particle.21` / iOS `6.28.0-particle.21`;正式 Git tag 为 `maplibre-particle/rn/13.4.1-particle.21`。它是 GSRL v22 启用前的历史发布,不应将当前 v22 Source Lock 套用到 v21。历史二进制仍可从此前 PBF Maven/npm/SwiftPM 的对应版本取得。 + +正式接收方应先阅读对应版本说明并校验 Source Lock,不能仅依据文件名安装。 diff --git a/release/maplibre-particle/13.6.1-particle.22/README.md b/release/maplibre-particle/13.6.1-particle.22/README.md new file mode 100644 index 000000000..fa7ab121c --- /dev/null +++ b/release/maplibre-particle/13.6.1-particle.22/README.md @@ -0,0 +1,55 @@ +# MapLibre Particle 13.6.1-particle.22 正式发行 + +发行说明:本目录保存 **GSRL 源码与制品身份记录**;二进制正式存放在 NAS 的公网发行入口(不会提交进 Git)。v22 同源冻结提交为 `ea5bd393c664a54513531998bf8609a0535639f7`。 + +## 版本与发行范围 + +- Android OpenGL Native:`cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.22`,包含 `arm64-v8a`、`armeabi-v7a`、`x86`、`x86_64`。 +- React Native package:`@navsea/maplibre-particle-rn@13.6.1-particle.22`,peer `@maplibre/maplibre-react-native@11.5.0`。 +- iOS Metal:`MapLibre` XCFramework / SwiftPM `6.29.0-particle.22`(ios-arm64)。 +- 正式源码 Tag:`maplibre-particle/rn/13.6.1-particle.22`;Build Source Commit 见 `SOURCE_LOCK.json`。 + +## 公网制品(NAS 发布) + +| 制品 | 获取地址 | +| --- | --- | +| Android AAR | https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.aar | +| Android POM | https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.pom | +| Android Gradle Module Metadata | https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.module | +| RN tgz | https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.22.tgz | +| iOS Metal XCFramework zip | https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip | +| iOS XCFramework SHA-256 文件 | https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip.sha256 | + +完整 SHA-256 以本目录 `SOURCE_LOCK.json` 的 `files[]` 为权威记录。以上文件均已按 NAS 公网重新下载与原始构建文件逐字节比对。 + +## 使用方法 + +**Android**:Gradle Maven repository 增加 `https://pbf.jpcn.ccwu.cc/maven`,依赖: + +`implementation("cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.22")` + +本版 AAR 采用 OpenGL,不宣称包含 Vulkan 制品。 + +**React Native**:从上表 RN tgz 的 HTTPS URL 安装 `@navsea/maplibre-particle-rn`;宿主需使用 `@maplibre/maplibre-react-native@11.5.0`。按 package 内 `README.md` 配置 Android Maven、Expo plugin、iOS Podspec/codegen;勿继续锁定 v21 的 `13.4.1` Native。 + +**iOS**:SwiftPM repository:`https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git`,选择 exact tag `6.29.0-particle.22`,product `MapLibre`。将 RN iOS 依赖与该同源 Metal binary 按宿主 Post Install 说明接入。 + +## GSRL 来源核对与接收 + +1. 从此目录获取 `SOURCE_LOCK.json`,确认项目名、发行版本、Git Remote、完整 `gitCommit` 和 `gitRef`。 +2. 按上述 URL 下载所需制品,重新计算各文件 SHA-256,与 `files[]` 逐项比较;确认 Gradle/RN/SwiftPM 依赖版本。 +3. SHA 或来源不同不得按本版接收。已发行版本不可覆盖;修正须使用新版本。 + +## 验证边界 + +- Mac 统一源码构建、四 ABI Android Release AAR、iOS Metal ios-arm64 XCFramework、RN tgz 与公网逐字节回读:PASS。 +- FZG1-2 x86_64/OpenGL Test App 的 STEP-106 粒子/RenderSegment/Renderer/QBIN 定向回归:PASS;该测试不能替代正式 Release AAR 在 NavSea 上的集成测试。 +- Android ARM64 实机、RN 11.5.0 宿主整体集成、iOS Metal 真机:**本次未验证,不宣称这些运行环境 PASS**。 +- GSRL PASS 仅代表源码与发行文件身份一致、可获取、依赖及说明完整。 + +## 溯源 + +- Build Source Commit:`ea5bd393c664a54513531998bf8609a0535639f7` +- 主发行清单:`release/maplibre-particle/release-manifest.json` +- GSRL Source Lock:`release/maplibre-particle/13.6.1-particle.22/SOURCE_LOCK.json` +- 原始构建与发布详细日志位于 Mac 临时工作区 `artifacts/maplibre-particle/`,**不是使用方获取入口**。 diff --git a/release/maplibre-particle/13.6.1-particle.22/SOURCE_LOCK.json b/release/maplibre-particle/13.6.1-particle.22/SOURCE_LOCK.json new file mode 100644 index 000000000..1b5f2c068 --- /dev/null +++ b/release/maplibre-particle/13.6.1-particle.22/SOURCE_LOCK.json @@ -0,0 +1,103 @@ +{ + "schemaVersion": "gsrl/source-lock/v1", + "project": "MapLibreParticleLab", + "releaseUnit": "Particle unified Android OpenGL / React Native / iOS Metal", + "version": "13.6.1-particle.22", + "versions": { + "android": "13.6.1-particle.22", + "reactNative": "13.6.1-particle.22", + "ios": "6.29.0-particle.22" + }, + "source": { + "gitRemote": "https://git.eyaku.jp/tei/MapLibreParticleLab", + "gitCommit": "ea5bd393c664a54513531998bf8609a0535639f7", + "gitRef": "refs/tags/maplibre-particle/rn/13.6.1-particle.22", + "note": "gitCommit 是实际构建所用的冻结源代码提交;发行清单和 GSRL 记录在后续发行提交。发行 Tag 保留完整历史,不要求 Tag 指向的发行记录提交等于构建源码提交。" + }, + "files": [ + { + "releaseUnit": "android", + "name": "android-sdk-particle-opengl-13.6.1-particle.22.aar", + "location": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.aar", + "sha256": "ed62a67a0882896d3d59f315351d6807941881333494590bc943a858b213a130", + "sizeBytes": 16541912 + }, + { + "releaseUnit": "android", + "name": "android-sdk-particle-opengl-13.6.1-particle.22.pom", + "location": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.pom", + "sha256": "bf66dad234d763aa9ad7ed17576177219063cd5e2a8ff32593608913bc442b3c", + "sizeBytes": 5687 + }, + { + "releaseUnit": "android", + "name": "android-sdk-particle-opengl-13.6.1-particle.22.module", + "location": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.module", + "sha256": "a64e1ac9b9562f947b38c0553679c94aba1b912147825fec6aedfa72fd843f43", + "sizeBytes": 6999 + }, + { + "releaseUnit": "reactNative", + "name": "navsea-maplibre-particle-rn-13.6.1-particle.22.tgz", + "location": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.22.tgz", + "sha256": "dcd30dd64a3d140934f8ea3a042cbac5c0450e0510c017127824d6a1a53557b5", + "sizeBytes": 29008 + }, + { + "releaseUnit": "ios", + "name": "MapLibre.dynamic.xcframework.zip", + "location": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip", + "sha256": "79b1b8dcd6c647afc150fc33f0771ae81c3ca0c8be93a9a9fa6cce49a1776670", + "sizeBytes": 4147794 + }, + { + "releaseUnit": "ios", + "name": "MapLibre.dynamic.xcframework.zip.sha256", + "location": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip.sha256", + "sha256": "2b5a41897f83b1070c085d07e9e780756fbec599c826dfa3f43d2598751dcfa0", + "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.22", + "coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.22", + "role": "OpenGL AAR, arm64-v8a/armeabi-v7a/x86/x86_64" + }, + { + "name": "iOS SwiftPM MapLibre", + "version": "6.29.0-particle.22", + "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.22/README.md", + "releaseManifest": "release/maplibre-particle/release-manifest.json", + "status": "RELEASED", + "validation": { + "publicReadback": "PASS", + "buildSourceCommit": "ea5bd393c664a54513531998bf8609a0535639f7", + "androidBuild": "PASS - four ABI OpenGL Release AAR", + "androidDevice": "FZG1-2 x86_64 OpenGL Test App smoke/regression PASS (STEP-106; release AAR separate)", + "androidArm64Device": "NOT_TESTED", + "reactNative115HostIntegration": "NOT_TESTED", + "iosMetalDevice": "NOT_TESTED", + "note": "GSRL verifies source and artifact identity, not runtime certification of every target." + } +} diff --git a/release/maplibre-particle/ios/Package.swift.template b/release/maplibre-particle/ios/Package.swift.template index f65aa96fd..5755cf50c 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.28.0-particle.21/MapLibre.dynamic.xcframework.zip", - checksum: "fd78ed8f504c3d0ee969954f44501719b94e699aa5b160de849e712b32d24f72" + url: "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip", + checksum: "79b1b8dcd6c647afc150fc33f0771ae81c3ca0c8be93a9a9fa6cce49a1776670" ), ] ) diff --git a/release/maplibre-particle/ios/README.md b/release/maplibre-particle/ios/README.md index 2848674d4..bcf5f04db 100644 --- a/release/maplibre-particle/ios/README.md +++ b/release/maplibre-particle/ios/README.md @@ -1,14 +1,14 @@ # MapLibre Particle iOS 发行 -当前正式发行:6.28.0-particle.21 +当前正式发行:6.29.0-particle.22 - Renderer:Metal - Product / Module:MapLibre -- Binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.21/MapLibre.dynamic.xcframework.zip -- SHA-256:fd78ed8f504c3d0ee969954f44501719b94e699aa5b160de849e712b32d24f72 +- Binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip +- SHA-256:79b1b8dcd6c647afc150fc33f0771ae81c3ca0c8be93a9a9fa6cce49a1776670 - SwiftPM:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git -- Exact Version:6.28.0-particle.21 -- Source Commit:16a5d15f164dc93d220e3fac62de66a9c9527ccc +- Exact Version:6.29.0-particle.22 +- Source Commit:ea5bd393c664a54513531998bf8609a0535639f7 构建命令固定为: diff --git a/release/maplibre-particle/ios/release-manifest.json b/release/maplibre-particle/ios/release-manifest.json index 796d605fa..13d0efb43 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.28.0-particle.21", + "distributionVersion": "6.29.0-particle.22", "moduleName": "MapLibre", "compilationMode": "opt", "artifact": { "fileName": "MapLibre.dynamic.xcframework.zip", - "sizeBytes": 4121573, - "sha256": "fd78ed8f504c3d0ee969954f44501719b94e699aa5b160de849e712b32d24f72", - "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.21/MapLibre.dynamic.xcframework.zip" + "sizeBytes": 4147794, + "sha256": "79b1b8dcd6c647afc150fc33f0771ae81c3ca0c8be93a9a9fa6cce49a1776670", + "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip" }, - "sourceCommit": "16a5d15f164dc93d220e3fac62de66a9c9527ccc", + "sourceCommit": "ea5bd393c664a54513531998bf8609a0535639f7", "swiftPackage": { "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git", "requirement": "exactVersion", - "version": "6.28.0-particle.21", + "version": "6.29.0-particle.22", "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 725e05a16..9999853e1 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": 21, - "sourceCommit": "16a5d15f164dc93d220e3fac62de66a9c9527ccc", - "generatedAtUtc": "2026-10-08T04:32:42.009872+00:00", + "particleRevision": 22, + "sourceCommit": "ea5bd393c664a54513531998bf8609a0535639f7", + "generatedAtUtc": "2026-10-09T07:14:50.067897+00:00", "reactNative": { "name": "@navsea/maplibre-particle-rn", - "version": "13.4.1-particle.21", + "version": "13.6.1-particle.22", "artifact": { - "fileName": "navsea-maplibre-particle-rn-13.4.1-particle.21.tgz", - "sizeBytes": 28965, - "sha256": "8862dda5ad03727967465edea42053c71e59485e45afe7b99ed153d5c0a27eb5", - "url": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.21.tgz" + "fileName": "navsea-maplibre-particle-rn-13.6.1-particle.22.tgz", + "sizeBytes": 29008, + "sha256": "dcd30dd64a3d140934f8ea3a042cbac5c0450e0510c017127824d6a1a53557b5", + "url": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.6.1-particle.22.tgz" }, - "mapLibreReactNative": "11.3.6" + "mapLibreReactNative": "11.5.0" }, "android": { - "version": "13.4.1-particle.21", - "coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.21", + "version": "13.6.1-particle.22", + "coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.6.1-particle.22", "renderer": "opengl", "artifact": { - "fileName": "android-sdk-particle-opengl-13.4.1-particle.21.aar", - "sizeBytes": 170777014, - "sha256": "59248c9a80aafa03da202a2666cfefe919090a16ae21d425370fcf8b39d0898c", - "url": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.4.1-particle.21/android-sdk-particle-opengl-13.4.1-particle.21.aar" + "fileName": "android-sdk-particle-opengl-13.6.1-particle.22.aar", + "sizeBytes": 16541912, + "sha256": "ed62a67a0882896d3d59f315351d6807941881333494590bc943a858b213a130", + "url": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.6.1-particle.22/android-sdk-particle-opengl-13.6.1-particle.22.aar" }, "ndk": "28.2.13676358", "gradle": "9.5.1", "jdk": "openjdk version \"17.0.20.1\" 2026-08-18" }, "ios": { - "distributionVersion": "6.28.0-particle.21", + "distributionVersion": "6.29.0-particle.22", "renderer": "metal", "compilationMode": "opt", "moduleName": "MapLibre", "artifact": { "fileName": "MapLibre.dynamic.xcframework.zip", - "sizeBytes": 4121573, - "sha256": "fd78ed8f504c3d0ee969954f44501719b94e699aa5b160de849e712b32d24f72", - "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.21/MapLibre.dynamic.xcframework.zip" + "sizeBytes": 4147794, + "sha256": "79b1b8dcd6c647afc150fc33f0771ae81c3ca0c8be93a9a9fa6cce49a1776670", + "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.29.0-particle.22/MapLibre.dynamic.xcframework.zip" }, "swiftPackage": { "url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git", "requirement": "exactVersion", - "version": "6.28.0-particle.21", + "version": "6.29.0-particle.22", "productName": "MapLibre" }, "xcode": "Xcode 26.3 Build version 17C529 ",