Files
meshcore-sar_android/android/app/build.gradle.kts
2026-02-28 14:40:12 +01:00

100 lines
3.1 KiB
Kotlin

import java.util.Properties
import java.io.FileInputStream
plugins {
id("com.android.application")
id("kotlin-android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
// Load keystore properties from key.properties file
val keystorePropertiesFile = rootProject.file("key.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
fun resolveSigningValue(propertyKey: String, envKey: String): String? {
val envValue = System.getenv(envKey)?.takeIf { it.isNotBlank() }
if (envValue != null) {
return envValue
}
return (keystoreProperties[propertyKey] as? String)?.takeIf { it.isNotBlank() }
}
val releaseKeyAlias = resolveSigningValue("keyAlias", "ANDROID_KEY_ALIAS")
val releaseKeyPassword = resolveSigningValue("keyPassword", "ANDROID_KEY_PASSWORD")
val releaseStorePassword = resolveSigningValue("storePassword", "ANDROID_STORE_PASSWORD")
val releaseStoreFilePath = resolveSigningValue("storeFile", "ANDROID_STORE_FILE")
val hasReleaseSigning =
releaseKeyAlias != null &&
releaseKeyPassword != null &&
releaseStorePassword != null &&
releaseStoreFilePath != null
android {
namespace = "com.meshcore.sar.meshcore_sar_app"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
// Enable BuildConfig generation
buildFeatures {
buildConfig = true
}
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
defaultConfig {
applicationId = "com.meshcore.sar.meshcore_sar_app"
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
// Inject commit hash from environment variable (set by GitHub Actions)
// Falls back to "dev" for local development builds
val commitHash = System.getenv("COMMIT_HASH") ?: "dev"
buildConfigField("String", "COMMIT_HASH", "\"$commitHash\"")
}
signingConfigs {
if (hasReleaseSigning) {
create("release") {
keyAlias = releaseKeyAlias
keyPassword = releaseKeyPassword
storeFile = file(releaseStoreFilePath!!)
storePassword = releaseStorePassword
}
}
}
buildTypes {
release {
signingConfig =
if (hasReleaseSigning) {
signingConfigs.getByName("release")
} else {
// Keep CI release builds working even when private keystore isn't provided.
signingConfigs.getByName("debug")
}
}
}
}
flutter {
source = "../.."
}
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}