plugins { id 'com.android.application' } def androidProject = projectDir.parentFile android { namespace "org.legoisland.isle" compileSdk 35 defaultConfig { applicationId 'org.legoisland.isle' minSdk 21 targetSdk 35 versionCode 1 versionName '1.0' externalNativeBuild { cmake { arguments '-DANDROID_STL=c++_shared', "-DFETCHCONTENT_BASE_DIR=${androidProject}/build/_deps" if (project.hasProperty('cmakeArgs')) { project.cmakeArgs.split(" ").each {arg -> arguments arg} } abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } } externalNativeBuild { cmake { version "3.30.5" path '../../CMakeLists.txt' } } signingConfigs { register("release") { enableV4Signing = true keyAlias = System.getenv("SIGNING_KEY_ALIAS") keyPassword = System.getenv("SIGNING_KEY_PASSWORD") System.getenv("SIGNING_STORE_FILE")?.with { storeFile = file(it) } storePassword = System.getenv("SIGNING_STORE_PASSWORD") } } buildTypes { release { minifyEnabled true signingConfig = signingConfigs.getByName("release") // proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildFeatures { prefab true } } afterEvaluate { def androidPath = System.getenv("ANDROID_HOME") ?: android.sdkDirectory def ndkPath = System.getenv("ANDROID_NDK_HOME") ?: android.ndkDirectory tasks.named('compileSDL3AndroidArchive').configure { environment "ANDROID_HOME", androidPath environment "ANDROID_NDK_HOME", ndkPath } } def aarDest = project.providers.provider { file("${projectDir}/libs/SDL3.aar") } tasks.register('downloadSDL3', Exec) { workingDir = androidProject commandLine 'cmake', '-P', 'downloadSDL3.cmake' } tasks.register('compileSDL3AndroidArchive', Exec) { workingDir = androidProject dependsOn(downloadSDL3) def sdl3Dir = "build/_deps/sdl3-src" commandLine 'python', "${sdl3Dir}/build-scripts/build-release.py", '--actions', 'android', '--fast', '--force', "--root=${sdl3Dir}", "--android-api=${android.defaultConfig.minSdk}" doLast { def aarFile = file("${androidProject}/${sdl3Dir}/build-android").listFiles().find { it.name.endsWith(".aar") } aarDest.get().parentFile.mkdirs() aarFile.renameTo(aarDest.get()) } } tasks.register('ensureSDL3') { // if DOWNLOAD_DEPENDENCIES=OFF download the version appropriate // 'devel android zip' and place the .aar at `aarDest` if (aarDest.get().exists()) { return false } dependsOn(compileSDL3AndroidArchive) } dependencies { implementation files('libs/SDL3.aar').builtBy(ensureSDL3) }