From 02f81e916240095015ee829539efa1445b1f0369 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 20 Oct 2021 13:54:05 -0700 Subject: [PATCH] Android App Bundle support Update Update Update --- .github/workflows/android_release.yml | 14 ++++++++++++-- QGCCommon.pri | 19 ++++++++++++------- QGCPostLinkInstaller.pri | 16 +++++++--------- android/android_release.keystore | Bin 2211 -> 4486 bytes 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/.github/workflows/android_release.yml b/.github/workflows/android_release.yml index 467e024..d8be25a 100644 --- a/.github/workflows/android_release.yml +++ b/.github/workflows/android_release.yml @@ -15,6 +15,7 @@ defaults: env: SOURCE_DIR: ${{ github.workspace }} QT_VERSION: 5.15.2 + ARTIFACT: QGroundControl.aab jobs: build: @@ -90,6 +91,8 @@ jobs: - name: Build working-directory: ${{ runner.temp }}/shadow_build_dir + env: + ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} run: | if [ $GIT_BRANCH_NAME == "Stable*" ]; then echo "Stable build" && @@ -98,12 +101,19 @@ jobs: echo "Daily build" && export STABLE_OR_DAILY=DailyBuild; fi - qmake -r ${SOURCE_DIR}/qgroundcontrol.pro -spec android-clang CONFIG+=${STABLE_OR_DAILY} ANDROID_ABIS="armeabi-v7a arm64-v8a" - make -j2 apk + qmake -r ${SOURCE_DIR}/qgroundcontrol.pro -spec android-clang CONFIG+=installer CONFIG+=${STABLE_OR_DAILY} ANDROID_ABIS="armeabi-v7a arm64-v8a" + make -j2 aab - name: ccache post-run run: ccache -s + - name: Save artifact + uses: actions/upload-artifact@master + with: + if: github.event_name == 'push' + name: ${{ env.ARTIFACT }} + path: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }} + # Currently disabled since credentials are not working correctly - name: Upload to S3 Bucket if: ${{ false }} diff --git a/QGCCommon.pri b/QGCCommon.pri index a6adec4..4ed68be 100644 --- a/QGCCommon.pri +++ b/QGCCommon.pri @@ -68,7 +68,7 @@ linux { } else:equals(ANDROID_TARGET_ARCH, x86) { CONFIG += Androidx86Build DEFINES += __androidx86__ - message("Android Arm build") + message("Android x86 build") } else { error("Unsupported Android architecture: $${ANDROID_TARGET_ARCH}") } @@ -166,15 +166,18 @@ exists ($$PWD/.git) { message(GIT_DESCRIBE $${GIT_DESCRIBE}) - # determine if we're on a tag matching vX.Y.Z (stable release) - contains(GIT_DESCRIBE, v[0-9]+.[0-9]+.[0-9]+) { - # release version "vX.Y.Z" + # Pull the version info from the last annotated version tag + # Stable builds will be in the format v#.#.# + # Daily builds on master will be in format d#.#.# + contains(GIT_DESCRIBE, ^[vd][0-9]+.[0-9]+.[0-9]+.*) { + message( release version "vX.Y.Z") GIT_VERSION = $${GIT_DESCRIBE} VERSION = $$replace(GIT_DESCRIBE, "v", "") + VERSION = $$replace(GIT_DESCRIBE, "d", "") VERSION = $$replace(VERSION, "-", ".") VERSION = $$section(VERSION, ".", 0, 3) } else { - # development version "Development branch:sha date" + message(development version "Development branch:sha date") GIT_VERSION = "Development $${GIT_BRANCH}:$${GIT_HASH} $${GIT_TIME}" VERSION = 0.0.0 } @@ -194,6 +197,7 @@ exists ($$PWD/.git) { } AndroidBuild { + message(VERSION $${VERSION}) MAJOR_VERSION = $$section(VERSION, ".", 0, 0) MINOR_VERSION = $$section(VERSION, ".", 1, 1) PATCH_VERSION = $$section(VERSION, ".", 2, 2) @@ -225,10 +229,11 @@ AndroidBuild { DEV_VERSION = $$join(DEV_VERSION, "", "0") } + # Bitness is 66/34 instead of 64/32 in because of a required version number bump screw-up ages ago equals(ANDROID_TARGET_ARCH, arm64-v8a) { - ANDROID_BITNESS = 64 + ANDROID_BITNESS = 66 } else { - ANDROID_BITNESS = 32 + ANDROID_BITNESS = 34 } # Version code format: BBMIPPDDD (B=Bitness, I=Minor) diff --git a/QGCPostLinkInstaller.pri b/QGCPostLinkInstaller.pri index 5313dad..e67797d 100644 --- a/QGCPostLinkInstaller.pri +++ b/QGCPostLinkInstaller.pri @@ -56,16 +56,14 @@ installer { QMAKE_POST_LINK += && tar -cj --exclude='package' -f package/QGroundControl.tar.bz2 staging --transform 's/$${DESTDIR}/qgroundcontrol/' } AndroidBuild { - QMAKE_POST_LINK += && mkdir -p package - QMAKE_POST_LINK += && make apk_install_target INSTALL_ROOT=android-build/ - QMAKE_POST_LINK += && androiddeployqt --input android-libQGroundControl.so-deployment-settings.json --output android-build --deployment bundled --gradle --sign $${SOURCE_DIR}/android/android_release.keystore dagar --storepass $$(ANDROID_STOREPASS) - contains(QT_ARCH, arm) { - QGC_APK_BITNESS = "32" - } else:contains(QT_ARCH, arm64) { - QGC_APK_BITNESS = "64" + _ANDROID_KEYSTORE_PASSWORD = $$(ANDROID_KEYSTORE_PASSWORD) + isEmpty(_ANDROID_KEYSTORE_PASSWORD) { + message(Skipping androiddeployqt since keystore password is not available) } else { - QGC_APK_BITNESS = "" + QMAKE_POST_LINK += && mkdir -p package + QMAKE_POST_LINK += && make apk_install_target INSTALL_ROOT=android-build/ + QMAKE_POST_LINK += && androiddeployqt --verbose --input android-QGroundControl-deployment-settings.json --output android-build --release --aab --sign $${SOURCE_DIR}/android/android_release.keystore QGCAndroidKeyStore --storepass $$(ANDROID_KEYSTORE_PASSWORD) + QMAKE_POST_LINK += && cp android-build/build/outputs/bundle/release/android-build-release.aab package/QGroundControl.aab } - QMAKE_POST_LINK += && cp android-build/build/outputs/apk/android-build-release-signed.apk package/QGroundControl$${QGC_APK_BITNESS}.apk } } diff --git a/android/android_release.keystore b/android/android_release.keystore index a349ecf790ccfab95c7a62fed13a4f10584573f7..0df2000ee7d736511668554f05145ae84f33be6d 100644 GIT binary patch literal 4486 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