LSPlant/lsplant/build.gradle.kts

171 lines
4.7 KiB
Plaintext
Raw Normal View History

2022-02-20 23:53:06 +08:00
plugins {
2023-06-27 15:52:48 +08:00
alias(libs.plugins.agp.lib)
2023-06-27 16:34:32 +08:00
alias(libs.plugins.lsplugin.jgit)
alias(libs.plugins.lsplugin.publish)
alias(libs.plugins.lsplugin.cmaker)
`maven-publish`
signing
2022-11-29 15:32:02 +08:00
}
2022-02-20 23:53:06 +08:00
val androidTargetSdkVersion: Int by rootProject.extra
val androidMinSdkVersion: Int by rootProject.extra
val androidBuildToolsVersion: String by rootProject.extra
val androidCompileSdkVersion: Int by rootProject.extra
val androidNdkVersion: String by rootProject.extra
val androidCmakeVersion: String by rootProject.extra
android {
compileSdk = androidCompileSdkVersion
ndkVersion = androidNdkVersion
buildToolsVersion = androidBuildToolsVersion
buildFeatures {
2022-02-21 04:58:03 +08:00
buildConfig = false
2022-02-20 23:53:06 +08:00
prefabPublishing = true
2022-02-21 23:00:24 +08:00
androidResources = false
prefab = true
2022-02-20 23:53:06 +08:00
}
2023-06-27 15:38:44 +08:00
packaging {
2022-02-20 23:53:06 +08:00
jniLibs {
excludes += "**.so"
}
}
prefab {
register("lsplant") {
headers = "src/main/jni/include"
}
}
defaultConfig {
minSdk = androidMinSdkVersion
}
buildTypes {
2022-09-16 19:48:49 +08:00
create("standalone") {
initWith(getByName("release"))
2023-06-27 16:34:32 +08:00
matchingFallbacks += "release"
2022-02-20 23:53:06 +08:00
}
}
lint {
abortOnError = true
checkReleaseBuilds = false
}
externalNativeBuild {
cmake {
path = file("src/main/jni/CMakeLists.txt")
version = androidCmakeVersion
}
}
2022-05-20 17:47:05 +08:00
namespace = "org.lsposed.lsplant"
2022-02-21 04:58:03 +08:00
publishing {
singleVariant("release") {
withSourcesJar()
withJavadocJar()
}
singleVariant("standalone") {
withSourcesJar()
withJavadocJar()
}
2022-02-21 04:58:03 +08:00
}
}
2023-06-27 16:34:32 +08:00
cmaker {
default {
val flags = arrayOf(
"-Werror",
"-Wno-gnu-string-literal-operator-template",
)
abiFilters("armeabi-v7a", "arm64-v8a", "x86", "x86_64", "riscv64")
2023-06-27 16:34:32 +08:00
cppFlags += flags
cFlags += flags
}
buildTypes {
when (it.name) {
"debug", "release" -> {
arguments += "-DANDROID_STL=c++_shared"
2024-06-04 21:06:35 +08:00
arguments += "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
2023-06-27 16:34:32 +08:00
}
"standalone" -> {
arguments += "-DANDROID_STL=none"
arguments += "-DLSPLANT_STANDALONE=ON"
2024-06-04 21:06:35 +08:00
arguments += "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
2023-06-27 16:34:32 +08:00
}
}
2024-02-18 18:59:11 +08:00
arguments += "-DDEBUG_SYMBOLS_PATH=${project.layout.buildDirectory.file("symbols/${it.name}").get().asFile.absolutePath}"
2023-06-27 16:34:32 +08:00
}
}
dependencies {
"standaloneCompileOnly"(libs.cxx)
}
val symbolsReleaseTask = tasks.register<Jar>("generateReleaseSymbolsJar") {
2024-02-18 18:59:11 +08:00
from(project.layout.buildDirectory.file("symbols/release"))
2022-02-21 23:00:24 +08:00
exclude("**/dex_builder")
archiveClassifier = "symbols"
archiveBaseName = "release"
2022-02-21 23:00:24 +08:00
}
val symbolsStandaloneTask = tasks.register<Jar>("generateStandaloneSymbolsJar") {
2024-02-18 18:59:11 +08:00
from(project.layout.buildDirectory.file("symbols/standalone"))
exclude("**/dex_builder")
archiveClassifier = "symbols"
archiveBaseName = "standalone"
}
2023-06-27 16:34:32 +08:00
val repo = jgit.repo(true)
val ver = repo?.latestTag?.removePrefix("v") ?: "0.0"
2022-11-29 15:32:02 +08:00
println("${rootProject.name} version: $ver")
2023-06-27 16:34:32 +08:00
publish {
githubRepo = "LSPosed/LSPlant"
2022-02-21 04:58:03 +08:00
publications {
fun MavenPublication.setup() {
2022-02-21 04:58:03 +08:00
group = "org.lsposed.lsplant"
2022-11-29 15:32:02 +08:00
version = ver
2022-02-21 04:58:03 +08:00
pom {
name = "LSPlant"
description = "A hook framework for Android Runtime (ART)"
url = "https://github.com/LSPosed/LSPlant"
2022-02-21 04:58:03 +08:00
licenses {
license {
name = "GNU Lesser General Public License v3.0"
url = "https://github.com/LSPosed/LSPlant/blob/master/LICENSE"
2022-02-21 04:58:03 +08:00
}
}
developers {
developer {
name = "Lsposed"
url = "https://lsposed.org"
2022-02-21 04:58:03 +08:00
}
}
scm {
connection = "scm:git:https://github.com/LSPosed/LSPlant.git"
url = "https://github.com/LSPosed/LSPlant"
2022-02-21 04:58:03 +08:00
}
}
}
register<MavenPublication>("lsplant") {
artifactId = "lsplant"
afterEvaluate {
from(components.getByName("release"))
artifact(symbolsReleaseTask)
}
setup()
}
register<MavenPublication>("lsplantStandalone") {
artifactId = "lsplant-standalone"
afterEvaluate {
from(components.getByName("standalone"))
artifact(symbolsStandaloneTask)
}
setup()
}
2022-02-21 04:58:03 +08:00
}
2022-02-20 23:53:06 +08:00
}