Files
coco 723ce1af5c a
2026-07-03 15:12:48 +08:00

176 lines
4.5 KiB
Kotlin

import com.android.build.api.variant.FilterConfiguration
import io.gitlab.arturbosch.detekt.Detekt
import org.apache.commons.io.output.ByteArrayOutputStream
plugins {
alias(libs.plugins.ksp)
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.kotlin.compose.compiler)
alias(libs.plugins.room)
alias(libs.plugins.detekt)
alias(libs.plugins.about.libraries)
}
android {
namespace = "live.mehiz.mpvkt"
compileSdk = 35
defaultConfig {
applicationId = "live.mehiz.mpvkt"
minSdk = 21
targetSdk = 35
versionCode = 12
versionName = "0.1.6"
vectorDrawables {
useSupportLibrary = true
}
// buildConfigField("String", "GIT_SHA", "\"${getCommitSha()}\"")
// buildConfigField("int", "GIT_COUNT", getCommitCount())
}
splits {
abi {
isEnable = true
reset()
include("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
isUniversalApk = true
}
}
buildTypes {
named("release") {
isMinifyEnabled = true
isShrinkResources = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
}
// create("preview") {
// initWith(getByName("release"))
//
// signingConfig = signingConfigs["debug"]
// applicationIdSuffix = ".preview"
// versionNameSuffix = "-${getCommitCount()}"
// }
named("debug") {
applicationIdSuffix = ".debug"
// versionNameSuffix = "-${getCommitCount()}"
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
buildFeatures {
compose = true
viewBinding = true
buildConfig = true
}
composeCompiler {
includeSourceInformation = true
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
val abiCodes = mapOf(
"armeabi-v7a" to 1,
"arm64-v8a" to 2,
"x86" to 3,
"x86_64" to 4,
)
androidComponents {
onVariants { variant ->
variant.outputs.forEach { output ->
val abi = output.filters.find { it.filterType == FilterConfiguration.FilterType.ABI }?.identifier
output.versionCode.set((output.versionCode.orNull ?: 0) * 10 + (abiCodes[abi] ?: 0))
}
}
}
androidResources {
generateLocaleConfig = true
}
}
room {
schemaDirectory("$projectDir/schemas")
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.material3.android)
implementation(libs.androidx.ui.tooling.preview)
debugImplementation(libs.androidx.ui.tooling)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.compose.constraintlayout)
implementation(libs.androidx.material3.icons.extended)
implementation(libs.androidx.compose.animation.graphics)
implementation(libs.material)
implementation(libs.androidx.preferences.ktx)
implementation(libs.mediasession)
implementation(libs.mpv.lib)
implementation(libs.seeker)
implementation(libs.bundles.koin)
implementation(libs.bundles.voyager)
implementation(libs.compose.prefs)
implementation(libs.bundles.about.libs)
implementation(libs.simple.icons)
implementation(libs.room.runtime)
ksp(libs.room.compiler)
implementation(libs.room.ktx)
implementation(libs.detekt.gradle.plugin)
detektPlugins(libs.detekt.rules.compose)
detektPlugins(libs.detekt.formatter)
implementation(libs.kotlinx.immutable.collections)
implementation(libs.truetype.parser)
implementation(libs.fsaf)
}
detekt {
parallel = true
allRules = false
buildUponDefaultConfig = true
config.setFrom("$rootDir/config/detekt/detekt.yml")
}
tasks.withType<Detekt>().configureEach {
setSource(files(project.projectDir))
exclude("**/build/**")
reports {
html.required.set(true)
md.required.set(true)
}
}
//fun getCommitCount(): String = runCommand("git rev-list --count HEAD")
//fun getCommitSha(): String = runCommand("git rev-parse --short HEAD")
//fun runCommand(command: String): String {
// val stdOut = ByteArrayOutputStream()
// exec {
// commandLine = command.split(' ')
// standardOutput = stdOut
// }
// return String(stdOut.toByteArray()).trim()
//}
aboutLibraries {
excludeFields = arrayOf("generated")
}