plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { // El .so nativo exporta Java_com_solarnethub_oasis_OasisActivity_startNodeWithArguments, // asi que la clase puente tiene que vivir en ese paquete para que el simbolo resuelva. // El applicationId si es propio: la app se instala junto a la oficial sin pisarla. namespace = "com.solarnethub.oasis" compileSdk = 35 defaultConfig { applicationId = "net.laenre.oasis" minSdk = 24 targetSdk = 35 // release.sh los pasa por entorno; a mano, el nombre sale de package.json (como // en el backend) para que la APK no diga ser otra version que la que lleva dentro val pkgVersion = Regex("\"version\"\\s*:\\s*\"([^\"]+)\"") .find(rootProject.file("../package.json").readText())?.groupValues?.get(1) ?: "0.0.0" versionCode = (System.getenv("OASIS_VERSION_CODE") ?: "1").toInt() versionName = System.getenv("OASIS_VERSION_NAME") ?: pkgVersion ndk { abiFilters += listOf("arm64-v8a") } } signingConfigs { create("release") { val ks = System.getenv("OASIS_KEYSTORE") if (ks != null) { storeFile = file(ks) storePassword = System.getenv("OASIS_KEYSTORE_PASS") keyAlias = System.getenv("OASIS_KEY_ALIAS") ?: "oasis" keyPassword = System.getenv("OASIS_KEY_PASS") ?: System.getenv("OASIS_KEYSTORE_PASS") } } } buildTypes { release { isMinifyEnabled = false if (System.getenv("OASIS_KEYSTORE") != null) signingConfig = signingConfigs.getByName("release") } } buildFeatures { buildConfig = true } packaging { jniLibs { // Comprimidas, como en la APK oficial: libnode.so pasa de 50 a 16 MB en la // descarga. Sin comprimir (false) se cargaria por mmap desde la APK, pero eso // solo ahorra unos milisegundos al arrancar y cuesta 35 MB a cada descarga. useLegacyPackaging = true } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } } dependencies { implementation("androidx.appcompat:appcompat:1.7.0") implementation("androidx.core:core-ktx:1.13.1") }