Skip to content

Fix formatting

Fix formatting #7456

Workflow file for this run

name: Android Build
on:
push:
paths:
- 'vcpkg/**'
- 'vcpkg.json'
- 'VCPKG_BASELINE'
- 'app/**'
- 'core/**'
- 'scripts/**'
- 'cmake/**'
- 'cmake_templates/**'
- 'CMakeLists.txt'
- '.github/workflows/android.yml'
release:
types:
- published
concurrency:
group: ci-${{github.ref}}-android
cancel-in-progress: true
jobs:
android_build:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
strategy:
fail-fast: false
matrix:
include:
- TRIPLET: 'arm-android'
ANDROID_ABI: 'armeabi-v7a'
BUILD_OFFSET: 10
- TRIPLET: 'arm64-android'
ANDROID_ABI: 'arm64-v8a'
BUILD_OFFSET: 50
runs-on: macos-15
env:
NDK_VERSION: 'r27' # '27.2.12479018'
NDK_VERSION_FULL: r27c
JDK_VERSION: 17
SDK_PLATFORM: android-35
ANDROIDAPI: 24
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
SDK_BUILD_TOOLS: 34.0.0
CMAKE_VERSION: '3.31.6'
QT_ANDROID_KEYSTORE_ALIAS: input
QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }}
QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }}
XC_VERSION: ${{ '16.2' }}
VCPKG_ROOT: '${{ github.workspace }}/vcpkg'
LC_ALL: 'en_US.UTF-8' #fastlane
LANG: 'en_US.UTF-8' #fastlane
steps:
- uses: actions/checkout@v4
with:
path: mm
#
# Free up space by removing unused XCode versions
#
# See https://github.com/actions/runner-images/issues/10511
# Removes all XCode versions, but the one we use
#
- name: Delete unused XC versions to reclaim disk space
shell: bash
run: |
find /Applications/Xcode_* -maxdepth 0 -type d ! -name 'Xcode_${{ env.XC_VERSION }}.app' -exec rm -rf {} \;
- name: Install Build Dependencies
run: |
brew uninstall cmake
brew install gnupg
brew install automake bison flex gnu-sed autoconf-archive libtool gettext lcov openssl mono
echo $(brew --prefix bison)/bin >> $GITHUB_PATH
echo $(brew --prefix flex)/bin >> $GITHUB_PATH
echo $(brew --prefix gettext)/bin >> $GITHUB_PATH
if [[ ${{ github.ref }} == refs/tags/* ]]
then
export GIT_TAG="${GITHUB_REF//refs\/tags\//}"
export GIT_BRANCH=""
else
export GIT_TAG=""
export GIT_BRANCH="${GITHUB_REF//refs\/heads\//}"
fi
echo "GIT_TAG: $GIT_TAG"
echo "GIT_BRANCH: $GIT_BRANCH"
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
echo "GIT_BRANCH=$GIT_BRANCH" >> $GITHUB_ENV
- name: Install CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ env.CMAKE_VERSION }}
- name: Setup XCode
uses: maxim-lobanov/[email protected]
with:
xcode-version: ${{ env.XC_VERSION }}
- name: Extract Mergin API_KEY
env:
MERGINSECRETS_DECRYPT_KEY: ${{ secrets.MERGINSECRETS_DECRYPT_KEY }}
run: |
cd mm/core/
$HOMEBREW_PREFIX/bin/openssl \
aes-256-cbc -d \
-in merginsecrets.cpp.enc \
-out merginsecrets.cpp \
-k "$MERGINSECRETS_DECRYPT_KEY" \
-md md5
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ccache-${{ env.TRIPLET }}
max-size: 200M
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: ${{ env.NDK_VERSION_FULL }}
add-to-path: true
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: ${{ env.JDK_VERSION }}
distribution: zulu
- name: Setup Android SDK
uses: malinskiy/action-android/install-sdk@release/0.1.7
- name: Install Android Tools
run: |
sdkmanager --verbose "platforms;${SDK_PLATFORM}" "build-tools;${SDK_BUILD_TOOLS}" tools platform-tools
- name: Extract GPS keystore
env:
INPUTKEYSTORE_DECRYPT_KEY: ${{ secrets.INPUTKEYSTORE_DECRYPT_KEY }}
run: |
$HOMEBREW_PREFIX/bin/openssl \
aes-256-cbc -d \
-in mm/scripts/ci/android/Input_keystore.keystore.enc \
-out mm/Input_keystore.keystore \
-k $INPUTKEYSTORE_DECRYPT_KEY \
-md md5
PATH_TO_KEYSTORE=`pwd`/mm/Input_keystore.keystore
echo "path to keystore $PATH_TO_KEYSTORE"
echo "QT_ANDROID_KEYSTORE_PATH=$PATH_TO_KEYSTORE" >> $GITHUB_ENV
- name: Install vcpkg
shell: bash
run: |
mkdir -p "${{ env.VCPKG_ROOT }}"
cd "${{ env.VCPKG_ROOT }}"
git init
git remote add origin https://github.com/microsoft/vcpkg.git
git pull origin master
VCPKG_TAG=`cat ${{ github.workspace }}/mm/VCPKG_BASELINE`
git checkout ${VCPKG_TAG}
cd "${{ env.VCPKG_ROOT }}"
chmod +x ./bootstrap-vcpkg.sh
./bootstrap-vcpkg.sh
- name: Setup NuGet Credentials
shell: bash
run: |
mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/merginmaps/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "mergin-maps-bot" \
-password "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}"
mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \
setapikey "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/merginmaps/index.json"
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
working-directory: mm/fastlane
ruby-version: '3.3'
bundler-cache: true
- name: Decode Google Play JSON Key
run: |
$HOMEBREW_PREFIX/bin/openssl \
aes-256-cbc -d \
-in mm/scripts/ci/android/google_play_key.json.enc \
-out mm/google_play_key.json \
-k ${{ secrets.MM_GOOGLE_SERVICE_ACCOUNT_DECRYPTION_KEY }} \
-md md5
MM_GOOGLE_KEY_PATH=`pwd`/mm/google_play_key.json
echo "path to keystore $MM_GOOGLE_KEY_PATH"
echo "MM_GOOGLE_KEY_PATH=$MM_GOOGLE_KEY_PATH" >> $GITHUB_ENV
- name: Calculate build number
run: |
BUILD_NUM=$GITHUB_RUN_NUMBER$((GITHUB_RUN_ATTEMPT + ${{ matrix.BUILD_OFFSET }}))
echo "MM_VERSION_CODE=${BUILD_NUM}" >> $GITHUB_ENV
echo "Version code: ${BUILD_NUM}"
# add build number to summary
echo ":rocket: Build number: ${BUILD_NUM}" >> $GITHUB_STEP_SUMMARY
- name: Configure app
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
mkdir -p ${{ github.workspace }}/build-mm
cd ${{ github.workspace }}/build-mm
export PATH=${{ env.VCPKG_ROOT }}:$PATH
export ANDROID_ABI=${{ matrix.ANDROID_ABI }}
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_SDK_ROOT=${ANDROID_SDK_ROOT} \
-DANDROID_NDK_VERSION="${ANDROID_NDK_VERSION}" \
-DANDROID_BUILD_TOOLS_VERSION="${ANDROID_BUILD_TOOLS_VERSION}" \
-DVCPKG_HOST_TRIPLET=arm64-osx \
-DVCPKG_TARGET_TRIPLET="${{ matrix.triplet }}" \
-DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \
-DANDROID_ABI=${{ matrix.ANDROID_ABI }} \
-DQT_ANDROID_ABIS=${{ matrix.ANDROID_ABI }} \
-DQT_ANDROID_SIGN_APK=Yes \
-DQT_ANDROID_SIGN_AAB=Yes \
-DUSE_MM_SERVER_API_KEY=Yes \
-DUSE_KEYCHAIN=No \
-DCMAKE_TOOLCHAIN_FILE:PATH="${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" \
-GNinja \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-S ../mm \
-B ./
- name: Build APK
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
cd ${{ github.workspace }}/build-mm
ninja apk
echo "APKs:"
find . | grep .apk
- name: Rename APK artefacts
run: |
mv \
${{ github.workspace }}/build-mm/app/android-build/build/outputs/apk/release/android-build-release-signed.apk \
${{ github.workspace }}/merginmaps-${{ env.MM_VERSION_CODE }}-${{ matrix.ANDROID_ABI }}.apk
- name: Upload APK to Artifacts
uses: actions/upload-artifact@v4
with:
path: ${{ github.workspace }}/merginmaps-${{ env.MM_VERSION_CODE }}-${{ matrix.ANDROID_ABI }}.apk
name: Mergin Maps ${{ env.MM_VERSION_CODE }} APK [${{ matrix.ANDROID_ABI }}]
- name: Deploy App to Google play - Internal app sharing
if: ${{ !(github.ref_name == 'master' || github.ref_type == 'tag') }}
run: |
cd ${{ github.workspace }}/mm/fastlane
FASTLANE_OUTPUT=$(bundle exec fastlane deploy_app_sharing apk_path:${{ github.workspace }}/merginmaps-${{ env.MM_VERSION_CODE }}-${{ matrix.ANDROID_ABI }}.apk)
echo "$FASTLANE_OUTPUT"
SHARE_URL=$(echo "$FASTLANE_OUTPUT" | awk '/APP_SHARE_URL:/ {print $NF}')
echo "Google play store APK link: $SHARE_URL" >> $GITHUB_STEP_SUMMARY
- name: Build AAB
if: ${{ github.ref_name == 'master' || github.ref_type == 'tag' }}
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
cd ${{ github.workspace }}/build-mm
ninja aab
echo "AAB:"
find . | grep .aab
- name: Rename AAB artefacts
if: ${{ github.ref_name == 'master' || github.ref_type == 'tag' }}
run: |
mv \
${{ github.workspace }}/build-mm/app/android-build/build/outputs/bundle/release/android-build-release.aab \
${{ github.workspace }}/merginmaps-${{ env.MM_VERSION_CODE }}-${{ matrix.ANDROID_ABI }}.aab
- name: Upload AAB to Artifacts
if: ${{ github.ref_name == 'master' || github.ref_type == 'tag' }}
uses: actions/upload-artifact@v4
with:
path: ${{ github.workspace }}/merginmaps-${{ env.MM_VERSION_CODE }}-${{ matrix.ANDROID_ABI }}.aab
name: Mergin Maps ${{ env.MM_VERSION_CODE }} AAB [${{ matrix.ANDROID_ABI }}]
- name: Deploy App to Google play - Internal app sharing
if: ${{ github.ref_name == 'master' || github.ref_type == 'tag' }}
run: |
cd ${{ github.workspace }}/mm/fastlane
FASTLANE_OUTPUT=$(bundle exec fastlane deploy_app_sharing aab_path:${{ github.workspace }}/merginmaps-${{ env.MM_VERSION_CODE }}-${{ matrix.ANDROID_ABI }}.aab)
echo "$FASTLANE_OUTPUT"
SHARE_URL=$(echo "$FASTLANE_OUTPUT" | awk '/APP_SHARE_URL:/ {print $NF}')
echo "Google play store AAB link: $SHARE_URL" >> $GITHUB_STEP_SUMMARY