Compare commits

...

3 Commits

Author SHA1 Message Date
tei
1e7215e2a0 release: finalize unified particle.16
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
2026-09-27 22:34:41 +09:00
tei
e9f84a8ec6 build(ios): include WeatherColor lifecycle header in Bazel core 2026-09-27 21:35:45 +09:00
tei
2e119961d9 release: prepare unified particle.16 2026-09-27 19:21:52 +09:00
14 changed files with 56 additions and 41 deletions

View File

@@ -670,6 +670,7 @@ MLN_CORE_HEADERS = [
"include/mbgl/particle/field/particle_gpu_math.hpp",
"include/mbgl/particle/field/field_binding.hpp",
"include/mbgl/particle/renderer_debug_counters.hpp",
"include/mbgl/renderer/layers/weather_color_texture_lifecycle.hpp",
"include/mbgl/particle/ingress/qbin_v2_decoder.hpp",
"include/mbgl/particle/ingress/qbin_v3_decoder.hpp",
"include/mbgl/particle/ingress/encoded_field_transport.hpp",

View File

@@ -65,3 +65,9 @@ RDC 已按顺序完成 OpenGL 与 Metal host 验证,结果均 PASS(各 6/6
- 已推送 `origin/particle/main`;`git ls-remote` 回读的远端 HEAD 为 `5af91fe7a105f0ac047e18db1dc063c9ffd69d44`。
- 验证结果补录提交:`4712e1752af2a8238def5839c8754270de4195c9`(`docs: 记录 V15 WeatherColor RDC 验证与推送`),包含 Step、完成报告、开发记录;推送后远端 HEAD 已回读为该提交。
- 未跟踪 V15 任务书未提交;V15 release tag 和发行内容未改。当前仍 **WAITING FOR MANUAL IPAD VALIDATION**。
## 2026-09-27 v16 发行构建兼容补充
- 统一发行 v16 的 Android 四 ABI 与 Maven Local 构建通过;首次 iOS Bazel 编译在 render_weather_color_layer.cpp 报找不到新增的 weather_color_texture_lifecycle.hpp。
- 根因:bazel/core.bzl 的 MLN_CORE_HEADERS 为显式清单,新增头文件未列入;仅追加该头文件路径,不改 WeatherColor 算法或公开 API。
- iOS Bazel 构建需由 RDC 在同一 v16 独立 worktree 重新验证;未通过前不得宣称 v16 发布或 iPad 修复通过。

View File

@@ -6,7 +6,7 @@ const marker = "// MapLibreParticleRNTestHost NavSea Particle release SDK";
module.exports = function withParticleNativeAndroid(config) {
return withProjectBuildGradle(config, (project) => {
if (project.modResults.contents.includes(marker)) return project;
project.modResults.contents += `\n${marker}\ngradle.projectsEvaluated {\n allprojects { p ->\n p.repositories.maven { repository -> repository.url = p.uri("https://pbf.jpcn.ccwu.cc/maven") }\n p.configurations.configureEach { configuration ->\n configuration.resolutionStrategy.dependencySubstitution {\n substitute module("org.maplibre.gl:android-sdk-opengl") using module("cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.15")\n }\n }\n }\n}\nrootProject.ext.set("org.maplibre.reactnative.nativeVersion", "13.4.1")\nrootProject.ext.set("org.maplibre.reactnative.nativeVariant", "opengl")\n`;
project.modResults.contents += `\n${marker}\ngradle.projectsEvaluated {\n allprojects { p ->\n p.repositories.maven { repository -> repository.url = p.uri("https://pbf.jpcn.ccwu.cc/maven") }\n p.configurations.configureEach { configuration ->\n configuration.resolutionStrategy.dependencySubstitution {\n substitute module("org.maplibre.gl:android-sdk-opengl") using module("cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.16")\n }\n }\n }\n}\nrootProject.ext.set("org.maplibre.reactnative.nativeVersion", "13.4.1")\nrootProject.ext.set("org.maplibre.reactnative.nativeVariant", "opengl")\n`;
return project;
});
};

View File

@@ -2,6 +2,9 @@
## Unreleased
## 13.4.1-particle.16(Android / iOS 统一发行)
- Mac unified release pipeline 统一生成 Android Native、RN package 与 iOS SwiftPM/XCFramework;共享 Particle revision 16。
## 13.4.1-particle.15(Android / iOS 统一发行)
- Mac unified release pipeline 统一生成 Android Native、RN package 与 iOS SwiftPM/XCFramework;共享 Particle revision 15。

View File

@@ -1,6 +1,6 @@
# @navsea/maplibre-particle-rn
当前版本:`13.4.1-particle.15`。Android Native 必须配套 `cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.15`。本包是 React Native 的薄控制面,不负责 Map 组件、provider、HTTP、manifest、下载、缓存或 NavSea 业务策略。
当前版本:`13.4.1-particle.16`。Android Native 必须配套 `cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.16`。本包是 React Native 的薄控制面,不负责 Map 组件、provider、HTTP、manifest、下载、缓存或 NavSea 业务策略。
## 当前推荐主链:QBIN V4
@@ -37,7 +37,7 @@ Podfile 的 `post_install do |installer|` 必须同时调用 `$MLRN.post_install
RN tgz:
```text
https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.15.tgz
https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.16.tgz
```
Native Maven repository:
@@ -49,7 +49,7 @@ https://pbf.jpcn.ccwu.cc/maven
Native coordinate:
```text
cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.15
cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.16
```
Expo plugin 与 `android/build.gradle` 必须指向同一 `.15`。正常 Consumer 不复制 AAR、不依赖 MapLibreParticleLab 源码路径,也不以 Maven Local 作为公网验证主路径。完整 Linux 发布与 Win11 验证流程见 `docs/50_Step记录/STEP-080_Android_AAR与RNTestHost标准构建流水线_v2.md`。
Expo plugin 与 `android/build.gradle` 必须指向同一 `.16`。正常 Consumer 不复制 AAR、不依赖 MapLibreParticleLab 源码路径,也不以 Maven Local 作为公网验证主路径。完整 Linux 发布与 Win11 验证流程见 `docs/50_Step记录/STEP-080_Android_AAR与RNTestHost标准构建流水线_v2.md`。

View File

@@ -14,7 +14,7 @@ android {
dependencies {
implementation "com.facebook.react:react-android"
implementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.20"
implementation "cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.15"
implementation "cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.16"
compileOnly project(":maplibre_maplibre-react-native")
testImplementation "junit:junit:4.13.2"
}

View File

@@ -20,7 +20,7 @@ const iosTag = "navsea-maplibre-particle-rn-maplibre-spm";
module.exports = function withNavSeaMapLibreParticle(config) {
config = withProjectBuildGradle(config, (project) => {
if (project.modResults.contents.includes(androidMarker)) return project;
project.modResults.contents += `\n${androidMarker}\ngradle.projectsEvaluated {\n allprojects { p ->\n p.repositories.maven { repository -> repository.url = p.uri("https://pbf.jpcn.ccwu.cc/maven") }\n p.configurations.configureEach { configuration ->\n configuration.resolutionStrategy.dependencySubstitution {\n substitute module("org.maplibre.gl:android-sdk-opengl") using module("cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.15")\n }\n }\n }\n}\nrootProject.ext.set("org.maplibre.reactnative.nativeVersion", "13.4.1")\nrootProject.ext.set("org.maplibre.reactnative.nativeVariant", "opengl")\n`;
project.modResults.contents += `\n${androidMarker}\ngradle.projectsEvaluated {\n allprojects { p ->\n p.repositories.maven { repository -> repository.url = p.uri("https://pbf.jpcn.ccwu.cc/maven") }\n p.configurations.configureEach { configuration ->\n configuration.resolutionStrategy.dependencySubstitution {\n substitute module("org.maplibre.gl:android-sdk-opengl") using module("cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.16")\n }\n }\n }\n}\nrootProject.ext.set("org.maplibre.reactnative.nativeVersion", "13.4.1")\nrootProject.ext.set("org.maplibre.reactnative.nativeVariant", "opengl")\n`;
return project;
});

View File

@@ -1,6 +1,6 @@
{
"name": "@navsea/maplibre-particle-rn",
"version": "13.4.1-particle.15",
"version": "13.4.1-particle.16",
"description": "NavSea MapLibre Particle React Native pure Field Renderer API.",
"license": "BSD-2-Clause",
"main": "src/index.ts",

View File

@@ -1 +1 @@
13.4.1-particle.15
13.4.1-particle.16

View File

@@ -9,8 +9,8 @@ let package = Package(
targets: [
.binaryTarget(
name: "MapLibre",
url: "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.15/MapLibre.dynamic.xcframework.zip",
checksum: "b7ac7135812474c4b3be708ad73dce9a9de51b6b21ee9d004bb0fe0d24b95187"
url: "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.16/MapLibre.dynamic.xcframework.zip",
checksum: "88f5b8190f2c7479b54c4a4cb51de372b61902d2a074b9522ccaaefd4d27afb8"
),
]
)

View File

@@ -1,14 +1,14 @@
# MapLibre Particle iOS 发行
当前正式发行:6.28.0-particle.15
当前正式发行:6.28.0-particle.16
- Renderer:Metal
- Product / Module:MapLibre
- Binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.15/MapLibre.dynamic.xcframework.zip
- SHA-256:b7ac7135812474c4b3be708ad73dce9a9de51b6b21ee9d004bb0fe0d24b95187
- Binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.16/MapLibre.dynamic.xcframework.zip
- SHA-256:88f5b8190f2c7479b54c4a4cb51de372b61902d2a074b9522ccaaefd4d27afb8
- SwiftPM:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git
- Exact Version:6.28.0-particle.15
- Source Commit:1fdc5df625d405233703136eb2dc12032d932da2
- Exact Version:6.28.0-particle.16
- Source Commit:e9f84a8ec6aa99a308af30c1957e83c31ec5f23f
构建命令固定为:

View File

@@ -1,19 +1,19 @@
{
"schemaVersion": 2,
"status": "PUBLISHED_PUBLIC_READBACK_PASS",
"distributionVersion": "6.28.0-particle.15",
"distributionVersion": "6.28.0-particle.16",
"moduleName": "MapLibre",
"artifact": {
"fileName": "MapLibre.dynamic.xcframework.zip",
"sizeBytes": 8442304,
"sha256": "b7ac7135812474c4b3be708ad73dce9a9de51b6b21ee9d004bb0fe0d24b95187",
"url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.15/MapLibre.dynamic.xcframework.zip"
"sizeBytes": 8442202,
"sha256": "88f5b8190f2c7479b54c4a4cb51de372b61902d2a074b9522ccaaefd4d27afb8",
"url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.16/MapLibre.dynamic.xcframework.zip"
},
"sourceCommit": "1fdc5df625d405233703136eb2dc12032d932da2",
"sourceCommit": "e9f84a8ec6aa99a308af30c1957e83c31ec5f23f",
"swiftPackage": {
"url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git",
"requirement": "exactVersion",
"version": "6.28.0-particle.15",
"version": "6.28.0-particle.16",
"productName": "MapLibre"
},
"notes": "Metal renderer release built with bazel build --//:renderer=metal //platform/ios:MapLibre.dynamic"

View File

@@ -1,48 +1,48 @@
{
"schemaVersion": 2,
"releaseState": "PUBLISHED_PUBLIC_READBACK_PASS",
"particleRevision": 15,
"sourceCommit": "1fdc5df625d405233703136eb2dc12032d932da2",
"generatedAtUtc": "2026-09-27T02:09:49.101248+00:00",
"particleRevision": 16,
"sourceCommit": "e9f84a8ec6aa99a308af30c1957e83c31ec5f23f",
"generatedAtUtc": "2026-09-27T13:34:02.735946+00:00",
"reactNative": {
"name": "@navsea/maplibre-particle-rn",
"version": "13.4.1-particle.15",
"version": "13.4.1-particle.16",
"artifact": {
"fileName": "navsea-maplibre-particle-rn-13.4.1-particle.15.tgz",
"sizeBytes": 28281,
"sha256": "3a2047da561adb5781b3e720a6cfb6a52fb9d5a2fae4ca91a8c29b215a77be61",
"url": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.15.tgz"
"fileName": "navsea-maplibre-particle-rn-13.4.1-particle.16.tgz",
"sizeBytes": 28295,
"sha256": "0016dd4719cbe02decaa940abbac2b2589448f0cc11f3944132d8e08627d627d",
"url": "https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.16.tgz"
},
"mapLibreReactNative": "11.3.6"
},
"android": {
"version": "13.4.1-particle.15",
"coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.15",
"version": "13.4.1-particle.16",
"coordinate": "cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.16",
"renderer": "opengl",
"artifact": {
"fileName": "android-sdk-particle-opengl-13.4.1-particle.15.aar",
"sizeBytes": 170089903,
"sha256": "225dfce5614d0a6ee3504cb388fe7b79dcb1d0cef8742125cfb75866b337d2f7",
"url": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.4.1-particle.15/android-sdk-particle-opengl-13.4.1-particle.15.aar"
"fileName": "android-sdk-particle-opengl-13.4.1-particle.16.aar",
"sizeBytes": 170123246,
"sha256": "d39f8f4d0f96898874a0869823e02a51ecd985a877d88407f10f8b0130892380",
"url": "https://pbf.jpcn.ccwu.cc/maven/cc/navsea/maplibre/android-sdk-particle-opengl/13.4.1-particle.16/android-sdk-particle-opengl-13.4.1-particle.16.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.15",
"distributionVersion": "6.28.0-particle.16",
"renderer": "metal",
"moduleName": "MapLibre",
"artifact": {
"fileName": "MapLibre.dynamic.xcframework.zip",
"sizeBytes": 8442304,
"sha256": "b7ac7135812474c4b3be708ad73dce9a9de51b6b21ee9d004bb0fe0d24b95187",
"url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.15/MapLibre.dynamic.xcframework.zip"
"sizeBytes": 8442202,
"sha256": "88f5b8190f2c7479b54c4a4cb51de372b61902d2a074b9522ccaaefd4d27afb8",
"url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle/6.28.0-particle.16/MapLibre.dynamic.xcframework.zip"
},
"swiftPackage": {
"url": "https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git",
"requirement": "exactVersion",
"version": "6.28.0-particle.15",
"version": "6.28.0-particle.16",
"productName": "MapLibre"
},
"xcode": "Xcode 26.3 Build version 17C529 ",

View File

@@ -1017,3 +1017,8 @@ Android V3-08 单次综合验收已完成并关闭。Native `13.4.1-particle.2`
- scoped commit `5af91fe7a105f0ac047e18db1dc063c9ffd69d44` 已推送 `origin/particle/main`,推送后 `git ls-remote` 回读同一 HEAD。当前只等待用户手工 iPad 验收。
- 验证结果补录提交 `4712e1752af2a8238def5839c8754270de4195c9` 已推送,远端回读同一 HEAD;随后仅更新报告/Step 的当前状态措辞。
- Step:`docs/50_Step记录/V15_iOS_WeatherColor纹理生命周期修复_v1.md`;完成报告:`docs/报告/V15_iOS_WeatherColor纹理生命周期修复_Codex完成报告_v1.md`。
### 2026-09-27 v16 统一发行 Bazel 头文件清单修复
- 统一发行 Android 四 ABI 和 Maven Local 通过;首次 iOS Metal Bazel 在 render_weather_color_layer.cpp 编译时找不到新增 WeatherColor lifecycle 头文件。
- 在 bazel/core.bzl 的 MLN_CORE_HEADERS 精确登记该头文件;保留 WeatherColor 业务实现不变。由 RDC 重跑完整 v16 构建、公开回读,iPad 人工验收仍待执行。