Note
This library currently is for my personal usage only. I do use it in production, but have not yet documented it properly.
| Module | android | iOS | windows | wasm | Notes |
|---|---|---|---|---|---|
| core | โ | โ | โ | โ | the core module |
| app-shared | โ | โ | โ | โ | the common base app module |
| app-jre | โ | โ | โ | โ | the base app module (for plain jre, no jbr dependencies) |
| app-jbr | โ | โ | โ | โ | the base app module (for jbr) |
| ui | โ | โ | โ | โ | a ui module |
| ui-adaptive | โ | โ | โ | โ | a adaptive ui module |
| zip | โ | โ | โ | โ | a zip module |
| csv | โ | โ | โ | โ | a csv module |
| backup | โ | โ | โ | โ | a backup module |
| service | โ | โ | โ | โ | a service module |
| form | โ | โ | โ | โ | a form module |
| powershell | โ | โ | โ | โ | a powershell module |
| table | โ | โ | โ | โ | a table module |
| room | โ | โ | โ | โ | provides room database classes |
| ads | โ | โ | โ | โ | provides ads composables |
| proversion | โ | โ | โ | โ | provides proversion checker functions (via openiap) |
| diff | โ | โ | โ | โ | diff functions and UI |
| excel | โ | โ | โ | โ | excel functions |
| coil | โ | โ | โ | โ | a coil module |
| Dependency | Version |
|---|---|
| Kotlin | 2.4.20 |
| Jetbrains Compose | 1.12.0 |
| Jetbrains Compose Material3 | 1.9.0 |
โ ๏ธ Following experimental annotations are used:
- OptIn
androidx.compose.animation.ExperimentalSharedTransitionApi(2x)androidx.compose.foundation.ExperimentalFoundationApi(1x)androidx.compose.foundation.layout.ExperimentalLayoutApi(1x)androidx.compose.material3.ExperimentalMaterial3Api(18x)androidx.compose.ui.ExperimentalComposeUiApi(12x)app.lexilabs.basic.ads.DependsOnGoogleMobileAds(3x)app.lexilabs.basic.ads.DependsOnGoogleUserMessagingPlatform(6x)cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi(4x)ExperimentalWasmJsInterop(1x)kotlin.time.ExperimentalTime(15x)kotlin.uuid.ExperimentalUuidApi(2x)kotlinx.cinterop.ExperimentalForeignApi(2x)kotlinx.coroutines.FlowPreview(1x)- Experimental
androidx.compose.material3.ExperimentalMaterial3Api(1x)I try to use as less experimental features as possible, but in this case the ones above are needed!
Using Version Catalogs
Define the dependencies inside your libs.versions.toml file.
[versions]
toolbox = "<LATEST-VERSION>"
[libraries]
toolbox-core = { module = "io.github.mflisar.toolbox:core", version.ref = "toolbox" }
toolbox-app-shared = { module = "io.github.mflisar.toolbox:app-shared", version.ref = "toolbox" }
toolbox-app-jre = { module = "io.github.mflisar.toolbox:app-jre", version.ref = "toolbox" }
toolbox-app-jbr = { module = "io.github.mflisar.toolbox:app-jbr", version.ref = "toolbox" }
toolbox-ui = { module = "io.github.mflisar.toolbox:ui", version.ref = "toolbox" }
toolbox-ui-adaptive = { module = "io.github.mflisar.toolbox:ui-adaptive", version.ref = "toolbox" }
toolbox-zip = { module = "io.github.mflisar.toolbox:zip", version.ref = "toolbox" }
toolbox-csv = { module = "io.github.mflisar.toolbox:csv", version.ref = "toolbox" }
toolbox-backup = { module = "io.github.mflisar.toolbox:backup", version.ref = "toolbox" }
toolbox-service = { module = "io.github.mflisar.toolbox:service", version.ref = "toolbox" }
toolbox-form = { module = "io.github.mflisar.toolbox:form", version.ref = "toolbox" }
toolbox-powershell = { module = "io.github.mflisar.toolbox:powershell", version.ref = "toolbox" }
toolbox-table = { module = "io.github.mflisar.toolbox:table", version.ref = "toolbox" }
toolbox-room = { module = "io.github.mflisar.toolbox:room", version.ref = "toolbox" }
toolbox-ads = { module = "io.github.mflisar.toolbox:ads", version.ref = "toolbox" }
toolbox-proversion = { module = "io.github.mflisar.toolbox:proversion", version.ref = "toolbox" }
toolbox-diff = { module = "io.github.mflisar.toolbox:diff", version.ref = "toolbox" }
toolbox-excel = { module = "io.github.mflisar.toolbox:excel", version.ref = "toolbox" }
toolbox-coil = { module = "io.github.mflisar.toolbox:coil", version.ref = "toolbox" }And then use the definitions in your projects build.gradle.kts file like following:
implementation(libs.toolbox.core)
implementation(libs.toolbox.app.shared)
implementation(libs.toolbox.app.jre)
implementation(libs.toolbox.app.jbr)
implementation(libs.toolbox.ui)
implementation(libs.toolbox.ui.adaptive)
implementation(libs.toolbox.zip)
implementation(libs.toolbox.csv)
implementation(libs.toolbox.backup)
implementation(libs.toolbox.service)
implementation(libs.toolbox.form)
implementation(libs.toolbox.powershell)
implementation(libs.toolbox.table)
implementation(libs.toolbox.room)
implementation(libs.toolbox.ads)
implementation(libs.toolbox.proversion)
implementation(libs.toolbox.diff)
implementation(libs.toolbox.excel)
implementation(libs.toolbox.coil)Direct Dependency Notation
Simply add the dependencies inside your build.gradle.kts file.
val toolbox = "<LATEST-VERSION>"
implementation("io.github.mflisar.toolbox:core:${toolbox}")
implementation("io.github.mflisar.toolbox:app-shared:${toolbox}")
implementation("io.github.mflisar.toolbox:app-jre:${toolbox}")
implementation("io.github.mflisar.toolbox:app-jbr:${toolbox}")
implementation("io.github.mflisar.toolbox:ui:${toolbox}")
implementation("io.github.mflisar.toolbox:ui-adaptive:${toolbox}")
implementation("io.github.mflisar.toolbox:zip:${toolbox}")
implementation("io.github.mflisar.toolbox:csv:${toolbox}")
implementation("io.github.mflisar.toolbox:backup:${toolbox}")
implementation("io.github.mflisar.toolbox:service:${toolbox}")
implementation("io.github.mflisar.toolbox:form:${toolbox}")
implementation("io.github.mflisar.toolbox:powershell:${toolbox}")
implementation("io.github.mflisar.toolbox:table:${toolbox}")
implementation("io.github.mflisar.toolbox:room:${toolbox}")
implementation("io.github.mflisar.toolbox:ads:${toolbox}")
implementation("io.github.mflisar.toolbox:proversion:${toolbox}")
implementation("io.github.mflisar.toolbox:diff:${toolbox}")
implementation("io.github.mflisar.toolbox:excel:${toolbox}")
implementation("io.github.mflisar.toolbox:coil:${toolbox}")Important
NOT DOCUMENTED
A full demo is included inside the demo module, it shows nearly every usage with working examples.
Check out the API documentation.
You can find more of my multiplatform libraries that work well together here.
When combining my libraries, you can find compatibility information here.