Lo del 10 de octubre que sigue valiendo sobre la base 1.3.3: - con un tag v* el workflow publica la APK; a mano sigue en borrador - el workflow trae el APK oficial de la misma version: de ahi salen node_modules y libnode.so (prepare.sh ya lo usaba, pero el runner no lo tenia) - versionName sale de package.json en vez de ir escrito a mano - libnode.so comprimida, como en la oficial (unos 35 MB menos por descarga) - release.sh: JAVA_HOME en el PATH, no deja salir una release debuggable, exige CHANGE_WIFI_MULTICAST_STATE y avisa si la APK pasa de 80 MB Se queda fuera la poda de prepare.sh y la sha256 de la APK 1.2.5: ahora el node_modules viene ya podado del APK oficial.
66 lines
2.2 KiB
Kotlin
66 lines
2.2 KiB
Kotlin
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")
|
|
}
|