[versions] sdk-compile = "35" sdk-min = "21" sdk-target = "35" app-namespace = "sh.kau.playground" app-version-code = "1" app-version-name = "23.062.000" agp = "8.7.3" # android-gradle-plugin kotlin = "2.0.20" ksp = "2.0.20-1.0.25" # issue: https://github.com/google/ksp/issues/2072 kotlin-bcv = "0.13.2" kotlin-dataframe = "0.13.1" kotlin-inject = "0.7.2" kotlin-inject-anvil = "0.1.0" activityCompose = "1.9.3" lint = "31.7.3" # = agp + 23.0.0 androidxLifecycle = "2.8.7" androidxTest = "1.6.2" composeBom = "2024.11.00" # https://developer.android.com/jetpack/compose/bom/bom-mapping composeNavigation = "2.8.4" desugarJdk = "2.1.3" espresso = "3.6.1" junit = "4.13.2" secretsGradlePlugin = "2.0.1" spotless = "6.15.0" junitVersion = "1.2.1" [libraries] ## Dependencies of the included build-logic gradle-plugin-android = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" } gradle-plugin-kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } ## Android androidx-core-ktx = { module = "androidx.core:core-ktx", version = "1.15.0" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } androidx-lifecycle-compiler = { group = "androidx.lifecycle", name = "lifecycle-compiler", version.ref = "androidxLifecycle" } androidx-lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime", version.ref = "androidxLifecycle" } androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidxLifecycle" } androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidxLifecycle" } compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeBom" } compose-ui = { module = "androidx.compose.ui:ui" } compose-material = { module = "androidx.compose.material3:material3" } compose-foundation = { module = "androidx.compose.foundation:foundation" } compose-tooling = { module = "androidx.compose.ui:ui-tooling" } compose-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } compose-tools-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } compose-navigation = { module = "androidx.navigation:navigation-compose", version.ref = "composeNavigation" } desugar-jdk-lib = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugarJdk" } lint-api = { group = "com.android.tools.lint", name = "lint-api", version.ref = "lint" } lint-checks = { group = "com.android.tools.lint", name = "lint-checks", version.ref = "lint" } lint-cli = { group = "com.android.tools.lint", name = "lint", version.ref = "lint" } lint-tests = { group = "com.android.tools.lint", name = "lint-tests", version.ref = "lint" } ## Testing compose-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } compose-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } atsl-runner = { group = "androidx.test", name = "runner", version.ref = "androidxTest" } # Non Android kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlin" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8" } coroutines-bom = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-bom", version = "1.9.0" } coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core" } coroutines-android = { module = "org.jetbrains.kotlin:kotlinx-coroutines-android" } coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test" } kotlin-inject-compiler = { group = "me.tatarka.inject", name = "kotlin-inject-compiler-ksp", version.ref = "kotlin-inject" } kotlin-inject-runtime = { group = "me.tatarka.inject", name = "kotlin-inject-runtime", version.ref = "kotlin-inject" } kotlin-inject-anvil-compiler = { group = "software.amazon.lastmile.kotlin.inject.anvil", name = "compiler", version.ref = "kotlin-inject-anvil" } kotlin-inject-anvil-runtime = { group = "software.amazon.lastmile.kotlin.inject.anvil", name = "runtime", version.ref = "kotlin-inject-anvil" } kotlin-inject-anvil-runtime-utils = { group = "software.amazon.lastmile.kotlin.inject.anvil", name = "runtime-optional", version.ref = "kotlin-inject-anvil" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.7.3" } ktor-bom = { module = "io.ktor:ktor-bom", version = "3.0.1" } ktor-client-android = { module = "io.ktor:ktor-client-android" } ktor-client-core = { module = "io.ktor:ktor-client-core" } ktor-client-cio = { module = "io.ktor:ktor-client-cio" } ktor-client-serialization = { module = "io.ktor:ktor-client-serialization" } ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation" } ktor-client-resources = { module = "io.ktor:ktor-client-resources" } ktor-client-logging = { module = "io.ktor:ktor-client-logging" } ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json" } logcat = { group = "com.squareup.logcat", name = "logcat", version = "0.1" } ## Testing junit = { group = "junit", name = "junit", version.ref = "junit" } [bundles] compose = [ "androidx-core-ktx", "androidx-lifecycle-runtime-ktx", "androidx-activity-compose", "compose-ui", # main APIs for the underlying toolkit systems "compose-material", # material 3 design system # "compose-tools", # "compose-material-window", # "accompanist-swiperefresh", # "accompanist-systemuicontroller" ] compose-navigation = [ "compose-navigation", "kotlinx-serialization-json", ] kotlin-inject = [ "kotlin-inject-runtime", "kotlin-inject-anvil-runtime", "kotlin-inject-anvil-runtime-utils", ] kotlin-inject-compiler = [ "kotlin-inject-compiler", "kotlin-inject-anvil-compiler", ] ktor = [ "ktor-client-android", # ktor engine "ktor-client-content-negotiation", # serialization "ktor-serialization-kotlinx-json", # json content negotiation using kotlinx-serialization "ktor-client-logging", # "ktor-client-core", # ktor core # "ktor-client-serialization", # "ktor-client-resources", # "kotlinx-serialization-json", # compose-navigation includes this ] lint-api = [ "kotlin-stdlib", "lint-api", # You typically don't need this one, but it does have some utilities # like the API database that some lint checks may want to use #"lint-checks", ] lint-tests = [ "junit", "lint-cli", "lint-tests" ] [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } android-lint = { id = "com.android.lint", version.ref = "agp" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } # for jvm only kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } # for andorid projects kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-kmp = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } # for multiplatform projects kotlin-compatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlin-bcv" } kotlin-dataframe = { id = "org.jetbrains.kotlinx.dataframe", version.ref = "kotlin-dataframe" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } # compose-navigation + ktor ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } secrets-gradle-plugin = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secretsGradlePlugin" }