diff --git a/CMakeLists.txt b/CMakeLists.txt index 6740992bb..fa48ef795 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,30 +86,21 @@ endif() option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL}) if (ANDROID AND CITRON_DOWNLOAD_ANDROID_VVL) - set(vvl_version "vulkan-sdk-1.4.321.0") + set(vvl_version "sdk-1.3.261.1") set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip") - set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/") - set(vvl_lib_file "${vvl_lib_path}/libVkLayer_khronos_validation.so") - - # Only download and extract if the final library file doesn't exist - if (NOT EXISTS "${vvl_lib_file}") - if (NOT EXISTS "${vvl_zip_file}") - # Download validation layer release to externals directory - set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download") - file(DOWNLOAD "${vvl_base_url}/${vvl_version}/android-binaries-${vvl_version}.zip" - "${vvl_zip_file}" SHOW_PROGRESS) - endif() - - # Extract if not already extracted - if (NOT EXISTS "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}") - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") - endif() - - # Copy the arm64 binary to src/android/app/main/jniLibs - file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so" - DESTINATION "${vvl_lib_path}") + if (NOT EXISTS "${vvl_zip_file}") + # Download and extract validation layer release to externals directory + set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download") + file(DOWNLOAD "${vvl_base_url}/${vvl_version}/android-binaries-${vvl_version}-android.zip" + "${vvl_zip_file}" SHOW_PROGRESS) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") endif() + + # Copy the arm64 binary to src/android/app/main/jniLibs + set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/") + file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so" + DESTINATION "${vvl_lib_path}") endif() if (ANDROID) @@ -292,6 +283,9 @@ if (MSVC) # boost still makes use of deprecated result_of. add_definitions(-D_HAS_DEPRECATED_RESULT_OF) + + # Enable Link Time Code Generation for better optimization + add_link_options(/LTCG) else() set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts index 659c5d335..dc0abb434 100644 --- a/src/android/app/build.gradle.kts +++ b/src/android/app/build.gradle.kts @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project +// SPDX-FileCopyrightText: 2023 citron Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later import android.annotation.SuppressLint @@ -28,7 +28,7 @@ android { namespace = "org.citron.citron_emu" compileSdkVersion = "android-35" - ndkVersion = "27.2.12479018" // "26.1.10909125" + ndkVersion = "26.1.10909125" buildFeatures { viewBinding = true @@ -104,13 +104,10 @@ android { } resValue("string", "app_name_suffixed", "citron") - isDefault = true - isShrinkResources = true isMinifyEnabled = true - isJniDebuggable = false isDebuggable = false proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), + getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } @@ -118,12 +115,13 @@ android { // builds a release build that doesn't need signing // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. register("relWithDebInfo") { + isDefault = true resValue("string", "app_name_suffixed", "citron Debug Release") signingConfig = signingConfigs.getByName("default") isMinifyEnabled = true isDebuggable = true proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), + getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) versionNameSuffix = "-relWithDebInfo" @@ -160,7 +158,7 @@ android { externalNativeBuild { cmake { - version = "3.31.8" + version = "3.22.1" path = file("../../../CMakeLists.txt") } } @@ -179,10 +177,10 @@ android { "-DCITRON_ENABLE_LTO=ON", "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON", "-DCMAKE_POLICY_VERSION_MINIMUM=3.5", - "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", - ) + "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON" + ) - abiFilters("arm64-v8a") // , "x86_64") + abiFilters("arm64-v8a", "x86_64") } } } @@ -240,6 +238,7 @@ dependencies { implementation("io.coil-kt:coil:2.2.2") implementation("androidx.core:core-splashscreen:1.0.1") implementation("androidx.window:window:1.2.0-beta03") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("androidx.navigation:navigation-fragment-ktx:2.7.4") implementation("androidx.navigation:navigation-ui-ktx:2.7.4")