plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.devtools.ksp") } ksp { arg("room.schemaLocation", "$projectDir/schemas") } val baseVersionName = "1.0.1" val commitHash by lazy { "git rev-parse --short HEAD".exec() } val verCode by lazy { "git rev-list --count HEAD".exec().toInt() } android { namespace = "cn.super12138.todo" compileSdk = 34 defaultConfig { applicationId = "cn.super12138.todo" minSdk = 24 targetSdk = 34 versionCode = verCode versionName = "${baseVersionName}-${commitHash}" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" base.archivesName.set("todo-${baseVersionName}") } buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { viewBinding = true } } dependencies { // AndroidX implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.appcompat:appcompat:1.6.1") implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.fragment:fragment:1.6.2") implementation("androidx.fragment:fragment-ktx:1.6.2") implementation("androidx.recyclerview:recyclerview:1.3.2") implementation("androidx.lifecycle:lifecycle-viewmodel:2.7.0") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0") implementation("androidx.preference:preference:1.2.1") implementation("androidx.preference:preference-ktx:1.2.1") // Material Design implementation("com.google.android.material:material:1.12.0-alpha03") // Room implementation("androidx.room:room-runtime:2.6.1") implementation("androidx.room:room-ktx:2.6.1") annotationProcessor("androidx.room:room-compiler:2.6.1") ksp("androidx.room:room-compiler:2.6.1") // Test testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") } fun String.exec(): String = exec(this) @Suppress("UnstableApiUsage") fun Project.exec(command: String): String = providers.exec { commandLine(command.split(" ")) }.standardOutput.asText.get().trim()