CountDown/src-tauri/gen/android/app/build.gradle.kts

106 lines
3.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import java.util.Properties
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("rust")
}
val tauriProperties = Properties().apply {
val propFile = file("tauri.properties")
if (propFile.exists()) {
propFile.inputStream().use { load(it) }
}
}
// 加载签名密钥配置
// keystore.properties文件应包含storeFile, storePassword, keyPassword, keyAlias
// 如果文件不存在将使用debug签名适用于CI/CD环境
val keystoreProperties = Properties().apply {
val propFile = file("../../../../keystore.properties")
if (propFile.exists()) {
propFile.inputStream().use { load(it) }
}
}
android {
compileSdk = 34
namespace = "com.countdown.app"
defaultConfig {
manifestPlaceholders["usesCleartextTraffic"] = "false"
applicationId = "com.countdown.app"
minSdk = 24
targetSdk = 34
versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()
versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0")
}
// 签名配置
signingConfigs {
create("release") {
// 检查是否存在密钥配置如果没有则使用debug签名
// 这确保了CI/CD环境可以正常构建即使没有生产密钥
if (keystoreProperties.containsKey("keyAlias")) {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = file("../../../../${keystoreProperties["storeFile"]}")
storePassword = keystoreProperties["storePassword"] as String
println("✓ 使用自定义签名密钥: ${keystoreProperties["keyAlias"]}")
} else {
// 如果没有密钥配置使用debug签名配置
// CI/CD环境通常不需要生产签名
println("⚠ 未找到keystore.properties将使用debug签名")
}
}
}
buildTypes {
getByName("debug") {
manifestPlaceholders["usesCleartextTraffic"] = "true"
isDebuggable = true
isJniDebuggable = true
isMinifyEnabled = false
packaging { jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so")
jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so")
jniLibs.keepDebugSymbols.add("*/x86/*.so")
jniLibs.keepDebugSymbols.add("*/x86_64/*.so")
}
}
getByName("release") {
isMinifyEnabled = true
proguardFiles(
*fileTree(".") { include("**/*.pro") }
.plus(getDefaultProguardFile("proguard-android-optimize.txt"))
.toList().toTypedArray()
)
// 应用签名配置有自定义密钥时使用自定义签名否则使用debug签名
// 这确保CI/CD环境能正常构建release版本即使没有生产密钥
if (keystoreProperties.containsKey("keyAlias")) {
signingConfig = signingConfigs.getByName("release")
} else {
// 在CI/CD环境中如果没有生产密钥使用debug签名
signingConfig = signingConfigs.getByName("debug")
}
}
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
buildConfig = true
}
}
rust {
rootDirRel = "../../../"
}
dependencies {
implementation("androidx.webkit:webkit:1.6.1")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.8.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.4")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0")
}
apply(from = "tauri.build.gradle.kts")