diff --git a/CHANGELOG.md b/CHANGELOG.md index a8d7c4d5..eaff0f55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ All notable changes to this project will be documented in this file. +## [3.0.24] - 2026-04-28 + +### Bug Fixes +- **bundle-update (Android)**: Annotate `BundleUpdateStoreAndroid.getCurrentBundleMainJSBundle` / `getCurrentBundleBackgroundJSBundle` / `getCurrentBundleCommonJSBundle` with `@JvmStatic` so external modules (notably `SplitBundleLoaderModule`) can invoke them via `Class.getMethod(...).invoke(null, ctx)`. Without `@JvmStatic` the Kotlin `object` members are instance methods on the singleton, the null-receiver reflection call throws NPE, and OTA segment lookup silently falls back to APK builtin assets — so a freshly-installed three-bundle OTA would keep loading the IPA/APK common bundle and crash on moduleId mismatch with the OTA-loaded main. + +### Chores +- Bump all packages to 3.0.24. + +## [3.0.23] - 2026-04-24 + +### Bug Fixes +- **bundle-update (Android)**: Avoid nested-comment trigger in `validateWebEmbedSha256` KDoc. Kotlin block comments nest, so a bare `**` inside a `/** ... */` KDoc (as in `web-embed/**`) is lexed as a nested comment opener; the outer closing `*/` only decrements depth to 1, swallowing the rest of the file — including `fun validateWebEmbedSha256` and `fun isDevSettingsEnabled` — as comment body until EOF, which surfaced as cascading Android release errors (`Missing '}'`, `Unclosed comment`, two `Unresolved reference`). Rewrite the sentence in prose so the glob no longer appears in the KDoc body. + +### Chores +- Bump all packages to 3.0.23. + ## [3.0.22] - 2026-04-24 ### Documentation diff --git a/native-modules/native-logger/package.json b/native-modules/native-logger/package.json index 26d2de48..cd7fcced 100644 --- a/native-modules/native-logger/package.json +++ b/native-modules/native-logger/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-native-logger", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-native-logger", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-aes-crypto/package.json b/native-modules/react-native-aes-crypto/package.json index 8bd332a3..44a7e22b 100644 --- a/native-modules/react-native-aes-crypto/package.json +++ b/native-modules/react-native-aes-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-aes-crypto", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-aes-crypto", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-app-update/package.json b/native-modules/react-native-app-update/package.json index 6d226d27..a63229a0 100644 --- a/native-modules/react-native-app-update/package.json +++ b/native-modules/react-native-app-update/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-app-update", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-app-update", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-async-storage/package.json b/native-modules/react-native-async-storage/package.json index 610aa60d..5c2b7771 100644 --- a/native-modules/react-native-async-storage/package.json +++ b/native-modules/react-native-async-storage/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-async-storage", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-async-storage", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-background-thread/package.json b/native-modules/react-native-background-thread/package.json index bf203d18..dc54e7b7 100644 --- a/native-modules/react-native-background-thread/package.json +++ b/native-modules/react-native-background-thread/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-background-thread", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-background-thread", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", @@ -84,7 +84,7 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-bundle-update": ">=3.0.22", + "@onekeyfe/react-native-bundle-update": ">=3.0.24", "react": "*", "react-native": "*" }, diff --git a/native-modules/react-native-bundle-update/android/src/main/java/com/margelo/nitro/reactnativebundleupdate/ReactNativeBundleUpdate.kt b/native-modules/react-native-bundle-update/android/src/main/java/com/margelo/nitro/reactnativebundleupdate/ReactNativeBundleUpdate.kt index 675baddb..abe9e1f2 100644 --- a/native-modules/react-native-bundle-update/android/src/main/java/com/margelo/nitro/reactnativebundleupdate/ReactNativeBundleUpdate.kt +++ b/native-modules/react-native-bundle-update/android/src/main/java/com/margelo/nitro/reactnativebundleupdate/ReactNativeBundleUpdate.kt @@ -943,14 +943,23 @@ object BundleUpdateStoreAndroid { return entryFile.absolutePath } + // @JvmStatic exposes these entry-point getters as true JVM-static methods + // so SplitBundleLoaderModule (and any future external module) can call them + // via Class.getMethod(...).invoke(null, ctx) reflection. Without it, Kotlin + // `object` members are INSTANCE methods on the singleton, the null-receiver + // invoke throws NPE, and the OTA segment lookup silently falls back to APK + // builtin assets — see #SBL-OTA-FALLBACK regression report. + @JvmStatic fun getCurrentBundleMainJSBundle(context: Context): String? { return getCurrentBundleEntryPath(context, MAIN_JS_BUNDLE_FILE_NAME) } + @JvmStatic fun getCurrentBundleBackgroundJSBundle(context: Context): String? { return getCurrentBundleEntryPath(context, BACKGROUND_BUNDLE_FILE_NAME) } + @JvmStatic fun getCurrentBundleCommonJSBundle(context: Context): String? { return getCurrentBundleEntryPath(context, COMMON_BUNDLE_FILE_NAME) } @@ -990,11 +999,12 @@ object BundleUpdateStoreAndroid { } /** - * Walks bundleDir/web-embed/** and verifies every file's sha256 against - * the metadata entry (key is the bundle-relative path). Also rejects - * files on disk that aren't listed in metadata, and metadata entries - * whose backing file is missing. Returns true when web-embed is absent - * from both disk and metadata (bundles without web-embed). + * Walks every file under bundleDir/web-embed/ recursively and verifies + * each file's sha256 against the metadata entry (key is the bundle-relative + * path). Also rejects files on disk that aren't listed in metadata, and + * metadata entries whose backing file is missing. Returns true when + * web-embed is absent from both disk and metadata (bundles without + * web-embed). */ fun validateWebEmbedSha256(bundleDir: String, metadata: Map): Boolean { val webEmbedRoot = File(bundleDir, "web-embed") diff --git a/native-modules/react-native-bundle-update/package.json b/native-modules/react-native-bundle-update/package.json index c0bf54ed..774e313e 100644 --- a/native-modules/react-native-bundle-update/package.json +++ b/native-modules/react-native-bundle-update/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-bundle-update", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-bundle-update", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-check-biometric-auth-changed/package.json b/native-modules/react-native-check-biometric-auth-changed/package.json index 2fae38ca..e5fe1f27 100644 --- a/native-modules/react-native-check-biometric-auth-changed/package.json +++ b/native-modules/react-native-check-biometric-auth-changed/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-check-biometric-auth-changed", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-check-biometric-auth-changed", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-cloud-fs/package.json b/native-modules/react-native-cloud-fs/package.json index f06439ff..5b6ac2a9 100644 --- a/native-modules/react-native-cloud-fs/package.json +++ b/native-modules/react-native-cloud-fs/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-cloud-fs", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-cloud-fs TurboModule for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-cloud-kit-module/package.json b/native-modules/react-native-cloud-kit-module/package.json index 9b922378..1a80b667 100644 --- a/native-modules/react-native-cloud-kit-module/package.json +++ b/native-modules/react-native-cloud-kit-module/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-cloud-kit-module", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-cloud-kit-module", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-device-utils/package.json b/native-modules/react-native-device-utils/package.json index 45e369da..3b32087b 100644 --- a/native-modules/react-native-device-utils/package.json +++ b/native-modules/react-native-device-utils/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-device-utils", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-device-utils", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-dns-lookup/package.json b/native-modules/react-native-dns-lookup/package.json index c1336f5f..3b9e5873 100644 --- a/native-modules/react-native-dns-lookup/package.json +++ b/native-modules/react-native-dns-lookup/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-dns-lookup", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-dns-lookup", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-get-random-values/package.json b/native-modules/react-native-get-random-values/package.json index f96679e5..b67ddc0f 100644 --- a/native-modules/react-native-get-random-values/package.json +++ b/native-modules/react-native-get-random-values/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-get-random-values", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-get-random-values", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-keychain-module/package.json b/native-modules/react-native-keychain-module/package.json index 16bb2a1d..1e933725 100644 --- a/native-modules/react-native-keychain-module/package.json +++ b/native-modules/react-native-keychain-module/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-keychain-module", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-keychain-module", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-lite-card/package.json b/native-modules/react-native-lite-card/package.json index abb90cf0..36c8a9c0 100644 --- a/native-modules/react-native-lite-card/package.json +++ b/native-modules/react-native-lite-card/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-lite-card", - "version": "3.0.22", + "version": "3.0.24", "description": "lite card", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-network-info/package.json b/native-modules/react-native-network-info/package.json index c8547123..a0092d0d 100644 --- a/native-modules/react-native-network-info/package.json +++ b/native-modules/react-native-network-info/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-network-info", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-network-info", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-pbkdf2/package.json b/native-modules/react-native-pbkdf2/package.json index 987b54cb..ea923f88 100644 --- a/native-modules/react-native-pbkdf2/package.json +++ b/native-modules/react-native-pbkdf2/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-pbkdf2", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-pbkdf2", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-perf-memory/package.json b/native-modules/react-native-perf-memory/package.json index 0e1682fc..54ab0bf3 100644 --- a/native-modules/react-native-perf-memory/package.json +++ b/native-modules/react-native-perf-memory/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-perf-memory", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-perf-memory", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-ping/package.json b/native-modules/react-native-ping/package.json index 28f363e3..5ae9fba2 100644 --- a/native-modules/react-native-ping/package.json +++ b/native-modules/react-native-ping/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-ping", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-ping TurboModule for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-splash-screen/package.json b/native-modules/react-native-splash-screen/package.json index 3a4aae07..3f4477b6 100644 --- a/native-modules/react-native-splash-screen/package.json +++ b/native-modules/react-native-splash-screen/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-splash-screen", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-splash-screen", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-split-bundle-loader/package.json b/native-modules/react-native-split-bundle-loader/package.json index 30375f56..49c08a37 100644 --- a/native-modules/react-native-split-bundle-loader/package.json +++ b/native-modules/react-native-split-bundle-loader/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-split-bundle-loader", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-split-bundle-loader", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", @@ -82,7 +82,7 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-bundle-update": ">=3.0.22", + "@onekeyfe/react-native-bundle-update": ">=3.0.24", "react": "*", "react-native": "*" }, diff --git a/native-modules/react-native-tcp-socket/package.json b/native-modules/react-native-tcp-socket/package.json index 13039f93..2b26a16b 100644 --- a/native-modules/react-native-tcp-socket/package.json +++ b/native-modules/react-native-tcp-socket/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-tcp-socket", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-tcp-socket", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-zip-archive/package.json b/native-modules/react-native-zip-archive/package.json index 70195923..eec87202 100644 --- a/native-modules/react-native-zip-archive/package.json +++ b/native-modules/react-native-zip-archive/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-zip-archive", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-zip-archive TurboModule for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-auto-size-input/package.json b/native-views/react-native-auto-size-input/package.json index e4a1414f..d4477a8b 100644 --- a/native-views/react-native-auto-size-input/package.json +++ b/native-views/react-native-auto-size-input/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-auto-size-input", - "version": "3.0.22", + "version": "3.0.24", "description": "Auto-sizing text input with font scaling, prefix and suffix support", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-pager-view/package.json b/native-views/react-native-pager-view/package.json index bd31b425..0fc73972 100644 --- a/native-views/react-native-pager-view/package.json +++ b/native-views/react-native-pager-view/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-pager-view", - "version": "3.0.22", + "version": "3.0.24", "description": "React Native wrapper for Android and iOS ViewPager", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/native-views/react-native-scroll-guard/package.json b/native-views/react-native-scroll-guard/package.json index 654889b7..f33e5fd0 100644 --- a/native-views/react-native-scroll-guard/package.json +++ b/native-views/react-native-scroll-guard/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-scroll-guard", - "version": "3.0.22", + "version": "3.0.24", "description": "A native view wrapper that prevents parent scrollable containers (PagerView/ViewPager2) from intercepting child scroll gestures", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-skeleton/package.json b/native-views/react-native-skeleton/package.json index baf3e866..eb454add 100644 --- a/native-views/react-native-skeleton/package.json +++ b/native-views/react-native-skeleton/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-skeleton", - "version": "3.0.22", + "version": "3.0.24", "description": "react-native-skeleton", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-tab-view/package.json b/native-views/react-native-tab-view/package.json index 7230a40d..3de6306c 100644 --- a/native-views/react-native-tab-view/package.json +++ b/native-views/react-native-tab-view/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-tab-view", - "version": "3.0.22", + "version": "3.0.24", "description": "Native Bottom Tabs for React Native (UIKit implementation)", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/yarn.lock b/yarn.lock index 21dddd9e..f9e32990 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2993,7 +2993,7 @@ __metadata: turbo: "npm:^2.5.6" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-bundle-update": ">=3.0.22" + "@onekeyfe/react-native-bundle-update": ">=3.0.24" react: "*" react-native: "*" languageName: unknown @@ -3583,7 +3583,7 @@ __metadata: turbo: "npm:^2.5.6" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-bundle-update": ">=3.0.22" + "@onekeyfe/react-native-bundle-update": ">=3.0.24" react: "*" react-native: "*" languageName: unknown