plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.serialization) } // The app carries the desktop app's version from Cargo.toml: 0.1.9-local is // versionName 0.1.9-local and versionCode 1009 (major * 1000000 + minor * 1000 + patch). val desktopVersion: String = providers.fileContents(rootProject.layout.projectDirectory.file("../Cargo.toml")) .asText.get().lineSequence() .firstNotNullOf { Regex("""^version\s*=\s*"(.+)"""").find(it)?.groupValues?.get(1) } val desktopVersionCode: Int = desktopVersion.substringBefore('-').substringBefore('+').split('.').map(String::toInt) .let { (major, minor, patch) -> require(minor < 1000 && patch < 1000) { "Version $desktopVersion doesn't fit a versionCode" } major * 1_000_000 + minor * 1_000 + patch } android { namespace = "cc.vectrum.code" compileSdk = 37 defaultConfig { applicationId = "cc.vectrum.code" minSdk = 29 targetSdk = 37 versionCode = desktopVersionCode versionName = desktopVersion } buildFeatures { compose = true } testOptions { unitTests.isReturnDefaultValues = true } buildTypes { release { isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") // Signed with the debug key until there's an upload key. signingConfig = signingConfigs.getByName("debug") } } } dependencies { implementation(libs.androidx.activity.compose) implementation(libs.compose.runtime) implementation(libs.compose.foundation) implementation(libs.compose.ui) implementation(libs.compose.ui.text) implementation(libs.coroutines.android) implementation(libs.serialization.json) implementation(libs.okhttp) implementation(libs.code.scanner) testImplementation(libs.junit) }