mmkv-kotlin

所属分类:iPhone/iOS
开发工具:kotlin
文件大小:0KB
下载次数:0
上传日期:2023-11-24 08:47:36
上 传 者sh-1993
说明:  MMKV的Kotlin多平台包装器。
(The Kotlin Multiplatform wrapper for MMKV.)

文件列表:
CHANGELOG.md (1832, 2023-11-27)
LICENSE.txt (11340, 2023-11-27)
build.gradle.kts (344, 2023-11-27)
gradle.properties (455, 2023-11-27)
gradle/ (0, 2023-11-27)
gradle/wrapper/ (0, 2023-11-27)
gradle/wrapper/gradle-wrapper.jar (59203, 2023-11-27)
gradle/wrapper/gradle-wrapper.properties (230, 2023-11-27)
gradlew (5766, 2023-11-27)
gradlew.bat (2763, 2023-11-27)
mmkv-kotlin/ (0, 2023-11-27)
mmkv-kotlin/MMKV_Kotlin.podspec (2265, 2023-11-27)
mmkv-kotlin/build.gradle.kts (4353, 2023-11-27)
mmkv-kotlin/src/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/AndroidManifest.xml (356, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/com/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/com/ctrip/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/com/ctrip/flight/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/com/ctrip/flight/mmkv/ (0, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/com/ctrip/flight/mmkv/MMKVKMMTestAndroid.kt (4400, 2023-11-27)
mmkv-kotlin/src/androidInstrumentedTest/kotlin/com/ctrip/flight/mmkv/MMKVTestService.kt (1950, 2023-11-27)
mmkv-kotlin/src/androidMain/ (0, 2023-11-27)
mmkv-kotlin/src/androidMain/AndroidManifest.xml (83, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/ (0, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ (0, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ctrip/ (0, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ctrip/flight/ (0, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ctrip/flight/mmkv/ (0, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ctrip/flight/mmkv/CreatorAndroid.kt (1503, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ctrip/flight/mmkv/ExtensionAndroid.kt (1019, 2023-11-27)
mmkv-kotlin/src/androidMain/kotlin/com/ctrip/flight/mmkv/InitializerAndroid.kt (1710, 2023-11-27)
... ...

# MMKV for Kotlin Multiplatform 中文版本请参看[这里](https://github.com/ctripcorp/mmkv-kotlin/blob/master/README_CN.md) MMKV for Kotlin Multiplatform is a wrapper for [MMKV](https://github.com/ctripcorp/mmkv-kotlin/blob/master/https://github.com/Tencent/MMKV) using Kotlin API, developed by Ctrip Flight mobile team. Currently Android/iOS/macOS are supported. ## Tutorial ### Installation Via Maven in Gradle Kotlin Multiplatform Common (kts): ```kotlin dependencies { implementation("com.ctrip.flight.mmkv:mmkv-kotlin:1.2.10") } ``` Current version based on `Kotlin 1.9.21` and `MMKV 1.3.2`. Pure Android platform (kts): ```kotlin dependencies { implementation("com.ctrip.flight.mmkv:mmkv-kotlin-android:1.2.10") } ``` Kotlin/Native on macOS: ```kotlin dependencies { // Intel Chip implementation("com.ctrip.flight.mmkv:mmkv-kotlin-macosx64:1.2.10") // M1&M2 Chip implementation("com.ctrip.flight.mmkv:mmkv-kotlin-macosarm64:1.2.10") } ``` Note, if your project is a Kotlin/Native executable program project of macOS or it supply a framework to a iOS application project directly, then you need to manually add dependency on MMKV, and may need add `linkerOpts` on MMKV and MMKVCore: ```kotlin kotlin { macosX64 { binaries { // ...... all { val moduleName = "mmkv_operator" val mmkvPath = "${buildDir.absolutePath}/cocoapods/synthetic/OSX/$moduleName/build/Release/MMKV" val mmkvCorePath = "${buildDir.absolutePath}/cocoapods/synthetic/OSX/$moduleName//build/Release/MMKVCore" linkerOpts += listOf( "-F$mmkvPath", "-rpath", mmkvPath, "-framework", "MMKV", "-F$mmkvCorePath", "-rpath", mmkvCorePath, "-framework", "MMKVCore" ) } } } cocoapods { // ...... pod(name = "MMKV") { version = "1.2.16" moduleName = "MMKV" } } // ...... } ``` ### Initialization and Configure Root Path You can initialize MMKV when app or process initialization. [MMKV-Android](https://github.com/ctripcorp/mmkv-kotlin/blob/master/https://github.com/Tencent/MMKV/tree/master/Android/MMKV) initialization API depends on [Context](https://github.com/ctripcorp/mmkv-kotlin/blob/master/https://developer.android.com/reference/android/content/Context). So, Android's initialization API is different from iOS. Android: ```kotlin import com.ctrip.flight.mmkv.initialize // In Android source set fun initializeMMKV(context: Context) { val rootDir = initialize(context) Log.d("MMKV Path", rootDir) } ``` iOS: ```kotlin import com.ctrip.flight.mmkv.initialize // In iOS source set fun initializeMMKV(rootDir: String) { initialize(rootDir) println("MMKV Path: $rootDir") } ``` You also could call [MMKV-Android](https://github.com/ctripcorp/mmkv-kotlin/blob/master/https://github.com/Tencent/MMKV/tree/master/Android/MMKV) (Java) or [MMKV-iOS](https://github.com/ctripcorp/mmkv-kotlin/blob/master/https://github.com/Tencent/MMKV/tree/master/iOS) (Objective-C) initialization API in your Android or iOS app project. ### CRUD Operations - MMKV has a **global instance**, you can use it directly:: ```kotlin import com.ctrip.flight.mmkv.defaultMMKV fun demo() { val kv = defaultMMKV() kv.set("Boolean", true) println("Boolean: ${kv.takeBoolean("Boolean")}") kv.set("Int", Int.MIN_VALUE) println("Int: ${kv.takeInt("Int")}") kv.set("Long", Long.MAX_VALUE) println("Long: ${kv.takeLong("Long")}") kv.set("Float", -3.14f) println("Float: ${kv.takeFloat("Float")}") kv.set("Double", Double.MIN_VALUE) println("Double: ${kv.takeDouble("Double")}") kv.set("String", "Hello from mmkv") println("String: ${kv.takeString("String")}") val bytes = byteArrayOf( 'm'.code.toByte(), 'm'.code.toByte(), 'k'.code.toByte(), 'v'.code.toByte(), ) kv.set("ByteArray", bytes) println("ByteArray: ${kv.takeByteArray("ByteArray")?.toString()}") } ``` - **Deleting & Judging(Whether the key is exist):** ```kotlin kv.removeValueForKey("Boolean") println("Boolean: ${kv.takeBoolean("Boolean")}") kv.removeValuesForKeys(listOf("Int", "Long")) println("allKeys: ${kv.allKeys()}") val hasBoolean = kv.containsKey("Boolean") ``` - If different modules/logics need **isolated storage**, you can also create your own MMKV instance separately: ```kotlin import com.ctrip.flight.mmkv.mmkvWithID ... val kvWithMyId = mmkvWithID("MyID") kvWithMyId.set("Boolean", true) ``` - If **multi-process accessing** is needed, you can set `MMKVMode.MULTI_PROCESS` on MMKV initialization: ```kotlin import com.ctrip.flight.mmkv.mmkvWithID import com.ctrip.flight.mmkv.MMKVModel ... val kvMultiProcess = mmkvWithID("InterProcessKV", MMKVModel.MULTI_PROCESS) kvMultiProcess.set("Boolean", true) ``` ## Supported Types * Supported Kotlin types in Kotlin Multiplatform common source set: * `Boolean, Int, Long, Float, Double, String, UInt, ULong, ByteArray, Set` * The following types are additionally supported in the Android source set: * `Any class that implements Parcelable` * The following types are additionally supported in the Apple source set: * `NSDate and any class that implements NSCoding protocol` ## Note - MMKV-Kotlin currently does not support migrating old data from SharedPreferences and NSUserDefaults. ## License Distributed under the [Apache License, Version 2.0](https://github.com/ctripcorp/mmkv-kotlin/blob/master/https://www.apache.org/licenses/LICENSE-2.0). See [LICENSE](https://github.com/ctripcorp/mmkv-kotlin/blob/master/LICENSE.txt) for more information.

近期下载者

相关文件


收藏者