mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
217 lines
6.6 KiB
Plaintext
217 lines
6.6 KiB
Plaintext
import com.android.build.api.dsl.ApplicationExtension
|
|
import java.io.ByteArrayOutputStream
|
|
|
|
plugins {
|
|
id("com.android.application")
|
|
id("org.jetbrains.kotlin.android")
|
|
kotlin("plugin.serialization") version "1.9.22"
|
|
}
|
|
|
|
android {
|
|
namespace = "moe.fuqiuluo.shamrock"
|
|
ndkVersion = "25.1.8937393"
|
|
compileSdk = 34
|
|
|
|
defaultConfig {
|
|
applicationId = "moe.fuqiuluo.shamrock"
|
|
minSdk = 27
|
|
targetSdk = 34
|
|
versionCode = getVersionCode()
|
|
versionName = "1.1.1" + ".r${getGitCommitCount()}." + getVersionName()
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
vectorDrawables {
|
|
useSupportLibrary = true
|
|
}
|
|
@Suppress("UnstableApiUsage")
|
|
externalNativeBuild {
|
|
cmake {
|
|
cppFlags += ""
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = false
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
"proguard-rules.pro"
|
|
)
|
|
}
|
|
}
|
|
|
|
android.applicationVariants.all {
|
|
outputs.map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl }
|
|
.forEach {
|
|
val abiName = when (val abi = it.outputFileName.split("-")[1].split(".apk")[0]) {
|
|
"app" -> "all"
|
|
"x64" -> "x86_64"
|
|
else -> abi
|
|
}
|
|
it.outputFileName = "Shamrock-v${versionName}-${abiName}.apk"
|
|
}
|
|
}
|
|
|
|
flavorDimensions.add("mode")
|
|
|
|
productFlavors {
|
|
create("app") {
|
|
dimension = "mode"
|
|
ndk {
|
|
println("Full architecture and full compilation.")
|
|
abiFilters.add("arm64-v8a")
|
|
abiFilters.add("x86_64")
|
|
abiFilters.add("x86")
|
|
}
|
|
}
|
|
create("arm64") {
|
|
dimension = "mode"
|
|
ndk {
|
|
println("Full compilation of arm64 architecture")
|
|
abiFilters.add("arm64-v8a")
|
|
}
|
|
}
|
|
create("x64") {
|
|
dimension = "mode"
|
|
ndk {
|
|
println("Full compilation of x64 architecture")
|
|
abiFilters.add("x86_64")
|
|
}
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
buildFeatures {
|
|
compose = true
|
|
}
|
|
composeOptions {
|
|
kotlinCompilerExtensionVersion = "1.5.10"
|
|
}
|
|
packaging {
|
|
jniLibs {
|
|
useLegacyPackaging = true
|
|
}
|
|
resources {
|
|
excludes += "/META-INF/{AL2.0,LGPL2.1}"
|
|
excludes += "/META-INF/*"
|
|
excludes += "/META-INF/NOTICE.txt"
|
|
excludes += "/META-INF/DEPENDENCIES.txt"
|
|
excludes += "/META-INF/NOTICE"
|
|
excludes += "/META-INF/LICENSE"
|
|
excludes += "/META-INF/DEPENDENCIES"
|
|
excludes += "/META-INF/notice.txt"
|
|
excludes += "/META-INF/dependencies.txt"
|
|
excludes += "/META-INF/LGPL2.1"
|
|
excludes += "/META-INF/ASL2.0"
|
|
excludes += "/META-INF/INDEX.LIST"
|
|
excludes += "/META-INF/io.netty.versions.properties"
|
|
excludes += "/META-INF/INDEX.LIST"
|
|
excludes += "/META-INF/LICENSE.txt"
|
|
excludes += "/META-INF/license.txt"
|
|
excludes += "/META-INF/*.kotlin_module"
|
|
excludes += "/META-INF/services/reactor.blockhound.integration.BlockHoundIntegration"
|
|
}
|
|
}
|
|
externalNativeBuild {
|
|
cmake {
|
|
path = file("src/main/cpp/CMakeLists.txt")
|
|
version = "3.22.1"
|
|
}
|
|
}
|
|
|
|
configureAppSigningConfigsForRelease(project)
|
|
}
|
|
|
|
fun configureAppSigningConfigsForRelease(project: Project) {
|
|
val keystorePath: String? = System.getenv("KEYSTORE_PATH")
|
|
if (keystorePath.isNullOrBlank()) {
|
|
return
|
|
}
|
|
project.configure<ApplicationExtension> {
|
|
signingConfigs {
|
|
create("release") {
|
|
storeFile = file(System.getenv("KEYSTORE_PATH"))
|
|
storePassword = System.getenv("KEYSTORE_PASSWORD")
|
|
keyAlias = System.getenv("KEY_ALIAS")
|
|
keyPassword = System.getenv("KEY_PASSWORD")
|
|
enableV2Signing = true
|
|
}
|
|
}
|
|
buildTypes {
|
|
release {
|
|
signingConfig = signingConfigs.findByName("release")
|
|
}
|
|
debug {
|
|
signingConfig = signingConfigs.findByName("release")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fun getGitCommitCount(): Int {
|
|
val out = ByteArrayOutputStream()
|
|
exec {
|
|
commandLine("git", "rev-list", "--count", "HEAD")
|
|
standardOutput = out
|
|
}
|
|
return out.toString().trim().toInt()
|
|
}
|
|
|
|
fun getGitCommitHash(): String {
|
|
val out = ByteArrayOutputStream()
|
|
exec {
|
|
commandLine("git", "rev-parse", "--short", "HEAD")
|
|
standardOutput = out
|
|
}
|
|
return out.toString().trim()
|
|
}
|
|
|
|
fun getVersionCode(): Int {
|
|
return (System.currentTimeMillis() / 1000L).toInt()
|
|
}
|
|
|
|
fun getVersionName(): String {
|
|
return getGitCommitHash()
|
|
}
|
|
|
|
dependencies {
|
|
val composeBom = platform("androidx.compose:compose-bom:2023.10.01")
|
|
implementation(composeBom)
|
|
|
|
DEPENDENCY_ANDROIDX.forEach {
|
|
implementation(it)
|
|
}
|
|
|
|
implementation("androidx.compose.ui:ui")
|
|
implementation("androidx.compose.ui:ui-graphics")
|
|
implementation("androidx.compose.ui:ui-tooling-preview")
|
|
implementation("androidx.compose.material3:material3")
|
|
//noinspection GradleDynamicVersion
|
|
implementation("com.google.accompanist:accompanist-pager:0.31.5+")
|
|
//noinspection GradleDynamicVersion
|
|
implementation("com.google.accompanist:accompanist-systemuicontroller:0.31.5+")
|
|
implementation("io.coil-kt:coil:2.4.0")
|
|
implementation("io.coil-kt:coil-compose:2.4.0")
|
|
|
|
implementation(kotlinx("io-jvm", "0.1.16"))
|
|
implementation(ktor("client", "core"))
|
|
implementation(ktor("client", "okhttp"))
|
|
implementation(ktor("serialization", "kotlinx-json"))
|
|
|
|
implementation(project(":xposed"))
|
|
|
|
testImplementation("junit:junit:4.13.2")
|
|
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
|
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
|
androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01"))
|
|
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
|
|
debugImplementation("androidx.compose.ui:ui-tooling")
|
|
debugImplementation("androidx.compose.ui:ui-test-manifest")
|
|
} |