build(android): add env-based release signing config
This commit is contained in:
parent
da15296f66
commit
61713703f8
|
|
@ -24,6 +24,9 @@ local.properties
|
||||||
android/.idea/
|
android/.idea/
|
||||||
android/build/
|
android/build/
|
||||||
android/app/build/
|
android/app/build/
|
||||||
|
android/*.jks
|
||||||
|
android/*.keystore
|
||||||
|
android/*.keystore.properties
|
||||||
|
|
||||||
# OS
|
# OS
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
import org.gradle.api.tasks.Sync
|
import org.gradle.api.tasks.Sync
|
||||||
|
import org.gradle.api.GradleException
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
|
|
@ -6,6 +8,44 @@ plugins {
|
||||||
id("org.jetbrains.kotlin.android")
|
id("org.jetbrains.kotlin.android")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class ReleaseSigningEnv(
|
||||||
|
val keystoreFile: File,
|
||||||
|
val storePassword: String,
|
||||||
|
val keyAlias: String,
|
||||||
|
val keyPassword: String,
|
||||||
|
)
|
||||||
|
|
||||||
|
fun requiredEnv(name: String): String {
|
||||||
|
return System.getenv(name)?.takeIf { it.isNotBlank() }
|
||||||
|
?: throw GradleException("Missing required environment variable: $name")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun loadReleaseSigningEnv(releaseSigningRequested: Boolean): ReleaseSigningEnv? {
|
||||||
|
val keystorePath = System.getenv("ANDROID_KEYSTORE_FILE")?.takeIf { it.isNotBlank() }
|
||||||
|
val anySigningEnvProvided = listOf(
|
||||||
|
keystorePath,
|
||||||
|
System.getenv("ANDROID_KEYSTORE_PASSWORD"),
|
||||||
|
System.getenv("ANDROID_KEY_ALIAS"),
|
||||||
|
System.getenv("ANDROID_KEY_PASSWORD"),
|
||||||
|
).any { !it.isNullOrBlank() }
|
||||||
|
|
||||||
|
if (!releaseSigningRequested && !anySigningEnvProvided) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
val keystoreFile = File(requiredEnv("ANDROID_KEYSTORE_FILE"))
|
||||||
|
if (!keystoreFile.isFile) {
|
||||||
|
throw GradleException("ANDROID_KEYSTORE_FILE does not exist: ${keystoreFile.absolutePath}")
|
||||||
|
}
|
||||||
|
|
||||||
|
return ReleaseSigningEnv(
|
||||||
|
keystoreFile = keystoreFile,
|
||||||
|
storePassword = requiredEnv("ANDROID_KEYSTORE_PASSWORD"),
|
||||||
|
keyAlias = requiredEnv("ANDROID_KEY_ALIAS"),
|
||||||
|
keyPassword = requiredEnv("ANDROID_KEY_PASSWORD"),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
val stagedPythonSourcesDir = layout.buildDirectory.dir("generated/chaquopy/python")
|
val stagedPythonSourcesDir = layout.buildDirectory.dir("generated/chaquopy/python")
|
||||||
val stagePythonSources by tasks.registering(Sync::class) {
|
val stagePythonSources by tasks.registering(Sync::class) {
|
||||||
from(rootProject.projectDir.resolve("../proxy")) {
|
from(rootProject.projectDir.resolve("../proxy")) {
|
||||||
|
|
@ -13,6 +53,10 @@ val stagePythonSources by tasks.registering(Sync::class) {
|
||||||
}
|
}
|
||||||
into(stagedPythonSourcesDir)
|
into(stagedPythonSourcesDir)
|
||||||
}
|
}
|
||||||
|
val releaseSigningRequested = gradle.startParameter.taskNames.any {
|
||||||
|
it.contains("release", ignoreCase = true)
|
||||||
|
}
|
||||||
|
val releaseSigningEnv = loadReleaseSigningEnv(releaseSigningRequested)
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "org.flowseal.tgwsproxy"
|
namespace = "org.flowseal.tgwsproxy"
|
||||||
|
|
@ -32,6 +76,17 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
if (releaseSigningEnv != null) {
|
||||||
|
create("release") {
|
||||||
|
storeFile = releaseSigningEnv.keystoreFile
|
||||||
|
storePassword = releaseSigningEnv.storePassword
|
||||||
|
keyAlias = releaseSigningEnv.keyAlias
|
||||||
|
keyPassword = releaseSigningEnv.keyPassword
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
isMinifyEnabled = false
|
isMinifyEnabled = false
|
||||||
|
|
@ -39,6 +94,9 @@ android {
|
||||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
"proguard-rules.pro",
|
"proguard-rules.pro",
|
||||||
)
|
)
|
||||||
|
if (releaseSigningEnv != null) {
|
||||||
|
signingConfig = signingConfigs.getByName("release")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue