trime/app/build.gradle.kts
2026-11-01 15:05:35 +08:00

183 lines
5.6 KiB
Plaintext

/*
* SPDX-FileCopyrightText: 2015 - 2025 Rime community
* SPDX-License-Identifier: GPL-3.0-or-later
*/
@file:Suppress("UnstableApiUsage")
plugins {
id("com.osfans.trime.app-convention")
id("com.osfans.trime.native-app-convention")
id("com.osfans.trime.data-checksums")
id("com.osfans.trime.native-cache-hash")
id("com.osfans.trime.opencc-data")
alias(libs.plugins.aboutlibraries)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.ksp)
}
android {
namespace = "com.osfans.trime"
compileSdk = 37
buildToolsVersion = "37.0.0"
defaultConfig {
applicationId = "com.osfans.trime"
minSdk = 26
targetSdk = 37
versionCode = 20270101
versionName = "3.3.14"
multiDexEnabled = true
buildConfigField("String", "BUILDER", "\"${project.builder}\"")
buildConfigField("long", "BUILD_TIMESTAMP", project.buildTimestamp)
buildConfigField("String", "BUILD_COMMIT_HASH", "\"${project.buildCommitHash}\"")
buildConfigField("String", "BUILD_GIT_REPO", "\"${project.buildGitRepo}\"")
buildConfigField("String", "BUILD_VERSION_NAME", "\"${project.buildVersionName}\"")
}
base {
// https://www.norio.be/blog/archivesBaseName-removed-from-gradle9.html
archivesName = "${android.defaultConfig.applicationId}-$buildVersionName"
}
buildFeatures {
buildConfig = true
viewBinding = true
resValues = true
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
signingConfig =
project.signKeyFile?.let {
signingConfigs.create("release") {
storeFile = it
storePassword = project.signKeyStorePwd
keyAlias = project.signKeyAlias
keyPassword = project.signKeyPwd
}
}
resValue("string", "trime_app_name", "@string/app_name_release")
}
debug {
applicationIdSuffix = ".debug"
resValue("string", "trime_app_name", "@string/app_name_debug")
}
all {
// remove META-INF/version-control-info.textproto
@Suppress("UnstableApiUsage")
vcsInfo.include = false
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
testOptions {
unitTests.all {
it.useJUnitPlatform()
}
}
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
packaging {
resources {
excludes +=
setOf(
"/META-INF/*.version",
"/META-INF/*.kotlin_module", // cannot be excluded actually
"/META-INF/androidx/**",
"/DebugProbesKt.bin",
"/kotlin-tooling-metadata.json",
)
}
}
}
aboutLibraries {
collect {
configPath.set(file("licenses").takeIf { it.exists() })
fetchRemoteLicense.set(false)
fetchRemoteFunding.set(false)
includePlatform.set(false)
}
export {
excludeFields.set(
setOf("generated", "developers", "organization", "scm", "funding", "content"),
)
}
}
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
}
dependencies {
ksp(project(":codegen"))
implementation(libs.kotlinx.coroutines)
implementation(libs.kotlinx.serialization.json)
implementation(libs.androidx.activity)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.autofill)
implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.core)
implementation(libs.androidx.navigation.fragment)
implementation(libs.androidx.navigation.ui)
implementation(libs.androidx.paging.runtime.ktx)
implementation(libs.androidx.preference)
implementation(libs.androidx.recyclerview)
ksp(libs.androidx.room.compiler)
implementation(libs.androidx.room.runtime)
implementation(libs.androidx.room.ktx)
implementation(libs.androidx.room.paging)
implementation(libs.androidx.viewpager2)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.flexbox)
implementation(libs.bravh)
implementation(libs.timber)
implementation(libs.xxpermissions)
implementation(libs.kodein.di)
implementation(libs.kaml)
implementation(libs.storageaccess)
implementation(libs.splitties.bitflags)
implementation(libs.splitties.systemservices)
implementation(libs.splitties.views.dsl)
implementation(libs.splitties.views.dsl.constraintlayout)
implementation(libs.splitties.views.dsl.coordinatorlayout)
implementation(libs.splitties.views.dsl.recyclerview)
implementation(libs.splitties.views.recyclerview)
implementation(libs.aboutlibraries.core)
implementation(libs.iconics.core)
implementation(libs.community.material.typeface) {
artifact { type = "aar" }
}
// Testing
testImplementation(libs.junit)
testImplementation(libs.kotest.runner.junit5)
testImplementation(libs.kotest.assertions.core)
androidTestImplementation(libs.junit)
}
configurations {
all {
// remove Baseline Profile Installer or whatever it is...
exclude(group = "androidx.profileinstaller", module = "profileinstaller")
}
}