Skip to content

updated ci android

updated ci android #12

Workflow file for this run

name: ci
on: push
jobs:
build:
name: ${{ matrix.platform.name }} ${{ matrix.config.name }} ${{ matrix.type.name }}
runs-on: ${{ matrix.platform.os }}
strategy:
fail-fast: false
matrix:
platform:
- { name: LinuxGCC, os: ubuntu-latest, prefix: xvfb-run -a }
- { name: Android, os: ubuntu-latest }
config:
- { name: Shared}
#- { name: Static, flags: -DBUILD_STATIC=TRUE}
type:
- { name: Release }
- { name: Debug, flags: -DCMAKE_BUILD_TYPE=Debug }
include:
- platform: { name: LinuxGCC, os: ubuntu-latest }
config: { name: Shared}
steps:
- name: checkout code
uses: actions/checkout@v3
- name: cache linux
id: cache-linux
uses: actions/[email protected]
with:
path: SFML/build/install
key: ${{ matrix.platform.name }}-${{ matrix.type.name }}-${{ matrix.config.name }}
- name: install linux dependencies
if: runner.os == 'Linux' && matrix.platform.name != 'Android'
run: |
sudo apt-get update && sudo apt-get install xorg-dev libxrandr-dev libxcursor-dev libudev-dev libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev
- name: build sfml
if: runner.os == 'Linux' && matrix.platform.name != 'Android' && steps.cache-linux.outputs.cache-hit != 'true'
run: |
git clone https://github.com/SFML/SFML && cd SFML && git checkout 2.6.x
export SFML_ROOT=$(pwd)/build/install
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/install -DCMAKE_BUILD_TYPE=${{ matrix.type.name }} .. && make -j4 install && cd ../..
- name: configure and build Maze
if: matrix.platform.name == 'LinuxGCC'
shell: bash
run: |
cmake -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -DSFML_ROOT=$GITHUB_WORKSPACE/SFML/build/install ${{matrix.platform.flags}} ${{matrix.config.flags}} ${{matrix.type.flags}}
${{ matrix.platform.prefix }} cmake --build $GITHUB_WORKSPACE/build --config ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} --target install
- name: cache android
id: cache-android
uses: actions/[email protected]
with:
path: |
/usr/local/lib/android/sdk/ndk/21.4.7075529
key: ${{ matrix.platform.name }}-${{ matrix.type.name }}-${{ matrix.config.name }}
- name: install android dependencies
if: matrix.platform.name == 'Android' && steps.cache-android.outputs.cache-hit != 'true'
run: |
echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;21.4.7075529"
export ANDROID_SDK=${ANDROID_SDK_ROOT}
export ANDROID_NDK=${ANDROID_SDK}/ndk/21.4.7075529
export ANDROID_FLAGS="-DCMAKE_BUILD_TYPE=${{ matrix.type.name }} -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=27"
export ARCH_ABIS="armeabi-v7a arm64-v8a x86 x86_64"
git clone https://github.com/SFML/SFML && cd SFML && git checkout 2.6.x && mkdir build && cd build
export SFML_ANDROID_ROOT=${ANDROID_NDK}/sources/third_party/SFML
for arch in $ARCH_ABIS;do
cmake $ANDROID_FLAGS -DCMAKE_ANDROID_ARCH_ABI=${arch} -DCMAKE_INSTALL_PREFIX=${SFML_ANDROID_ROOT} ..
make -j4 install
rm -R *
done
cd ../..
- name: build apk
if: matrix.platform.name == 'Android'
run: |
export ANDROID_SDK=/usr/local/lib/android/sdk
export ANDROID_NDK=/usr/local/lib/android/sdk/ndk/21.4.7075529
export ANDROID_FLAGS="-DCMAKE_BUILD_TYPE=${{ matrix.type.name }} -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=27"
cd android && echo "sdk.dir=${ANDROID_SDK}/" > local.properties && echo "ndk.dir=${ANDROID_NDK}/" >> local.properties
export NDK_MODULE_PATH=${ANDROID_NDK}/sources/
chmod +755 gradlew
./gradlew assemble${{ matrix.type.name }} --parallel
- name: upload apk debug
if: matrix.platform.name == 'Android' && matrix.type.name == 'Debug'
uses: actions/upload-artifact@v3
with:
name: maze-android-debug-apk
path: android/app/build/outputs/apk/debug/app-debug.apk