import java.text.SimpleDateFormat import java.util.Date import java.util.Properties import java.io.File plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.compose) } val versionPropsFile = file("version.properties") fun getVersionCode(): Int { val props = Properties() if (versionPropsFile.exists()) { props.load(versionPropsFile.inputStream()) } val code = props.getProperty("VERSION_CODE", "1").toInt() props.setProperty("VERSION_CODE", (code + 1).toString()) props.store(versionPropsFile.outputStream(), null) return code } fun getVersionName(): String { val props = Properties() if (versionPropsFile.exists()) { props.load(versionPropsFile.inputStream()) } return props.getProperty("VERSION_NAME", "1.2") } val autoVersionCode = getVersionCode() val autoVersionName = getVersionName() android { namespace = "com.example.ops_android" compileSdk = 36 defaultConfig { applicationId = "com.example.ops_android" minSdk = 24 targetSdk = 36 versionCode = autoVersionCode versionName = autoVersionName testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "AUTHOR", "\"无闻风\"") buildConfigField("String", "BUILD_DATE", "\"${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}\"") } buildTypes { release { optimization { enable = false } isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } debug { applicationIdSuffix = ".debug" versionNameSuffix = "-debug" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { compose = true buildConfig = true } } androidComponents { onVariants { variant -> variant.outputs.forEach { output -> val buildType = variant.buildType val date = SimpleDateFormat("yyyyMMdd").format(Date()) output.outputFileName.set("PDA_Printer_Test_v${autoVersionName}_${autoVersionCode}_${buildType}_${date}.apk") } } } dependencies { implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.activity.compose) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material.icons.extended) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.datastore.preferences) implementation(libs.retrofit) implementation(libs.retrofit.converter.gson) implementation(libs.okhttp) implementation(libs.okhttp.logging.interceptor) implementation(libs.gson) implementation(libs.coil.compose) implementation(libs.camerax.camera2) implementation(libs.camerax.lifecycle) implementation(libs.camerax.view) implementation(libs.mlkit.barcode.scanning) implementation(libs.kotlinx.coroutines.android) implementation(files("libs/lcprintsdk-release.aar")) testImplementation(libs.junit) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.compose.ui.test.junit4) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.junit) debugImplementation(libs.androidx.compose.ui.test.manifest) debugImplementation(libs.androidx.compose.ui.tooling) }