diff --git a/Cargo.toml b/Cargo.toml index 13b2443b..d2e46a87 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,9 +19,6 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde-big-array = "0.5" sha2 = "0.11" -sdl3-sys = { version = "0.6", features = ["build-from-source-static"] } -sdl3-ttf-sys = { version = "0.6", features = ["build-static-vendored", "no-sdlttf-harfbuzz", "no-sdlttf-plutosvg"] } -sdl3-image-sys = { version = "0.6", features = ["build-static-vendored"] } tokio = {version = "1.46", features = ["rt-multi-thread", "macros", "fs", "process"] } spin_sleep = "1.3" encoding_rs = "0.8" @@ -43,10 +40,16 @@ slint = { version = "1.16", default-features = false, features = ["compat-1-2", rfd = {version = "0.17", optional = true } dirs = "6.0" open = { version = "5.3", optional = true } +sdl3-sys = { version = "0.6", features = ["build-from-source-static"] } +sdl3-ttf-sys = { version = "0.6", features = ["build-static-vendored", "no-sdlttf-harfbuzz", "no-sdlttf-plutosvg"] } +sdl3-image-sys = { version = "0.6", features = ["build-static-vendored"] } [target.'cfg(target_os = "android")'.dependencies] slint = { version = "1.16", default-features = false, features = ["compat-1-2", "std", "backend-android-activity-06", "accessibility"], optional = true } jni = "0.22" +sdl3-sys = { version = "0.6", features = ["build-from-source"] } +sdl3-ttf-sys = { version = "0.6", features = ["build-from-source", "no-sdlttf-harfbuzz", "no-sdlttf-plutosvg"] } +sdl3-image-sys = { version = "0.6", features = ["build-from-source"] } [build-dependencies] winresource = "0.1" diff --git a/android-project/android.toolchain.cmake b/android-project/android.toolchain.cmake index 8f2a2904..6a584470 100644 --- a/android-project/android.toolchain.cmake +++ b/android-project/android.toolchain.cmake @@ -1,3 +1,4 @@ set(ANDROID_PLATFORM $ENV{ANDROID_PLATFORM}) set(ANDROID_ABI $ENV{ANDROID_ABI}) +set(ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES ON) include("$ENV{ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake") diff --git a/android-project/app/build.gradle.kts b/android-project/app/build.gradle.kts index 672da645..dedd75e5 100644 --- a/android-project/app/build.gradle.kts +++ b/android-project/app/build.gradle.kts @@ -71,7 +71,36 @@ val ndkBuild = tasks.register("ndkBuild") { ) } +val sdlLibsArm64 = tasks.register("sdlLibsArm64") { + val isRelease = gradle.startParameter.taskNames.any { it.endsWith("Release", ignoreCase = true) } + val jniType = if (isRelease) "release" else "debug" + val jniLibsFolder = "$rootDir/app/src/$jniType/jniLibs/arm64-v8a" + + from("$rootDir/../target/aarch64-linux-android/$jniType") + into(jniLibsFolder) + include("libSDL*") +} + +val sdlLibsX64 = tasks.register("sdlLibsX64") { + val isRelease = gradle.startParameter.taskNames.any { it.endsWith("Release", ignoreCase = true) } + val jniType = if (isRelease) "release" else "debug" + val jniLibsFolder = "$rootDir/app/src/$jniType/jniLibs/x86_64" + + from("$rootDir/../target/x86_64-linux-android/$jniType") + into(jniLibsFolder) + include("libSDL*") +} + tasks.named("preBuild") { + dependsOn(sdlLibsArm64) + dependsOn(sdlLibsX64) +} + +tasks.named("sdlLibsArm64") { + dependsOn(ndkBuild) +} + +tasks.named("sdlLibsX64") { dependsOn(ndkBuild) } diff --git a/android-project/app/src/main/java/io/github/gopher64/gopher64/N64Activity.kt b/android-project/app/src/main/java/io/github/gopher64/gopher64/N64Activity.kt index 080251bb..ec37fe0d 100644 --- a/android-project/app/src/main/java/io/github/gopher64/gopher64/N64Activity.kt +++ b/android-project/app/src/main/java/io/github/gopher64/gopher64/N64Activity.kt @@ -2,4 +2,11 @@ package io.github.gopher64.gopher64 import org.libsdl.app.SDLActivity -class N64Activity : SDLActivity() {} +class N64Activity : SDLActivity() { + override fun getLibraries(): Array = arrayOf( + "SDL3", + "SDL3_ttf", + "SDL3_image", + "gopher64" + ) +}