import java.io.FileInputStream import java.util.Date import java.util.Properties @Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed plugins { alias(libs.plugins.com.android.application) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) alias(libs.plugins.ksp) alias(libs.plugins.kotlin.serialization) //alias(libs.plugins.protobuf) } val releaseTime = Date().time val keystorePropertiesFile: File = rootProject.file("keystore.properties") val keystoreProperties = Properties() keystoreProperties.load(FileInputStream(keystorePropertiesFile)) android { namespace = "com.hefengbao.jingmo" compileSdk = 34 buildToolsVersion = "34.0.0" defaultConfig { applicationId = "com.hefengbao.jingmo" minSdk = 26 targetSdk = 34 versionCode = 12 versionName = "1.10.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "room.schemaLocation" to "$projectDir/schemas", "room.incremental" to "true" ) } } /*ndk { // 设置支持的SO库架构 abiFilters += setOf( "armeabi", "x86", "arm64-v8a", "x86_64" )//, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' }*/ } signingConfigs { create("release") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } buildTypes { debug { applicationIdSuffix = ".debug" } release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) signingConfig = signingConfigs.getByName("release") applicationVariants.all { val buildType = this.buildType.name outputs.all { if (this is com.android.build.gradle.internal.api.ApkVariantOutputImpl) { outputFileName = "jingmo_v${defaultConfig.versionName}_$buildType.apk" } } } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { compose = true buildConfig = true } composeOptions { // 参考 https://developer.android.google.cn/jetpack/androidx/releases/compose-kotlin kotlinCompilerExtensionVersion = "1.5.10" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } ksp { arg(RoomSchemaArgProvider(File(projectDir, "schemas"))) } } dependencies { implementation(libs.accompanist.permissions) implementation(libs.core.ktx) implementation(libs.lifecycle.runtime.ktx) implementation(libs.activity.compose) implementation(platform(libs.compose.bom)) implementation(libs.ui) implementation(libs.ui.graphics) implementation(libs.ui.tooling.preview) implementation(libs.material3) implementation(libs.material.iconsExtended) implementation(libs.hilt.android) ksp(libs.hilt.compiler) implementation(libs.room.ktx) implementation(libs.room.runtime) implementation(libs.room.paging) ksp(libs.room.compiler) implementation(libs.androidx.hilt.navigation.compose) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.core.splashscreen) implementation(libs.androidx.datastore.preferences) implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.paging.compose) implementation(libs.androidx.paging.runtime) implementation(libs.androidx.dataStore.core) //implementation(libs.protobuf.kotlin.lite) implementation(libs.capturable) implementation(libs.retrofit) implementation(libs.okhttp.logging) implementation(libs.retrofit.kotlin.serialization) implementation(libs.coil.compose) implementation(libs.coil.svg) implementation(libs.hutool) testImplementation(libs.junit) androidTestImplementation(libs.androidx.test.ext.junit) androidTestImplementation(libs.espresso.core) androidTestImplementation(platform(libs.compose.bom)) androidTestImplementation(libs.ui.test.junit4) debugImplementation(libs.ui.tooling) debugImplementation(libs.ui.test.manifest) implementation(libs.bugly) // 暂时使用,修复 LinearProgressIndicator 调用时的 NoSuchMethodError: No virtual method androidx/compose/animation/core/KeyframesSpec 错误 implementation("androidx.compose.foundation:foundation:1.7.0-alpha02") // For AppWidgets support implementation(libs.androidx.glance.appwidget) // For interop APIs with Material 3 implementation(libs.androidx.glance.material3) } class RoomSchemaArgProvider( @get:InputDirectory @get:PathSensitive(PathSensitivity.RELATIVE) val schemaDir: File, ) : CommandLineArgumentProvider { override fun asArguments() = listOf("room.schemaLocation=${schemaDir.path}") }