From f06731784e96c90849207e6bc9bd6c6a43fee4da Mon Sep 17 00:00:00 2001 From: Cookie <52550063+Covkie@users.noreply.github.com> Date: Fri, 15 Aug 2025 11:12:35 -0400 Subject: [PATCH] Android port (#656) * initial files * get building * proper paths & default to virtual mouse * Wrap gradle under cmake & build SDL3.aar run cmake with -DANDROID_NDK_PATH=/path/to/ndk to generate the .aar & run the gradle build if using Android Studio you will have to run the aar script manually(or do the cmake cmd) then put the normal cmake args inside '-PcmakeArgs="-DCMAKE_BUILD_TYPE=Release ...."' at `Settings > Build, Execution, Deployment > Gradle-Android Compiler > Command-line Options` Check CMakeLists.txt Android build block for more info * workflow and format * dont cmake -> gradle -> cmake * icons * prevent first start crash due to missing isle.ini dont force require gles3 (vulkan & software are options) * cleanup * cmake script & ci cleanup use a cmake script to downoad SDL3 sources for aar building * script cleanups & gradle stub for android studio handle the env var setting for the sdl3 aar build script * signing needed repository secrets: - keystore : key.jks in base64 - keystorePassword : Key store password - keyAlias : Key alias, ex key0 - keyPassword : Key Password * conditionally run action without keys * compile SDL once & cross-platformize gradle tasks * suggestions * use find_package over manual configuration * use MxString --------- Co-authored-by: Anders Jenbo Co-authored-by: Christian Semmler --- .github/workflows/ci.yml | 45 ++++- .gitignore | 2 + CMakeLists.txt | 40 ++-- ISLE/android/config.cpp | 30 +++ ISLE/android/config.h | 8 + ISLE/isleapp.cpp | 14 ++ android-project/.gitignore | 5 + android-project/app/build.gradle | 101 ++++++++++ .../app/src/main/AndroidManifest.xml | 60 ++++++ .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 20483 bytes .../org/legoisland/isle/IsleActivity.java | 9 + .../res/drawable/ic_launcher_foreground.xml | 141 +++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1996 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3690 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1342 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2520 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 2592 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 5142 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 3652 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 7670 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 4574 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 10746 bytes .../res/values/ic_launcher_background.xml | 4 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + android-project/build.gradle | 4 + android-project/downloadSDL3.cmake | 13 ++ android-project/gradle.properties | 21 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + android-project/gradlew | 185 ++++++++++++++++++ android-project/gradlew.bat | 89 +++++++++ android-project/settings.gradle | 16 ++ miniwin/CMakeLists.txt | 2 +- settings.gradle | 1 + 37 files changed, 803 insertions(+), 13 deletions(-) create mode 100644 ISLE/android/config.cpp create mode 100644 ISLE/android/config.h create mode 100644 android-project/.gitignore create mode 100644 android-project/app/build.gradle create mode 100644 android-project/app/src/main/AndroidManifest.xml create mode 100644 android-project/app/src/main/ic_launcher-playstore.png create mode 100644 android-project/app/src/main/java/org/legoisland/isle/IsleActivity.java create mode 100644 android-project/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android-project/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 android-project/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 android-project/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 android-project/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 android-project/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 android-project/app/src/main/res/values/ic_launcher_background.xml create mode 100644 android-project/app/src/main/res/values/strings.xml create mode 100644 android-project/app/src/main/res/values/styles.xml create mode 100644 android-project/build.gradle create mode 100644 android-project/downloadSDL3.cmake create mode 100644 android-project/gradle.properties create mode 100644 android-project/gradle/wrapper/gradle-wrapper.jar create mode 100644 android-project/gradle/wrapper/gradle-wrapper.properties create mode 100755 android-project/gradlew create mode 100644 android-project/gradlew.bat create mode 100644 android-project/settings.gradle create mode 100644 settings.gradle diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d84f6ab4..9e284eee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,7 @@ 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,} steps: - name: Setup vcvars if: ${{ !!matrix.msvc }} @@ -112,7 +113,41 @@ jobs: - uses: actions/checkout@v4 + - name: Setup Java (Android) + if: ${{ matrix.android }} + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Get CMake (Android) + if: ${{ matrix.android }} + uses: lukka/get-cmake@latest + with: + cmakeVersion: 3.30.5 + + - name: Build (Android) + if: ${{ matrix.android }} + env: + SIGNING_KEY_ALIAS: ${{ secrets.keyAlias }} + SIGNING_KEY_PASSWORD: ${{ secrets.keyPassword }} + SIGNING_STORE_PASSWORD: ${{ secrets.keystorePassword }} + SIGNING_STORE_FILE: ${{ github.workspace }}/release.keystore + run: | + echo "${{ secrets.keystore }}" | base64 -d > release.keystore + cd android-project + ./gradlew $([ -n "$SIGNING_KEY_ALIAS" ] && echo packageRelease || echo assembleDebug ) \ + --info \ + -PcmakeArgs="-DCMAKE_BUILD_TYPE=Release \ + -DISLE_USE_DX5=${{ !!matrix.dx5 }} \ + -DISLE_BUILD_CONFIG=${{ !!matrix.config }} \ + -DENABLE_CLANG_TIDY=${{ !!matrix.clang-tidy }} \ + -DISLE_WERROR=${{ !!matrix.werror }} \ + -DISLE_DEBUG=${{ matrix.debug || 'OFF' }} \ + -Werror=dev" + - name: Configure (CMake) + if: ${{ !matrix.android }} run: | ${{ matrix.cmake-wrapper || '' }} cmake -S . -B build -G "${{ matrix.generator }}" \ ${{ matrix.cmake-args || '' }} \ @@ -126,10 +161,11 @@ jobs: -Werror=dev - name: Build (CMake) + if: ${{ !matrix.android }} run: cmake --build build --verbose --config Release - name: Package (CPack) - if: ${{ !matrix.n3ds }} + if: ${{ !matrix.n3ds && !matrix.android }} run: | cd build success=0 @@ -178,6 +214,12 @@ jobs: mv *.3dsx dist/ mv *.cia dist/ + - name: Package (Android) + if: ${{ matrix.android }} + run: | + mkdir -p build/dist + mv android-project/app/build/outputs/apk/*/*.apk build/dist/ + - name: Package Assets Separately if: matrix.build-assets run: (cd build/assets && zip -r ../dist/isle-assets.zip .) @@ -191,6 +233,7 @@ jobs: build/dist/*.AppImage build/dist/*.3dsx build/dist/*.cia + build/dist/*.apk flatpak: name: "Flatpak (${{ matrix.arch }})" diff --git a/.gitignore b/.gitignore index 1610ba3d..a4bd8a41 100644 --- a/.gitignore +++ b/.gitignore @@ -6,12 +6,14 @@ Release/ /.idea .env .venv +.gradle env/ venv/ ENV/ VENV/ env.bak/ venv.bak/ +local.properties /build/ /build_debug/ /legobin/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 87cb124f..47c9b9c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,22 +73,28 @@ if (DOWNLOAD_DEPENDENCIES) # FetchContent downloads and configures dependencies message(STATUS "Fetching SDL3 and iniparser. This might take a while...") include(FetchContent) - if (WINDOWS_STORE) - FetchContent_Declare( - SDL3 - GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" - GIT_TAG "main" - EXCLUDE_FROM_ALL - ) + + if(ANDROID) + # Built by Gradle + find_package(SDL3 REQUIRED CONFIG COMPONENTS Shared) else() - FetchContent_Declare( + if (WINDOWS_STORE) + FetchContent_Declare( + SDL3 + GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" + GIT_TAG "main" + EXCLUDE_FROM_ALL + ) + else() + FetchContent_Declare( SDL3 GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git" GIT_TAG "main" EXCLUDE_FROM_ALL - ) + ) + endif() + FetchContent_MakeAvailable(SDL3) endif() - FetchContent_MakeAvailable(SDL3) FetchContent_Declare( iniparser @@ -501,6 +507,13 @@ if (ISLE_EXTENSIONS) endif() if (ISLE_BUILD_APP) + + if (ANDROID) + function(add_executable TARGET PLATFORM) + add_library(${TARGET} SHARED ${ARGN}) + endfunction() + endif() + add_executable(isle WIN32 ISLE/res/isle.rc ISLE/isleapp.cpp @@ -580,6 +593,11 @@ if (ISLE_BUILD_APP) ISLE/ios/config.cpp ) endif() + if (ANDROID) + target_sources(isle PRIVATE + ISLE/android/config.cpp + ) + endif() if(Python3_FOUND) if(NOT DEFINED PYTHON_PIL_AVAILABLE) execute_process( @@ -746,7 +764,7 @@ endif() set(install_extra_targets) if(DOWNLOAD_DEPENDENCIES) get_property(sdl3_type TARGET SDL3::SDL3 PROPERTY TYPE) - if(sdl3_type STREQUAL "SHARED_LIBRARY") + if(sdl3_type STREQUAL "SHARED_LIBRARY" AND NOT ANDROID) list(APPEND install_extra_targets "SDL3-shared") endif() endif() diff --git a/ISLE/android/config.cpp b/ISLE/android/config.cpp new file mode 100644 index 00000000..e93cb02e --- /dev/null +++ b/ISLE/android/config.cpp @@ -0,0 +1,30 @@ +#include "config.h" + +#include "mxstring.h" + +#include +#include +#include +#include + +void Android_SetupDefaultConfigOverrides(dictionary* p_dictionary) +{ + SDL_Log("Overriding default config for Android"); + + const char* data = SDL_GetAndroidExternalStoragePath(); + MxString savedata = MxString(data) + "/saves/"; + + if (!SDL_GetPathInfo(savedata.GetData(), NULL)) { + SDL_CreateDirectory(savedata.GetData()); + } + + iniparser_set(p_dictionary, "isle:diskpath", data); + iniparser_set(p_dictionary, "isle:cdpath", data); + iniparser_set(p_dictionary, "isle:mediapath", data); + + iniparser_set(p_dictionary, "isle:savepath", savedata.GetData()); + + // Default to Virtual Mouse + char buf[16]; + iniparser_set(p_dictionary, "isle:Touch Scheme", SDL_itoa(0, buf, 10)); +} diff --git a/ISLE/android/config.h b/ISLE/android/config.h new file mode 100644 index 00000000..5b4ac3d0 --- /dev/null +++ b/ISLE/android/config.h @@ -0,0 +1,8 @@ +#ifndef ANDROID_CONFIG_H +#define ANDROID_CONFIG_H + +#include "dictionary.h" + +void Android_SetupDefaultConfigOverrides(dictionary* p_dictionary); + +#endif // ANDROID_CONFIG_H diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 83a7927c..0d3eee28 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -72,6 +72,10 @@ #include "ios/config.h" #endif +#ifdef ANDROID +#include "android/config.h" +#endif + DECOMP_SIZE_ASSERT(IsleApp, 0x8c) // GLOBAL: ISLE 0x410030 @@ -1027,6 +1031,13 @@ 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(); + size_t len = SDL_strlen(androidPath) + 2; + char* prefPath = new char[len]; + SDL_strlcpy(prefPath, androidPath, len); + SDL_strlcat(prefPath, "/", len); #else char* prefPath = SDL_GetPrefPath("isledecomp", "isle"); #endif @@ -1128,6 +1139,9 @@ bool IsleApp::LoadConfig() #endif #ifdef IOS IOS_SetupDefaultConfigOverrides(dict); +#endif +#ifdef ANDROID + Android_SetupDefaultConfigOverrides(dict); #endif iniparser_dump_ini(dict, iniFP); SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "New config written at '%s'", iniConfig); diff --git a/android-project/.gitignore b/android-project/.gitignore new file mode 100644 index 00000000..bcd50fa6 --- /dev/null +++ b/android-project/.gitignore @@ -0,0 +1,5 @@ +.cxx +.gradle +local.properties +build +*.aar diff --git a/android-project/app/build.gradle b/android-project/app/build.gradle new file mode 100644 index 00000000..dbdb337b --- /dev/null +++ b/android-project/app/build.gradle @@ -0,0 +1,101 @@ +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}" + + 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) +} diff --git a/android-project/app/src/main/AndroidManifest.xml b/android-project/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..7d76ba78 --- /dev/null +++ b/android-project/app/src/main/AndroidManifest.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-project/app/src/main/ic_launcher-playstore.png b/android-project/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..d38af7d8bbad86334b406d81f1bbeb73a759eef4 GIT binary patch literal 20483 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 + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/android-project/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..f4d86bca905aebbd0f9806c95a6e4cda54d3fed1 GIT binary patch literal 1996 zcmV;-2Q&CmNk&G*2LJ$9MM6+kP&iDu2LJ#sN5Byf)lj3h&5S0!W81cETmNhuYwy^$ zr`^e?tZm!2&9UutrP6t8^)p*%yM}9yJ$oZT<(_ z_V?mr{Eltgw*BQxGO;0t+O}hIp4l;y`Tu`rF*bJa`@`DamSv1CC!K9pN#)K)?WD9_ zrLrBUkpLiUF3ikeqj&?7xytJLu25UWpqN1=oq-0xb?68Lz}?f01!0)pxI|Sg{GAc4+|#A9RG1r zW=N{BYVM-~K)^xi7ArExems~PVN#ENqT4fFq{o7h!yepZxJA9%LkEEHRM9*UtR}mM zGWq&{9aCg-%Fd7!^+wNRg`82y#B`p~=K^MPwjoHygg+cS;ovEM4Ng^V{iaAMk92Rf zEL>*|SS|8q-PdwJI8}rZ%{h9>xkf)<=NLs%e2!Mjx|H%mL6a1N@L*<|XhO94v7QYq zwKWNwyBdzUI`_5JaVLxDnUO`bCd;NO{q?eGUVSqv2BgW#4hOg>gXilF%f8-J2VIu_ z(JWiLCH^>H3%vz*Hyk0fc`?_mG$(%8rdn@N=jwXR7@zu-}&zh3?szgD#=>6~tzDze;!!a6OSDDJ91;Z5s+ zxlYp?bEB@!f8zd@eO{dzb9K&ZikNb7${&yQt~bNlZ$(saNBtRsmKQTand0lLn$LK> z=A`^aIn`U@`kRCqp;wRWvVzlsx~)-}>>fuK=WV!PB!61J|G8sXsKNPW7a394w0;7!@L^3wb(0W-nmE9yEPAG+ge@Z6A>AsTMH^bT=$Z(6Ca2Tkab*_grTpqK5hi6<0+;6-kSeApHjD;J-s3Q=ONHVby<~O5 zVM!oP#)LSh|EcN)mqd^J!wr?D!EJQC216Lt+*EPhmDz8I3B`u|;&lIUgJsS28egt4 zhEkE=f_SP`!i8@VIX@$d6e1djR# zvBOZg5&~*P+aU$KwH#b5vfJy<69Qe83RtrQd?j_lWmn)6wNpRC+gOyCW!UYt7od?5 zp-kPQz-eTy;XWOS;FoYXD@3Fu&WKdf(Ab1-neC4N{6z+^oyMhCfdCKy@B?{kq9y+5 zR=OOTsZzgm&KIB+J z>(&nvyTSetwyJf(z<`YrnTkEM;sznt5abzvU@+$}M2|xXI|S8|IzcO11iJ3bK_eqd z*|pnQ*Cvpib$G&AFoE7#%O{+bG=aP|XC+Muv!tMj60+tl5Np87SZl!M_L_?@KlcoF zd);~O*dl1z46TxkQDV+&m`GAWcUBEe_HuWPw#AbO&ss z0zhM|!Fc!JCf^@s(D%CsrpjLcXagYhhe@jm8w&v-UuwuV9-1tFO&16^;dZ0v!JJJX z2BucN3r`5M->a5)hD~}|$CGgYGyyPb*_hfmIk)k#S7!OCM^ycev?%f;m zZKvD-e{W2vS4L^^>u+0kZOb?vOPD$U5J*28N&=t`fDQn<0O+Cj(-#1!rBUls00@}6 em1sev=s5DZ=TOd}qKaO?`rh=bpBQAmhsp$NjObVZ literal 0 HcmV?d00001 diff --git a/android-project/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android-project/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..60a5c4175766c3734934792ac91bb4a20bea6bdc GIT binary patch literal 3690 zcmV-w4wdmzNk&Fu4gdgGMM6+kP&iCg4gdfzN5ByfHQBkgZLuZgYaMrYcXxMpcX#)8 zclYDx>{C^H+pwVKdfvlo}~$*@8rvI$vTXvE?VbcjP} z5o0kHHT(c~GMB9F2W;H-B6KL+-QCWr#o8I}F5?oh+A^X-IwB{h#zNfpKiEX>?jFgZ zwQX&iuS_E|GjlsJbA7sUH*Tj++?`SXCs|~+j%#)}F*{@mGcz+Qrfl1`A={d1+cqOo zv3JB?E3R$Z@4X+eZKGtHC97teCEK=|1WB?@+xoU`+qP}nwr%@Q!M1H{3eUE`ab7}@ zB*{^ewVV|mR=fd}w$TjabuxWCHJ>2IfjG>WRN9vR5T8&W2$X`}pc5x_uMVDyB&{ku z;TKVX`8U5NhjZ#*q57Y$B7QJx3wi;-{l_ZrM%9<2XcI^Ac{fELIl|!_;WQTM2S?GL zC+^82r@ixL+p;)k;}$jmc!O&4Ish@ulFA&R`5d8p9N}aZnZY8VW*86W(7s#Y*#M4L zwZG5-+{Et6QFMwUc7|afgLc5s_J5N_{?8B&{4AkdKL59lVVXN58r$FWhX8s|oudFO zp*|ep=Nw@M9>esbWPbA)h{hA|1faq}U59ahTXi{NU$+f3cSf1*Y$6)pd@Ja>LQyCR z0=Ox)nj`$n*jczGe`9Cl2><>(!210GXMX`$1Fk)#| zSfz%^8eVX*c8eFIn;rk3DRz~0r^7Y?7t7ip;db!Uw_s8GH)e`nW#-rw1kDt^+LT5g ziZnJ|O%rZimgW>v3z%1D7$<3np%vsZuO*lwm$#Jvqqow8m)F z^p;=ES9JtS)EvdmQ&w=Piu_{?bIejau$gj3*+Tu z0>~@H3k<4N#&Z!*D{}P6b&5GZchvk_96bFE9Bo3$@@r-?n#XV`Z%bXnK8<$;g$fc< zrjFDFGq`s>2cbiGIYn%1&aVhw?mQT{+CMtgkQGy1|ii@8V_*RIxM}+S^j|xJys*qQ3I0nr)BhuqvhQA)isx z`dCz`hXRE~ajO!I7hJ^ZW$%o<_auHENN*v+bXr+?fG#N}gqyvNW%rMcD zo0)m$5rX$SYTm65nfap0vldD(3jYJQc^8yZj^*@(n0ah$x)8 zmT|YCJ#7)3WgOSQv3re`(7y(SMfr+yl_0p3vXhNF3miP{P4}3)>}2C}J^RmAbdjkg zhgAkOmbGN-dNWvmgt8he(9}S`U#(+qotI@`A+?axFh!kp>?l^rW*YR`-d>sSF+X^sXAoV3)Yn*_M1WX~ z43WAD-klhH!usxNyTktVJ95n1Jg*oK%~( zaNQx+Px!1go`V?Q=aq^+u2-b((D4R7Qde^HxqY!LLCjP;R#j_5))27jd(-= z`GNr8KqhHejzLO9Kh-Z*9qzJ@7`j)CO6lxPMv?&sO=}`KBz2E2*|?^Oq%cj>2H)NE zm{u`P)3mm}C1k80>-S7m;vol3BaP7FhL~ZObktSqrD0__8tkx9Ec1`OWNnu-^rS5QLt$LcQGW3G~HFn3lJ)UA4Ujeo8nE(nojss2B)r+_o3dL_BwT|DW)!6A$Q_p{D?f;diTKa#JXy8Aj zAEZjy|G#qLYV3iAeF5p4N5nT}7gEdcdb?63!O>yFv{oesIT`(Q$;O99UDT6j?~^81 zY$a-3#eQuoUO{eyRLv;fa}9CtA8me5-he>4Vu)a+^qrHe0lE%jCQs_HL}g1syuKxB zB}nKA9#&5`bR2}ve8AU2IV4Cx^A+$VzE1s+NQQRdC6>6^3NM045zfh+K?C*19%H-u zjacNLxU-c1(+psMrB=c+%YkqFyHMj86ukl$2go*Ppw!x9q>OI8SekOsAGiE=C@;VDms4#9x&wWO zt5q4alBFFje522(VSlO+L8Nq9mahYj1NC;HWDKK1rEUl@I;En(CqTeQ(_PUW zsNcuTCjG`+f&g9uD3nV#*%s$FX9C}=AJt+RJe#jeHzb|{D%$*T_hgRYp*wm3 zf&@??nX^BfMTQDoe#uqva=!8J!kvp>f|v81*e6SXBkVpycX zK))pUhh<@q1G}KwNNS@d(x|Kh04E@T(jlU_FL`31(4`V4{-K7!ednQ_$z&cqBY-me z8o)~c#nPMgRgyO~(&RizP0Ns^<%AK_V&rIsB(gQ?4&t)sGBK8Lu+xa?-7RIJ5Cs7M z90DlVVP&dmj8dgY?e>1NLK8)Lfm{JeAml*XXIeJ<&>KQ;MTUuVJZSw!(`cVqnt<&NQ^QeR!|_LMRGU z1dz9d?sQ24sFzI|Ki%#blzCVQ`aB%q2>shGwQcy40P5eS642X+0Ls=m>}{P-XN2Q( z)%IK?n>3B6W5m<`k?n*$ zSE-#ElqP`c1khqwck^I=%`B@rzoBredOqzeYe;|N2m!SGaXU3AT?s(RXtwU}IbW_{Ddn9Xl*sfg{rDp!|%(vl>s#2+D zds3ygK6AB3`onz(4^(%ivg=Rt=x1?Hk7AYW&=zHE7p=5}@s>P#BQCW~fAW&QS3C38 zrzi!gRjP&VbjhYVQ2FKr(3k*P);H$w*+X%0!Eo-@@nlKb%}oEtpK}^!A^EgMLLs$C zFRU`NZ}Nux8Y3a6!3eoT3a55+gv{3Q9lrg?FP`^Ows4&0v+bl*_5FpQO2#v-jm|bZ+cp;D*tShu&$ey9 z_oMi~d(->Oz=+CfdN^Ec&?@lwb^f_m#n@#Iq!*4@0y<)a6iqv zki?V^8PmEK4GDh`XKgxq(*GQ67(Cg;+ zPOQEx0YZUg?K~KOZQGl+ZGVb<{?lZ`M&1}{>!=Q7naQIN9- zFm{`_=3M$w+PXJuzVC>oGdm0w$t?=+bnvRiq04GKO45)ObNcwZ6|1R=NxWv1Eo=uc zOel5io;1yT&)4bJTP}R*9lWeFTJc+NJgyHOp;2KMYeysOiBc6qNK1YSzz7+~#cz#S z?z64|$3*Q*Bc*J6Pg-60G_cbMlziEwi8v|qj9q&s3uJ=swWGHMRxd5#QBuuMgH|Og zMr~fvMNEj(t`(Y8=s}ZeTtxYGNaV?M;V??3Vyl39so=?SZRBZ%(%gzAc!7*neYIj? z&DmF%@=-?K_IS`Q1Q*H0WNW#3VR8M&60JiekXFjT$0pAoPiI^P9&KD<#*_^7z9DUi zRZo&cZG@EL@o435BP2YE>S10k|1nVCpB#A(Jtz{bzGT1*`>Eu%by`9&i6MpvmnM zOW`z+Z;j3lt*Z?%kLn=ncKD0f(}|JRJ>yBO%BxTw{TiRj7417zOsV*Bq4n*92zVj05v4s$N3PE+Uav3!r%(ZFA|yt0f+$uWi8!laDn&WR3tb# zh1i5`8Q|p9q!mOErCWvI>JPj>!ri-i|KRl*?%s9(2?V!~Y_08S5ZiXA$uwQ~(i_M% zgMAOF`g%M0apa~LO$RO-^=F(^Q2o#M#$yIBb~N=Rg4F-dSJlNI zUynnG7jrS@lwy+BiOjy{_8BIuj;ka_&Oro7H5I4Md!m$2=AVF>f9ioz>MCN_2#}T- z2?3%(FI3yw%J^M-CiB*bB0f9Pxeo_Wl0yeN^Hx(Gy$^h;+A|jz%rXLu!yhX4<8B** zxEq?l%q-@PA)wC8%*-X+k>cQiEI9bXtcDW^kVSw3IPE`)33clo?1~@`?hex@G382? A$p8QV literal 0 HcmV?d00001 diff --git a/android-project/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android-project/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..047b4028b1a6787591e3a7aabc9531f9bc03951e GIT binary patch literal 2520 zcmV;}2`BbaNk&G{2><|BMM6+kP&iD)2><{uFTe{BHHU$;Z5IEwx8FiUOh7uCPnBA2 z|6?h?4xogbWd@7PIp>^nj+@9iZJfm7XoAwx{m!Nb)IbHR;o7#XI@$U2 z&{OK!=i1Y_yL(dMP(nK71E7W-$+l``-oxG99j@Eid#{5Qhu}n&@1UxKWv(4s74JWW$#iz7=i( z?^VqyDmAZ3yr~qZ3^4Nf@okBhEe*J3j#n;Tsq&ex-TJA;tV*DY2rlS z!=`jDFe~bP-ogr?6VhP%Q20&JY&Xk1)>zr2PDnl28Kr~v1FFSP*N~zKVc7we=`#c{ zaE(?2WL0k;Dxb}#0bKw{T>wbVfefbT*G*7d+ISR(Hh-=KR9G%A{63d5B4t%MYRU+e zh}+2KSnvH=c%{dNN|jlkuW6cg;6dNKnGU}>BxA&{5NeOslf@`0zy+%uI%&a9*yaD-hOzkoEO>!qoE;FrVujcyS>;&)rxQxg zRKuz#r+>I@KKA$cdw&|6DTZ}xb`l)_6u0HXmjy+Y6Dad_!z|VYpCPRpN}La%#pVgb z?JSZtU}8EI3r#B!$3Lp9I^}f6IaB>sZKrxVcc#k>^Nc$OA9aineCdW!GKfVsfWZVA zuOY9!tP~$& zZnnegsV!62nx;eK0#A;orG1{eds6NO+31Y}0s|Rz@3x%!>PnK8-%3^x)}MI9Bh5{c zDjlivIL^TOi=Z$}L35!Nce8Xhp9D!VMKqOai`2!9{DVUdQL4>6 zd+38u$k{{wbiZ_ilWSogG5iuY}IjcV*|R*3#F`fW5nE@a_b>Gv`$bWmiSL6mP0N+32pedHPN_3 zB-*FjriU9HQ1SJalVJSZhy-gDJp3P`xdbb)xPQ>%9^CR?$m`dxg34$jQ=;**{KuIP zAV7-tY0HREM+*q>hem)24nLt!5g10vA@H{YhGEod2gmPb2=EI$N$ROW5RcFLJpxqN z1n?7+G-?7zA22E#RJBq+1l$BwRh!g;lQ&bg_z+d=rU(%1TLdsswYHcYM@Q(xc@S&G z<)bMkN0UG$b?DPCsY&&~@@!_1^|oAph5fBF3dNPWOW2cbFFo zFJ3gNhv3Wb;>C+@#o#OwSkkQt$#940pi`v2ivVy?L8|b=& zFR%td*Y!VEX#m)KLZ(1Th|b)+)BL01r!Bt62uLO-&1$fE=}J3!L~`B|xfwx(|;x>Bj<_HXjC&O8bu;(1!mo+D$*z?{8z)#t{M_1_JD! zgZDN`9r!aud@J2E9&Zi0OkTQP+6M3W+BI+lq=Vb_bbGYE&Ip5qVbfs<$!1Ruc1!Np zE#^`ezB2lbga~LVb5&OUcoj!W-Ys0Hvv9GNwC2oq`~Vsoxtu`x2xvo#jlWZC3F!KF z>zR1#@KDkC^Rp@a7aqo2gFgLgj(~n`5{yk+OF-Re_SQ8m*f(n;)J(yDA(^K}_T7H@ z(w(7?MxDjqA*NQoKT8-_Nwjrt%ZQ~T$;(>k>FYa;@p4Owc0*bN7kD4snPWO zRaOC859ev|&IIEyHBQe_^=5t9g8OTOFzc%z0SW;T0aNMElb|-6m%4$SVs3b)+Z&&b z=ToBTYHG0iy*XP)RQkOK`)?936A)zv!-`;i`*R5qVCH1_bN#P46!|&uDRDmZz47-eU%heD~M^KOae3ljLRvRp|o2`-Zui)1nZap literal 0 HcmV?d00001 diff --git a/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..22fb68532b3f65bce7b24fd4a5c0491cabeeb70e GIT binary patch literal 2592 zcmV+*3g7ioNk&E(3IG6CMM6+kP&iBr3IG5vU%(d-HPO|!?X>Ou+qP}nwr$(CZSRF` zk2$w(+qP}n-qBif%rP?l5mqCWHG)1>TK%!Abg5kB7}h$AsLm1CJOLg-DpWZI9)eZw zDt0=n+ugcGpW4P5*ml3$SXC<9s#Y00sZytqb6eZ-O!wHfr!qQJo{qI`+x`Le^E@xY zmvQphwryLnA&1tsLz3RMZQH8)ySnPHS$m`5Ze-iGGTXMj(Pp-7dm|eMjx_)TmLJ)+ zZM()^7cfrKYiw_Bs?*q-Y@440w~-XdS>9uYA22hs7W>n*P(Hb1m z`$FxyeK)x6u5}n$lFJxsQkV5V-Qyz>4~ux1qC?VI{|kHR=&A-%i?U2+I-AD-PxqyH zh<;&&{_wE)OM}jyRXPLBA4ExHGZ|SjFidA3!!Z5kA^MMK(M=c;zcUj-GM>zluo@F0 zArZ~P!m2bzs(ukoIt7Vq*iGAYjs#{k;(0Q4v6P4CEy9raM;GrsmP*Op1xicQF|vdJ zAQ;tFY`}>4LMN$Il~>>Ssm@!80YE5{Io(Jrsg&G{&zwltLBs$c9M+a>rj?Xx{?%Jv zxJPORPeDLDQ&wEe=n zRZhFALec|*l`ww8Clv%29wSunlq5ACrF)-G&Job`8mxxbv15>O@y`u$6m{$Aq+!_x zg#?Z4Oco+815@F)Bp`|<2PKpkdWQ`Zg=M_vhh?I8u>6GAyk@ROW$SSqHzBGrZ?o!! z@~YhqBeJ9MUNglZsel=Am-@+$krR`UACKV?$|pX82+BwcoLBe&0IMx_Uh~7AcT*Om+^?W_STCNg1kwqWiF;#|-$&Beuvxi; zXUZo&Rw41Btc1wHq}9wjs!L}N<05(-$93-PEgMyWhzb{po)JBz zLAl^5DR9W-=d2o6tkR)DI%95s&>HddL0a||LbvB)soZ=^6RM-pXyr<2*A2E495*`Xl#jC`4W(3-xv20_$v84cunBsBMYkYxHt2xV3ZjIt&m0<8K< z74hUUgv@@iU|FRDa?uA0kc_V_F)YifeW{|+rFOGO7GXd#knfgI;E>rn3oC#H6_KSl zu5HUWe8Ndk!_Zu)#=%IA};+eSmV3QI-4H^pES1&K_v>IJwa zI~kf=KVvB&Hy{ycMI0n3pT?ou#?CYje85taLc3JZ1xb`ErvGEmL`A>hmI_HK2*qwM zQQiFyOIgZ$hfi0QLZ&L;`@$0Q@23QfaY2A;MLI#9hg9D+-nBJ_z!z0XZ>fwhIJImq{UB8%eZ2W^I}#ISi8e#XE46 zHOlW*SdxSFzE7Pm9-on_Uhyu}8R3a2C~84cSeENKP-l>xLs0`KsJcb_tV(Rg*zdaZ z`dyur&?(s#dQH5P#CypIk&vjvFukJ_adr9LLs77u*lJSx2Mw8-D1M7Z|I0`x5}AGN zW7>Qv4|2yaLsY=BawGsGCl;9bEJVb^;x~rHe|o?${XZr>!wVOeURY#Lh8O@OSZp_S zh-%1j7D64vN5ap0S+MvAz4tIee~#HUo?JLJ*=y(lfJ6`VxhP_{+O9(a0OUKV@{K2y zN~b%b$7qmrI+hnlUp%u{ CMyn_Q literal 0 HcmV?d00001 diff --git a/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..043c7aa724cb5e6f8bcef0079596dbb1069b90c3 GIT binary patch literal 5142 zcmV+x6zS_yNk&Ev6aWBMMM6+kP&iBh6aWA(U%(d-RfmGMZKRk#?Cl;15itS1bF!9# zP&tnf6h&>v=8vMkvLXS1YFkd5VP2@l#9bHeA)TnB#(o>}A5<80EPJ|D9e6H|X$wE@E@IU4LG>09 zP_%&o8~=8Z1tj(KQ(@3dD>&g~2_vr!*$l5Bq@r$(W;Ih!jS6poWgI6b%yFscr>_bp zAFd7QsFw59m+`H?PCXrP(F|&;&JWqBzlF1bIkDe``OFHwkG(4Ob~09WZQH8b>~z32 zriT34O~gLu!sDl>JTQpa%*@P;5eD=l$+k8(YCcDD&d`9e=q{;MQmOR+Uy)(#VfIdP z4m0n_Lodc_Fz3jEB-ymBxW~4xZQHhXYI&|>0F~D_N zPPD`T`Is(7b~{ycL_$1_jBzn_$_Pm}Wfa5*SCJ48X(!dFhz|1b>j*9_X`_KnjF8l9 z;I|R*!qrHaF7;oBqarC|AST9(Bmn@(M#|_mYn{A%xA}tofotO8Er`EhUwg1lL z<8OM9TdLePe2*P=o%+594QtOo)fUp}1fIh#$l>0ehV?g3A)hDK^Ax&x;s8$^TKe60 z=9zW(e9BdRdFJzf7$IbYZQmj~Yo|Wd+tZLvh0JR_F`Fm$^F%-<2!X7Sk`VHDo|tu+ z=WZanav!b`dQN>R*!|>mi=l!^r%x7T8N$#OBB3(<>Gu6jpS$93d#eG@e+= zNNj$ri1WuV`6N$aIzr{jO*Xbsp1f5<5uP#9R>z8|x5eyR8z8%}Qb$7w$`HpB>ltK4 z3@d63lan??$X03}khxo!ZGjcGMO#8R!94)bL19IT4Ve!Z;e-;{2bN)yFZs|hami31 z%F*VK`JL%H_KCVq@+E)N4xJd4d)nsJ5)%@)V{?{zCrr;sWJS zBv(m_WAs?!RoKXe%x|phV3U7w)Lx3?;{jZ5soT3tZr27?Y|TJ>DlZZ0B7R&CDU#)3 z36>^k0}V8aC0-HJ5DU`9to#yqGi5m2kROw-I;I!LX^apjc%Q}g?QLq0+RgB0vFl6m zcI+QduNbXxLYr&OuA+xXE+12HnztFQVa{{*@;DWP`a(8F*rHS!+{u#?94j&`c|=iT z`7Ot~i|MDIZ~r6S?Cz{|uX=EKQ`Jkt`)H3NP$g9RLthiIJ!HzkaGVGv$uNg{M^YQ0u$=EwgF=$0tPJCQI{P^6 z>jk8$78LX5nv3sf;md~V4R@~T!2eJOlBwu8ELuN)5G!J;%ZyzBz}7IEi_IY%PeM2a zk!E$T06;Sgnt7hmsSLNk_=<^->D1j=XmWmr9nmGR_z;r z^p!JZ3I(z~LY*uJSOkmgA-jH-^mEr&ccc}a=&e585KX>%a%^Dc{9N0u4GR|=>z`E{ z)M$3P%GmWcQN1lVaze*@+;hK^f-N6YL@3CC%ol=so;^Wrk8P&m&3Mu-!VxJkwITI_ zS-pLat(htwo1N})OB0fJVX^79CbJ;lvXk(YHa5hPZP~v@x|cn*u^jwqfZ+huja9(Z zaE_?aD*j3`MfOl7RF7#)nJD2_$Cz~D0>oq)rth9LU)dtZ#3jQ+p5`k(=iZ`rFZH=$ zjtyTnC3@ffEF3cn16&?9+Z_!4o4*3oHR3lX^mLXXk(rbd1 zEc}wSF*dR_PBE(+*lRTGVVfjNO(3(wy~Xa*Tc@|T$f=2bbwFi&aPrY9(IGdD4b0e7 z@o~PrNi7;^*q-|t<*frrTG%) ziB!j0X?sL6-55E-iGX7kLM9^8)Pu__#thC!dln)#CAlYr$A8N?pOfx(SdJ5Tz4M;98&gbXa{*71{7W!yTtQ^xg-wqJt zf>Y&r=+Wq=gboFcsb$%EKteK|A(1u=El~+Wtw&$&6md=>IC*B0O*F{KCWvS4PG^=xsnz_^wPFQYRYq?4;3oWP}=lixM%h#9UcjONX)^rTh%Dk8MdBby=bq&iz z`bvn$SI*1qam-9B8%mSUn;viX-Fhp)v@(p~?jAa<>RG0h=@^-HxI{6_mx`LdnmYiX z*>2-4tb*xeNtZ)ITzo;HCFf1&tUbt-%VdhoQ7FT3qSI#geFvU+7^Zc+sWoJFV;R%} zjWNEtyx*=mw&RbPl38%mg*+m>BhB_bQ&w^p`Ux>9RyUqu9fl3Cbh{NJtf!waWwWkk zi`Zp=&K^H&W;~mQ#hFZ_-%j)vBnOJ`aId3v6C85t4=}zv+W==|!?h9s ztXwtx5CEIKX<(ucXL}=0FI*M4Dw$O$u>SzSLyZOKc6TAj7m|ZzFy+S_F8}1c5Z@->HE*u2Zn72a87DgZy!V?V@a;7-PP)v5w%@RQ^?IZ)|M0RO9@O) zf`27Q>-`C6-qSm7^1~xMQSy*faUn<3RZKKWYIEc_5$_edOh9rMr#UhYa>j%($ z*WDt2(rni=_Cn^SiI_Q4IziSxWyty(c65NWobN#M(b9n18B{w3 zvL|U)-#^ZD8~`~!&2%YX55(*E2q#FKjB(fvg6uz zxqjd*W@lRm2KiE}W$x%~hkm)mv9JUwYv2PYRmEo<6U&e~vsKgF^YDclcx~<0PPQz9 z!k@3kTEDFoS&o(*nbb-@!wz14V|#c5DF?+BUZ67wE+KhlK4xZR6Z8cCd*RyYwxGA( zf<{|P_}$!X0N()cACjl$I(-OaRSTPc0FY^p0nh}t zJ8{JTfFRX!ca9!Q(z zFBFtAiq8BqWzv-OaUO(hRe46YtExd70QUJALKrT{hoq={~Ko%jVVvPS`d zJSmtZS3Q3IW=O;|g`C}C)|{D3@P`y~a(Y++&gx(KfRx_uL6r1%_t(GlKIxtropU#d zW)SqhF2nSgU@BhKVf=}RBW5W8aJO>2YnLa6I$6Vf5y8n{pHWMil)>{Zp&jTLIO{TM zPLuALbyg@xo`d$(P1(lbFIU{&_6;O<(36}E09B&fJ;g6mh_g0*8}TPycng$-mmt)E zk#hCZPX5&Kq{PE!%b0fnP!D>NvymI4>=_mSB-2#Q9E)Z(&bky+nj^9mSWmM(##l^N z{9rS8mMZSO3G+;&FT|V(q<^8}>S0sbOB=Su-$3r}Y8AYj&XY7pExm<55h~0wJf|pGlIb<4AiUjC`(;?Zm6%>)r~-C+L7K4{ zP>qz}cIiDZH387X#a}ydUOR2uN4VV#eg1YYA`X&-4)MAv1c1RD8bnJA<1(kxXc4BY4p;uy6Za~>$@C;R&;n5 zv_L$i%T2s=&G$W~-)0n?@Ft3SM>g>!|Q z-PcnC$D~-Y(__@dXk(|X979BrC*$3>mSq4iPZ+6RFQR(--=YYb|3#MCXokZ0WBUij z_krjZ?)P~B(De7Z?AgHYsw|#_@B^&%t*UWV)6d(I?^lL-+7i%xaN2NJkOIJHl!e22 z=~hn=)AyLHzTXl%-yAKy$Y}vUM>ItTd4vi87Sk2;6Pbnw(|yfKEY)_HXd*ec)-9q) z7PQ|RaJ%V30|1*@v*uaD!jNwX6|Or?sd&B8i&v#co?6du>!MBoaGYnP`jMjrYRG3C z>gF|sqGlNbX3CBK0Klo!GrR{v-Ff$EL{*3w05-{u_-5krouQvi+WyJvb&+ z`1o0JCatsnL$BALI!=)n5xoTfOab6JN5=eY#7qnOK+9z7&R8t}0Kj8~TSSH8O_UDw z1T_H60N^}hp?r~Q_h9S$AguLSiqm82a`qYkE{k8gR486XpPfbJ3I&r+q^Aug{{)PzvZ2NA{2Fy?#ze{!;?huG5*0CZ1E75b9rd)pLt34YO z`b&?$A#oKYA_xF}-|sL4fMw+S5C|@kDav z>Wkc}OL9}o3hAa9 zU@TV+*zn#HH{uHezAeX8R-FCze-xG}ER6$z-%WQx-A8lAtfHVZz-!kVqqWl&%ePe{ zTf1Sl7CekG7JwW`H4=%Krm#*`1B@~2E*Gd4*_tRHot4E?+7v!bB3wDHI*E439Lcr|PC` z+iU)3uGnVdqQ8`=Q4RS>En57#p8w1lboqD2tO5WIZ8`%yhk0B}+;pPJ^z`(l{Q2x- z=5NACon1X@D{2RAV?DoZP4wE1KYXE1U>ny=7-_O+&s2Y>FBQ-3vzztNnpH2?=IIrS z-TigNGI|Q%901rIZhysP*8+ge(}e))n7gIK5wF+AE`6@w z_11nE_`c6Qqw?u1t+nhGZ{OjfL5h4V)#4XbduT%X(ntMevGzq3E3E_o+fZnwilX+5 z{pC?FeVKaExaQXLgH-9;)ayU6yY`ZzpF literal 0 HcmV?d00001 diff --git a/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..baea92cd1b8d472c20fb631936d8df0c36c70b07 GIT binary patch literal 3652 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

3YbVf`1%j2cvRvvYDv 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 I$uHm{87xDr3jhEB literal 0 HcmV?d00001 diff --git a/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..320691a8c4224b1014f068f0e33415b758e10128 GIT binary patch literal 10746 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 + + #39A0D9 + \ No newline at end of file diff --git a/android-project/app/src/main/res/values/strings.xml b/android-project/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..85a6dca0 --- /dev/null +++ b/android-project/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Lego Island + diff --git a/android-project/app/src/main/res/values/styles.xml b/android-project/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..ff6c9d2c --- /dev/null +++ b/android-project/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/android-project/build.gradle b/android-project/build.gradle new file mode 100644 index 00000000..586a2bbd --- /dev/null +++ b/android-project/build.gradle @@ -0,0 +1,4 @@ +plugins { + id 'com.android.application' version '8.7.0' apply false + id 'com.android.library' version '8.7.0' apply false +} diff --git a/android-project/downloadSDL3.cmake b/android-project/downloadSDL3.cmake new file mode 100644 index 00000000..77479e86 --- /dev/null +++ b/android-project/downloadSDL3.cmake @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.25...4.0 FATAL_ERROR) + +include(FetchContent) + +set(FETCHCONTENT_BASE_DIR "build/_deps") + +FetchContent_Populate( + SDL3 + GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git" + GIT_TAG "main" + SOURCE_DIR "build/_deps/sdl3-src" + BINARY_DIR "build/_deps/sdl3-build" +) diff --git a/android-project/gradle.properties b/android-project/gradle.properties new file mode 100644 index 00000000..d5e8af31 --- /dev/null +++ b/android-project/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true diff --git a/android-project/gradle/wrapper/gradle-wrapper.jar b/android-project/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/android-project/gradle/wrapper/gradle-wrapper.properties b/android-project/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..8c558f26 --- /dev/null +++ b/android-project/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/android-project/gradlew b/android-project/gradlew new file mode 100755 index 00000000..4f906e0c --- /dev/null +++ b/android-project/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/android-project/gradlew.bat b/android-project/gradlew.bat new file mode 100644 index 00000000..ac1b06f9 --- /dev/null +++ b/android-project/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android-project/settings.gradle b/android-project/settings.gradle new file mode 100644 index 00000000..36e93e45 --- /dev/null +++ b/android-project/settings.gradle @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "legoisland" +include ':app' diff --git a/miniwin/CMakeLists.txt b/miniwin/CMakeLists.txt index 615832cf..452d5144 100644 --- a/miniwin/CMakeLists.txt +++ b/miniwin/CMakeLists.txt @@ -44,7 +44,7 @@ if(NOT WINDOWS_STORE) message(STATUS "🧩 OpenGL 1.x support not enabled — needs OpenGL") endif() - find_library(OPENGL_ES3_LIBRARY NAMES GLESv2) + find_library(OPENGL_ES3_LIBRARY NAMES GLESv3 GLESv2) if(EMSCRIPTEN OR OPENGL_ES3_LIBRARY) message(STATUS "Found OpenGL: enabling OpenGL ES 3.x renderer") target_sources(miniwin PRIVATE src/d3drm/backends/opengles3/renderer.cpp) diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..9bee1096 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +includeBuild('android-project')