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.
近期下载者:
相关文件:
收藏者: