diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 9f4389cc..0e56f2d7 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,3 +1,4 @@ +import com.android.build.api.dsl.ApplicationExtension import org.jetbrains.kotlin.gradle.dsl.JvmTarget import java.time.LocalDateTime import java.time.Month @@ -5,12 +6,11 @@ import java.time.temporal.ChronoUnit plugins { alias(libs.plugins.android.application) - alias(libs.plugins.kotlin.android) } -android { +extensions.configure { namespace = "su.xash.engine" - ndkVersion = "28.2.13676358" + ndkVersion = "29.0.14206865" compileSdk = 35 defaultConfig { @@ -34,7 +34,7 @@ android { "--configuration-dir=\${ndk.buildRoot}", "--ndk-version=\${ndk.moduleNdkVersion}", "--min-sdk-version=\${ndk.minPlatform}", - "--ndk-root=${android.ndkDirectory}", + "--ndk-root=${androidComponents.sdkComponents.ndkDirectory.get()}", // shut up, fake options "-p:Configuration=\${ndk.variantName}", "-p:Platform=\${ndk.abi}" @@ -77,8 +77,8 @@ android { sourceSets { getByName("main") { - assets.srcDirs("../../3rdparty/extras/xash-extras") - java.srcDir("../../3rdparty/SDL/android-project/app/src/main/java") + assets.directories.add("../../3rdparty/extras/xash-extras") + java.directories.add("../../3rdparty/SDL/android-project/app/src/main/java") } } diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 78a9763a..77ecda24 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,5 +1,4 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { alias(libs.plugins.android.application) apply false - alias(libs.plugins.kotlin.android) apply false } diff --git a/android/gradle.properties b/android/gradle.properties index 1533bac1..d60c9047 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -25,3 +25,6 @@ android.nonTransitiveRClass=true # Enable verbose output for CMake android.native.buildOutput=verbose +android.uniquePackageNames=false +android.dependency.useConstraints=true +android.r8.strictFullModeForKeepRules=false diff --git a/android/gradle/gradle-daemon-jvm.properties b/android/gradle/gradle-daemon-jvm.properties new file mode 100644 index 00000000..3d3b387f --- /dev/null +++ b/android/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/ecd23fd7707c683afbcd6052998cb6a9/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/ecd23fd7707c683afbcd6052998cb6a9/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/10fc3bf1ee0001078a473afe6e43cfdb/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/658299a896470fbb3103ba3a430ee227/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/39846e8427e64a3824c13e399d7d813c/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/932015f6361ccaead0c6d9b8717ed96e/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index cca86651..220da8e4 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -1,8 +1,7 @@ [versions] acraHttp = "5.12.0" -agp = "8.11.1" +agp = "9.0.0" appcompat = "1.7.1" -kotlin = "2.2.0" material = "1.12.0" navigationRuntimeKtx = "2.9.1" preferenceKtx = "1.2.1" @@ -20,4 +19,3 @@ swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout" [plugins] android-application = { id = "com.android.application", version.ref = "agp" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index eb8a4c7d..3b6a7521 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Jul 01 19:51:06 EEST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index 9ae3cf5a..25e085a1 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -11,6 +11,9 @@ pluginManagement { gradlePluginPortal() } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { diff --git a/scripts/waifulib/xcompile.py b/scripts/waifulib/xcompile.py index 0ce19582..62a4c057 100644 --- a/scripts/waifulib/xcompile.py +++ b/scripts/waifulib/xcompile.py @@ -20,7 +20,7 @@ import os import sys ANDROID_NDK_ENVVARS = ['ANDROID_NDK_HOME', 'ANDROID_NDK'] -ANDROID_NDK_SUPPORTED = [10, 19, 20, 23, 25, 27, 28] +ANDROID_NDK_SUPPORTED = [10, 19, 20, 23, 25, 27, 28, 29] ANDROID_NDK_HARDFP_MAX = 11 # latest version that supports hardfp ANDROID_NDK_GCC_MAX = 17 # latest NDK that ships with GCC ANDROID_NDK_UNIFIED_SYSROOT_MIN = 15 @@ -34,6 +34,7 @@ ANDROID_NDK_API_MIN = { 25: 19, 27: 19, 28: 21, + 29: 21, } # minimal API level ndk revision supports ANDROID_STPCPY_API_MIN = 21 # stpcpy() introduced in SDK 21