Document KMP in the root readmes and complete the v2.4.1 release settings. Automatically transfer completed Gradle maven-publish uploads from the OSSRH Staging API to Central Portal, removing the manual curl step while keeping user-managed review as the default.
Add Android source JARs, support the existing repository credentials and file-based Gradle signing for KMP, and avoid shared signature outputs across target publications.
Fix Android and iOS KMP API parity, empty-byte handling, handler behavior, and runtime version metadata. Harden standalone native interop and Maven Central publication, add smoke tests and publishing documentation, and validate the published package on a physical iPhone.
Keys longer than 65531 bytes cause keySize and computedKVSize (both uint16_t)
to wrap around, silently corrupting the internal offset so that subsequent reads
return garbage. Reject keys exceeding the safe threshold (UINT16_MAX - 4) at
all write and parse entry points.
Move source files from darwin/Classes/ to the SPM-compatible layout
under darwin/mmkv_ios/Sources/mmkv_ios/. Add Package.swift with MMKV
dependency from GitHub. Update podspec paths so CocoaPods still works
as a fallback.
Provide a language-agnostic C99 bridge using standard C types (const char*,
void*, int64_t, etc.) so MMKV Core can be consumed from C-only environments
- Core/cbridge/MMKVBridge.h: pure C header with mmkv_ prefixed API
- Core/cbridge/MMKVBridge.cpp: implementation wrapping MMKV C++ API
- POSIX/demo/demo_c.c: pure C demo exercising all API surface
- CMakeLists.txt updates for core library and demo_c target
KMP module at KMP/ exposes a Kotlin-idiomatic API in commonMain (com.tencent.mmkv.kmp),
with platform-specific implementations:
- androidMain: delegates to the existing com.tencent:mmkv Java library
- darwinMain: uses Kotlin/Native ObjC interop with the MMKV CocoaPod
Includes a Compose Multiplatform sample app (KMP/sample/) that demonstrates
MMKV initialization, encode/decode for all primitive types, named instances,
and key management on both Android and iOS.
Replace 4 separate static function pointers (LogHandler, ErrorHandler,
ContentChangeHandler, ContentLoadedHandler) with a single MMKVHandler
abstract class in Core C++. Update all 6 platform wrappers (iOS, Android,
OHOS, Python, Golang, Flutter) to use adapter classes bridging to the new
unified handler. Add onMMKVContentLoadSuccessfully callback to Android,
OHOS, Flutter, Python and Golang where it was previously missing.