Files
BiliRoaming/app/build.gradle.kts
T
Zhaohui Huang d5d3e61e30
Android CI / build (push) Has been cancelled
backup repo
2026-07-06 19:09:41 -11:00

187 lines
4.3 KiB
Kotlin

import com.google.protobuf.gradle.*
plugins {
alias(libs.plugins.agp.app)
alias(libs.plugins.kotlin)
alias(libs.plugins.protobuf)
alias(libs.plugins.lsplugin.resopt)
alias(libs.plugins.lsplugin.jgit)
alias(libs.plugins.lsplugin.apksign)
alias(libs.plugins.lsplugin.apktransform)
alias(libs.plugins.lsplugin.cmaker)
}
val appVerCode = jgit.repo()?.commitCount("refs/remotes/origin/master") ?: 0
val appVerName: String by rootProject
apksign {
storeFileProperty = "releaseStoreFile"
storePasswordProperty = "releaseStorePassword"
keyAliasProperty = "releaseKeyAlias"
keyPasswordProperty = "releaseKeyPassword"
}
apktransform {
copy {
when (it.buildType) {
"release" -> file("${it.name}/BiliRoaming_${appVerName}.apk")
else -> null
}
}
}
cmaker {
default {
targets("biliroaming")
abiFilters("armeabi-v7a", "arm64-v8a", "x86")
arguments += arrayOf(
"-DANDROID_STL=none",
"-DCMAKE_CXX_STANDARD=23",
"-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON",
)
cFlags += "-flto"
cppFlags += "-flto"
}
buildTypes {
arguments += "-DDEBUG_SYMBOLS_PATH=${layout.buildDirectory.file("symbols/${it.name}").get().asFile.absolutePath}"
}
}
android {
namespace = "me.iacn.biliroaming"
compileSdk = 35
buildToolsVersion = "35.0.0"
ndkVersion = "29.0.14206865"
buildFeatures {
prefab = true
buildConfig = true
}
defaultConfig {
applicationId = "me.iacn.biliroaming"
minSdk = 24
targetSdk = 35 // Target Android U
versionCode = appVerCode
versionName = appVerName
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles("proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility(JavaVersion.VERSION_11)
targetCompatibility(JavaVersion.VERSION_11)
}
kotlinOptions {
jvmTarget = "11"
freeCompilerArgs = listOf(
"-Xno-param-assertions",
"-Xno-call-assertions",
"-Xno-receiver-assertions",
"-language-version=2.0",
)
}
sourceSets {
named("main") {
proto {
srcDir("src/main/proto")
include("**/*.proto")
}
}
}
packaging {
resources {
excludes += "**"
}
}
lint {
checkReleaseBuilds = false
}
dependenciesInfo {
includeInApk = false
}
androidResources {
additionalParameters += arrayOf("--allow-reserved-package-id", "--package-id", "0x23")
}
externalNativeBuild {
cmake {
path("src/main/jni/CMakeLists.txt")
version = "4.1.0+"
}
}
}
protobuf {
protoc {
artifact = libs.protobuf.protoc.get().toString()
}
generateProtoTasks {
all().forEach { task ->
task.builtins {
id("java") {
option("lite")
}
id("kotlin") {
option("lite")
}
}
}
}
}
configurations.all {
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk7")
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
}
dependencies {
compileOnly(libs.xposed)
implementation(libs.protobuf.kotlin)
implementation(libs.protobuf.java)
compileOnly(libs.protobuf.protoc)
implementation(libs.kotlin.stdlib)
implementation(libs.kotlin.coroutines.android)
implementation(libs.kotlin.coroutines.jdk)
implementation(libs.androidx.documentfile)
implementation(libs.cxx)
implementation(libs.okhttp)
}
val adbExecutable: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath
val restartBiliBili = task("restartBiliBili").apply {
doLast {
exec {
commandLine(adbExecutable, "shell", "am", "force-stop", "tv.danmaku.bili")
}
exec {
commandLine(
adbExecutable,
"shell",
"am",
"start",
"$(pm resolve-activity --components tv.danmaku.bili)"
)
}
}
}
afterEvaluate {
tasks.getByPath("installDebug").finalizedBy(restartBiliBili)
}