From f6fff83396f97a247041f2205978e629ab313bc4 Mon Sep 17 00:00:00 2001 From: Green Sky Date: Thu, 8 May 2025 13:55:27 +0200 Subject: [PATCH] android signing using secret --- .github/workflows/cd.yml | 10 +++++++++- android/CMakeLists.txt | 13 ++++++++++++- android/cmake/TomatoAndroidFunctions.cmake | 9 +++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 android/cmake/TomatoAndroidFunctions.cmake diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 2f32cb7..69bdfe7 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -119,7 +119,7 @@ jobs: - name: Configure CMake env: ANDROID_NDK_HOME: ${{steps.setup_ndk.outputs.ndk-path}} - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=${{matrix.platform.vcpkg_toolkit}} -DANDROID=1 -DANDROID_PLATFORM=23 -DANDROID_ABI=${{matrix.platform.ndk_abi}} -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${{steps.setup_ndk.outputs.ndk-path}}/build/cmake/android.toolchain.cmake -DSDL_ANDROID_JAR=ON -DSDLIMAGE_JPG_SHARED=OFF -DSDLIMAGE_PNG_SHARED=OFF -DTOMATO_MAIN_SO=ON -DTOMATO_TOX_AV=ON -DCMAKE_EXE_LINKER_FLAGS=-gz + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=${{matrix.platform.vcpkg_toolkit}} -DANDROID=1 -DANDROID_PLATFORM=23 -DANDROID_ABI=${{matrix.platform.ndk_abi}} -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${{steps.setup_ndk.outputs.ndk-path}}/build/cmake/android.toolchain.cmake -DSDL_ANDROID_JAR=ON -DSDLIMAGE_JPG_SHARED=OFF -DSDLIMAGE_PNG_SHARED=OFF -DTOMATO_MAIN_SO=ON -DTOMATO_TOX_AV=ON -DTOMATO_ANDROID_HAVE_DEBUG_KEYSTORE=ON -DCMAKE_EXE_LINKER_FLAGS=-gz - name: Build (tomato) run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4 -t tomato @@ -127,9 +127,17 @@ jobs: - name: Build (SDL3-jar) (workaround) run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4 -t SDL3-jar + - name: setup keystore + run: | + echo "${{secrets.ANDROID_DEBUG_KEYSTORE}}" | base64 -d > tomato-debug-keystore.keystore + ls -lAh + - name: Build (apk) run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4 -t tomato-apk + - name: cleanup keystore + run: rm -rf tomato-debug-keystore.keystore + - name: Determine tag name id: tag shell: bash diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt index 4a999f3..e7b5c4d 100644 --- a/android/CMakeLists.txt +++ b/android/CMakeLists.txt @@ -4,6 +4,7 @@ project(tomato_android) # here be dragons +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${SDL3_SOURCE_DIR}/cmake/android") find_package(SdlAndroid MODULE) @@ -11,8 +12,18 @@ find_package(Java) find_package(SdlAndroidPlatform MODULE) # the existence of SDL3::Jar usually implies platform if(SdlAndroid_FOUND) + include(TomatoAndroidFunctions) include(SdlAndroidFunctions) - sdl_create_android_debug_keystore(tomato-debug-keystore) + + # TODO: make more generic + option(TOMATO_ANDROID_HAVE_DEBUG_KEYSTORE "we provide tomato-debug-keystore.keystore" OFF) + if (${TOMATO_ANDROID_HAVE_DEBUG_KEYSTORE}) + tomato_load_android_keystore(tomato-debug-keystore) + else() + # fallback to generating a new keystore + sdl_create_android_debug_keystore(tomato-debug-keystore) + endif() + sdl_android_compile_resources(tomato-resources RESFOLDER app/res) diff --git a/android/cmake/TomatoAndroidFunctions.cmake b/android/cmake/TomatoAndroidFunctions.cmake new file mode 100644 index 0000000..9cc1d91 --- /dev/null +++ b/android/cmake/TomatoAndroidFunctions.cmake @@ -0,0 +1,9 @@ +# based on code from SDLAndroidFunctions.cmake + +# target name is name of file without .keystore +function(tomato_load_android_keystore TARGET) + set(output "${CMAKE_SOURCE_DIR}/${TARGET}.keystore") + add_custom_target(${TARGET} DEPENDS "${output}") + set_property(TARGET ${TARGET} PROPERTY OUTPUT "${output}") +endfunction() +