From bb0bbe397ec72f374450595703b9451a9912652c Mon Sep 17 00:00:00 2001 From: Kylie C Date: Mon, 4 Aug 2025 18:13:12 -0400 Subject: [PATCH] workflow and format --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++-- CMakeLists.txt | 3 ++- ISLE/android/config.cpp | 24 ++++++++++++------------ ISLE/isleapp.cpp | 12 ++++++------ 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c0ae04c8..b7f52f23 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,8 @@ jobs: - { name: 'Emscripten', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, emsdk: true, werror: true, clang-tidy: false, cmake-wrapper: 'emcmake' } - { name: 'Nintendo 3DS', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, n3ds: true, werror: true, clang-tidy: false, container: 'devkitpro/devkitarm:latest', cmake-args: '-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake' } - { name: 'Xbox One', os: 'windows-latest', generator: 'Visual Studio 17 2022', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64', cmake-args: '-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0', xbox-one: true} + - { name: 'Android', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, android: true, werror: true, clang-tidy: false, cmake-args: ' -DANDROID_NDK_PATH=$ANDROID_NDK_HOME' } + - { name: 'Android (Debug)', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, android: true, werror: true, clang-tidy: false, debug: true, cmake-args: ' -DANDROID_NDK_PATH=$ANDROID_NDK_HOME' } steps: - name: Setup vcvars if: ${{ !!matrix.msvc }} @@ -81,7 +83,7 @@ jobs: chmod a+x /opt/devkitpro/tools/bin/makerom - name: Install Linux dependencies (apt-get) - if: ${{ matrix.linux }} + if: ${{ matrix.linux || matrix.android }} run: | sudo apt-get update sudo apt-get install -y \ @@ -106,6 +108,18 @@ jobs: - uses: actions/checkout@v4 + - name: Setup Java (Android) + if: ${{ matrix.android }} + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + - name: Setup SDK (Android) + if: ${{ matrix.android }} + uses: android-actions/setup-android@v3 + with: + packages: 'ndk;26.3.11579264 cmake;3.30.5' + - name: Configure (CMake) run: | ${{ matrix.cmake-wrapper || '' }} cmake -S . -B build -G "${{ matrix.generator }}" \ @@ -123,7 +137,7 @@ jobs: run: cmake --build build --verbose --config Release - name: Package (CPack) - if: ${{ !matrix.n3ds }} + if: ${{ !matrix.n3ds && !matrix.android }} run: | cd build success=0 @@ -172,6 +186,14 @@ jobs: mv *.3dsx dist/ mv *.cia dist/ + - name: Package (Android) + if: ${{ matrix.android }} + run: | + cd build + mkdir -p dist + find ../ -name '*.apk' + mv ../android-project/app/build/outputs/apk/*/*.apk dist/ + - name: Package Assets Separately if: matrix.build-assets run: (cd build/assets && zip -r ../dist/isle-assets.zip .) @@ -185,6 +207,7 @@ jobs: build/dist/*.AppImage build/dist/*.3dsx build/dist/*.cia + build/dist/*.apk flatpak: name: "Flatpak (${{ matrix.arch }})" diff --git a/CMakeLists.txt b/CMakeLists.txt index d14c500a..82ddcaa6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,7 +144,8 @@ if (ANDROID_NDK_PATH) add_custom_target(ANDROID_GRADLE_BUILD ALL DEPENDS "${SDL_ANDROID_ARCHIVE}" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/android-project" - COMMAND "${GRADLEW}" -i ${GRADLE_TASK} -PcmakeArgs=" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DISLE_USE_DX5=${ISLE_USE_DX5} -DISLE_BUILD_CONFIG=${ISLE_BUILD_CONFIG} -DENABLE_CLANG_TIDY=${ENABLE_CLANG_TIDY} -DISLE_WERROR=${ISLE_WERROR} -DISLE_DEBUG=${ISLE_DEBUG} -Werror=dev" + COMMAND "${GRADLEW}" ${GRADLE_TASK} -PcmakeArgs="-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DISLE_USE_DX5=${ISLE_USE_DX5} -DISLE_BUILD_CONFIG=${ISLE_BUILD_CONFIG} -DENABLE_CLANG_TIDY=${ENABLE_CLANG_TIDY} -DISLE_WERROR=${ISLE_WERROR} -DISLE_DEBUG=${ISLE_DEBUG} -Werror=dev" + VERBATIM COMMENT "Building Android APK with Gradle" ) message(STATUS "SDL AAR") diff --git a/ISLE/android/config.cpp b/ISLE/android/config.cpp index a03dbfc3..fa5dcd7b 100644 --- a/ISLE/android/config.cpp +++ b/ISLE/android/config.cpp @@ -1,29 +1,29 @@ #include "config.h" -#include #include #include +#include #include void Android_SetupDefaultConfigOverrides(dictionary* p_dictionary) { SDL_Log("Overriding default config for Android"); - const char* data = SDL_GetAndroidExternalStoragePath(); - char* savedata = new char[strlen(data) + strlen("/saves/") + 1 ]; - strcpy(savedata, data); - strcat(savedata, "/saves/"); + const char* data = SDL_GetAndroidExternalStoragePath(); + char* savedata = new char[strlen(data) + strlen("/saves/") + 1]; + strcpy(savedata, data); + strcat(savedata, "/saves/"); - if (!SDL_GetPathInfo(savedata, NULL)) { - SDL_CreateDirectory(savedata); - } + if (!SDL_GetPathInfo(savedata, NULL)) { + SDL_CreateDirectory(savedata); + } iniparser_set(p_dictionary, "isle:diskpath", data); iniparser_set(p_dictionary, "isle:cdpath", data); - iniparser_set(p_dictionary, "isle:savepath", savedata); + iniparser_set(p_dictionary, "isle:savepath", savedata); - // Default to Virtal Mouse - char buf[16]; - iniparser_set(p_dictionary, "isle:Touch Scheme", SDL_itoa(0, buf, 10)); + // Default to Virtal Mouse + char buf[16]; + iniparser_set(p_dictionary, "isle:Touch Scheme", SDL_itoa(0, buf, 10)); } diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 1d1c106d..4b01148b 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -1032,12 +1032,12 @@ bool IsleApp::LoadConfig() #ifdef IOS const char* prefPath = SDL_GetUserFolder(SDL_FOLDER_DOCUMENTS); #elif defined(ANDROID) - // SDL_GetAndroidExternalStoragePath() returns without a trailing / resulting in "filesisle.ini" :( - const char* androidPath = SDL_GetAndroidExternalStoragePath(); - char* prefPath = new char[strlen(androidPath) + 2 ]; - strcpy(prefPath, androidPath); - strcat(prefPath, "/"); - SDL_Log("%s", prefPath); + // SDL_GetAndroidExternalStoragePath() returns without a trailing / resulting in "filesisle.ini" :( + const char* androidPath = SDL_GetAndroidExternalStoragePath(); + char* prefPath = new char[strlen(androidPath) + 2]; + strcpy(prefPath, androidPath); + strcat(prefPath, "/"); + SDL_Log("%s", prefPath); #else char* prefPath = SDL_GetPrefPath("isledecomp", "isle"); #endif