import java.nio.charset.StandardCharsets apply plugin: 'com.android.application' android { namespace "org.love2d.android.executable" ndkVersion '25.2.9519653' defaultConfig { applicationId project.properties["app.application_id"] versionCode project.properties["app.version_code"].toInteger() versionName project.properties["app.version_name"] // NDK r25 no longer supports API 16; API 19 is Android 4.4 and keeps // the native toolchain and package-installer bridge on a supported ABI. minSdk 19 // Android 16 / API 36: current Android distribution target. compileSdk 36 targetSdk 36 def getAppName = { def nameArray = project.properties["app.name_byte_array"] def name = project.properties["app.name"] if (name != null && nameArray != null) { throw new Exception("Only define either `app.name` or `app.name_byte_array` in gradle.properties, but not both!") } if (name == null) { def nameArraySplit = nameArray.split(",") def nameBytes = new byte[nameArraySplit.length] def count = 0 for (String s: nameArraySplit) { nameBytes[count++] = (byte) Integer.parseInt(s) } return new String(nameBytes, StandardCharsets.UTF_8) } return name } manifestPlaceholders = [ NAME:getAppName(), ORIENTATION:project.properties["app.orientation"], ] } // Release signing lives outside the repository. The release build script // requires all five values below, while debug builds intentionally remain // usable without them. def releaseStore = System.getenv("GEN1RECOMP_ANDROID_KEYSTORE") def releaseStorePassword = System.getenv("GEN1RECOMP_ANDROID_KEYSTORE_PASSWORD") def releaseKeyAlias = System.getenv("GEN1RECOMP_ANDROID_KEY_ALIAS") def releaseKeyPassword = System.getenv("GEN1RECOMP_ANDROID_KEY_PASSWORD") def hasReleaseSigning = releaseStore && releaseStorePassword && releaseKeyAlias && releaseKeyPassword if (hasReleaseSigning) { signingConfigs { release { storeFile file(releaseStore) storePassword releaseStorePassword keyAlias releaseKeyAlias keyPassword releaseKeyPassword } } } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' if (hasReleaseSigning) signingConfig signingConfigs.release } } flavorDimensions = ['mode', 'recording'] productFlavors { normal { dimension 'mode' } embed { dimension 'mode' } record { dimension 'recording' } noRecord { dimension 'recording' } } lint { abortOnError false } } dependencies { api 'androidx.multidex:multidex:2.0.1' api fileTree(dir: 'libs', include: ['*.jar']) api 'androidx.appcompat:appcompat:1.6.1' api project(':love') }