mirror of
https://github.com/AdrianKuta/Tree-Data-Structure.git
synced 2026-06-19 19:00:14 +02:00
Add the `android` target to the Compose Multiplatform library and a sensible
default renderer, so the largest Compose audience is a first-class consumer.
- Core `tree-structure` and `tree-structure-compose` now build and publish an
`-android` variant (compileSdk 35, minSdk 21). The core needs it too: its
inline `tree { }` DSL is built per target, and Android consumers (JVM 11/17)
cannot inline a JVM-21 build.
- `TreeNodeRow`: a foundation-only default node row (clickable, indented, with a
`▾`/`▸` marker, no Material dependency), plus a no-content `LazyTree(root,
label = …)` overload that uses it. The existing lambda overload is unchanged.
- New `samples` Android app module demonstrating `LazyTree` + `@Preview`
(not published; excluded from API validation).
- Toolchain: Gradle wrapper 8.5 -> 8.10.2, Android Gradle Plugin 8.7.2.
- binary-compatibility-validator now emits per-target dumps (api/jvm, api/android)
for the two multi-JVM-target modules; CI assembles the Android outputs.
109 lines
3.0 KiB
Kotlin
109 lines
3.0 KiB
Kotlin
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
|
|
|
|
plugins {
|
|
alias(libs.plugins.kotlinMultiplatform)
|
|
alias(libs.plugins.androidLibrary)
|
|
alias(libs.plugins.composeMultiplatform)
|
|
alias(libs.plugins.composeCompiler)
|
|
alias(libs.plugins.dokka)
|
|
alias(libs.plugins.mavenPublish)
|
|
signing
|
|
}
|
|
|
|
group = "com.github.adriankuta"
|
|
version = rootProject.version
|
|
|
|
mavenPublishing {
|
|
publishToMavenCentral(automaticRelease = false)
|
|
signAllPublications()
|
|
|
|
coordinates("com.github.adriankuta", "tree-structure-compose", version.toString())
|
|
|
|
pom {
|
|
name.set("Tree Data Structure — Compose Multiplatform")
|
|
description.set("A LazyTree composable (expand/collapse, lazy rendering) for the tree-structure library.")
|
|
url.set("https://github.com/AdrianKuta/Tree-Data-Structure")
|
|
licenses {
|
|
license {
|
|
name.set("MIT License")
|
|
url.set("https://opensource.org/licenses/MIT")
|
|
distribution.set("repo")
|
|
}
|
|
}
|
|
developers {
|
|
developer {
|
|
id.set("AdrianKuta")
|
|
name.set("Adrian Kuta")
|
|
email.set("adrian.kuta93@gmail.com")
|
|
}
|
|
}
|
|
scm {
|
|
url.set("https://github.com/AdrianKuta/Tree-Data-Structure")
|
|
connection.set("scm:git:https://github.com/AdrianKuta/Tree-Data-Structure.git")
|
|
developerConnection.set("scm:git:ssh://git@github.com/AdrianKuta/Tree-Data-Structure.git")
|
|
}
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
google()
|
|
}
|
|
|
|
dokka {
|
|
dokkaSourceSets.configureEach {
|
|
sourceLink {
|
|
// Resolve this module's GitHub source path relative to the repo root.
|
|
localDirectory.set(projectDir.resolve("src"))
|
|
val module = projectDir.relativeTo(rootDir).invariantSeparatorsPath
|
|
val prefix = if (module.isEmpty()) "" else "$module/"
|
|
remoteUrl("https://github.com/AdrianKuta/Tree-Data-Structure/blob/master/${prefix}src")
|
|
remoteLineSuffix.set("#L")
|
|
}
|
|
}
|
|
}
|
|
|
|
kotlin {
|
|
explicitApi()
|
|
jvmToolchain(21)
|
|
|
|
jvm()
|
|
|
|
androidTarget {
|
|
publishLibraryVariants("release")
|
|
// Match the Android variant's Kotlin bytecode to the Java level set in compileOptions.
|
|
compilerOptions {
|
|
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
|
|
}
|
|
}
|
|
|
|
@OptIn(ExperimentalWasmDsl::class)
|
|
wasmJs {
|
|
browser()
|
|
}
|
|
|
|
iosX64()
|
|
iosArm64()
|
|
iosSimulatorArm64()
|
|
|
|
sourceSets {
|
|
commonMain.dependencies {
|
|
api(project(":"))
|
|
implementation(compose.runtime)
|
|
implementation(compose.foundation)
|
|
}
|
|
}
|
|
}
|
|
|
|
android {
|
|
namespace = "com.github.adriankuta.datastructure.tree.compose"
|
|
compileSdk = libs.versions.androidCompileSdk.get().toInt()
|
|
defaultConfig {
|
|
minSdk = libs.versions.androidMinSdk.get().toInt()
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
}
|