caudal/empaquetado/android/app/build.gradle.kts
2026-11-01 05:56:12 -06:00

102 lines
3.1 KiB
Kotlin

import java.util.Properties
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.chaquo.python")
}
// El programa es el mismo que en el resto de versiones: se copia tal cual desde programa/cartera
// (sin la carpeta de entidades concretas, que no se publica) antes de empaquetar.
val programa = rootProject.projectDir.resolve("../../programa/cartera")
val copiaDelPrograma = layout.buildDirectory.dir("caudal-python")
val traerCaudal = tasks.register<Sync>("traerCaudal") {
from(programa) {
exclude("extras/**", "**/__pycache__/**")
into("cartera")
}
into(copiaDelPrograma)
}
// La firma de las versiones: un fichero firma.properties junto a este, que NO se versiona
// (storeFile, storePassword, keyAlias, keyPassword). Sin él solo se puede construir la de pruebas.
val firma = Properties().apply {
val f = rootProject.file("firma.properties")
if (f.isFile) f.inputStream().use { load(it) }
}
android {
namespace = "com.huveme.caudal"
compileSdk = 35
defaultConfig {
applicationId = "com.huveme.caudal"
minSdk = 26
targetSdk = 35
versionCode = 306
versionName = "0.3.6"
ndk {
abiFilters += listOf("arm64-v8a", "x86_64") // teléfonos de hoy y el emulador
}
}
signingConfigs {
if (firma.containsKey("storeFile")) {
create("version") {
storeFile = rootProject.file(firma.getProperty("storeFile"))
storePassword = firma.getProperty("storePassword")
keyAlias = firma.getProperty("keyAlias")
keyPassword = firma.getProperty("keyPassword")
}
}
}
buildTypes {
release {
isMinifyEnabled = false
signingConfig = signingConfigs.findByName("version")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
chaquopy {
defaultConfig {
version = "3.12"
pip {
// Las mismas dependencias que el resto de versiones (programa/requirements.txt)
install("requests>=2.31")
install("beautifulsoup4>=4.12")
install("lxml>=4.9")
install("openpyxl>=3.1")
install("cryptography>=38")
install("certifi>=2026.10.19")
}
}
sourceSets {
getByName("main") {
srcDir("src/main/python")
srcDir(copiaDelPrograma)
}
}
}
// Que el programa esté copiado antes de que Chaquopy lo recoja
tasks.matching { it.name.startsWith("merge") && it.name.endsWith("PythonSources") }.configureEach {
dependsOn(traerCaudal)
}
dependencies {
implementation("androidx.core:core-ktx:1.15.0")
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("androidx.biometric:biometric:1.1.0")
implementation("androidx.webkit:webkit:1.12.1")
implementation("com.journeyapps:zxing-android-embedded:4.3.0") // leer el QR de enlace (sin servicios de Google)
}