The library was recently converted to Kotlin Multiplatform. The name of the library was also changed to MVIKotlin, from my point of view it works better for the new format. The previous versions of MVIDroid (Android only) are still available though. You can find MVIDroid README here, and docs here.
MVIKotlin is a Kotlin Multiplatform framework that provides a way of (not only) writing shared code using MVI pattern. It also includes powerful debug tools like logging and time travel. The main functionality of the framework does not depend on any reactive nor coroutines library. Extensions for Reaktive and for Coroutines libraries are provided as separate modules.
Recommended minimum Gradle version is 5.3. Please read first the documentation about metadata publishing mode.
Add Bintray repository into your root build.gradle file:
repositories {
maven {
url "https://dl.bintray.com/arkivanov/maven"
}
}
There are a number of modules published:
mvikotlin
- core interfaces and functionality (multiplatform)mvikotlin-main
- the main module with the defaultStore
implementation (mutiplatform)mvikotlin-logging
- logging functionality (mutiplatform)mvikotlin-timetravel
- time travel feature (mutiplatform)mvikotlin-extensions-reaktive
- extensions set for Reaktive library (multiplatform)mvikotlin-extensions-coroutines
- extensions set for coroutines (multiplatform)rx
- a tiny module with abstractions over rx and coroutines (multiplatform)
Add required modules to your module`s build.gradle file:
implementation "com.arkivanov.mvikotlin:<module-name>:<version>"
- Multiplatform: Android, JVM, JavaScript, iosX64, iosArm64, linuxX64
- Does not depend on any reactive library or coroutines
- Extensions for Reaktive library
- Extensions for Coroutines
- Multithreading friendly (freezable in Kotlin Native if needed)
- Logging functionality with adjustable verboseness and ability to provide custom logger
- Time travel feature:
- Multiplatform for all supported targets
- Plug-and-play UI for Android
- Plug-and-play UI for iOS (copy-paste from the sample app)
- Export/import events for JVM and Android
Coming soon, the code is documented though.
The sample project is a todo list with details view.
- Shared module using Reaktive is here
- Shared module using coroutines is here
- Sample Android application with both Reaktive and coroutines implementations, plus logging and time travel is here
- Sample iOS application with Reaktive implementation only, plus logging and time travel is here
Twitter: @arkann1985