Skip to content

Commit f21469b

Browse files
committed
chore: split Qt 6.10.1/6.10.3 Android AAB by min/max SDK range
1 parent 7b16f42 commit f21469b

4 files changed

Lines changed: 53 additions & 8 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -864,24 +864,28 @@ jobs:
864864
VERSION=$(grep CMAKE_PROJECT_VERSION:STATIC deploy/build/CMakeCache.txt | cut -d= -f2)
865865
866866
(cd deploy/build/client/android-build && mv AmneziaVPN.apk AmneziaVPN_${VERSION}_android9+_universal.apk)
867-
(cd deploy/build/client/android-build/build/outputs/bundle/release && mv android-build-release.aab AmneziaVPN_${VERSION}.aab)
868867
869868
for abi in arm64-v8a armeabi-v7a x86 x86_64; do
870869
deploy/build.sh -t android --sign --abi ${abi} --build ./deploy/build/${abi}
871870
(cd deploy/build/${abi}/client/android-build && mv AmneziaVPN.apk AmneziaVPN_${VERSION}_android9+_${abi}.apk)
872871
done
873872
873+
BASE_VERSION_CODE=$(grep -oP '(?<=set\(APP_ANDROID_VERSION_CODE )\d+' CMakeLists.txt)
874+
APP_ANDROID_MIN_SDK=30 APP_ANDROID_MAX_SDK=36 APP_ANDROID_VERSION_CODE=$((BASE_VERSION_CODE + 2)) deploy/build.sh -t android --sign --aab --build ./deploy/build/aab
875+
876+
(cd deploy/build/aab/client/android-build/build/outputs/bundle/release && mv android-build-release.aab AmneziaVPN_${VERSION}_android11-16.aab)
877+
874878
- name: 'Upload universal APK'
875879
uses: actions/upload-artifact@v7
876880
with:
877881
path: deploy/build/client/android-build/*.apk
878882
archive: false
879883
retention-days: 7
880884

881-
- name: 'Upload AAB'
885+
- name: 'Upload android11-16 AAB'
882886
uses: actions/upload-artifact@v7
883887
with:
884-
path: deploy/build/client/android-build/build/outputs/bundle/release/*.aab
888+
path: deploy/build/aab/client/android-build/build/outputs/bundle/release/*.aab
885889
archive: false
886890
retention-days: 7
887891

@@ -1009,15 +1013,22 @@ jobs:
10091013
QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/android.keystore
10101014
QT_ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_RELEASE_KEYSTORE_KEY_ALIAS }}
10111015
QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_RELEASE_KEYSTORE_KEY_PASS }}
1016+
APP_ANDROID_MIN_SDK: 28
1017+
APP_ANDROID_MAX_SDK: 29
10121018
shell: bash
10131019
run: |
10141020
for abi in arm64-v8a armeabi-v7a; do
10151021
deploy/build.sh -t android --sign --abi ${abi} --build ./deploy/build/${abi}
10161022
10171023
VERSION=$(grep CMAKE_PROJECT_VERSION:STATIC deploy/build/${abi}/CMakeCache.txt | cut -d= -f2)
1018-
(cd deploy/build/${abi}/client/android-build && mv AmneziaVPN.apk AmneziaVPN_${VERSION}_android9+_qt_6_10_${abi}.apk)
1024+
(cd deploy/build/${abi}/client/android-build && mv AmneziaVPN.apk AmneziaVPN_${VERSION}_android9-10_qt_6_10_${abi}.apk)
10191025
done
10201026
1027+
BASE_VERSION_CODE=$(grep -oP '(?<=set\(APP_ANDROID_VERSION_CODE )\d+' CMakeLists.txt)
1028+
APP_ANDROID_VERSION_CODE=$((BASE_VERSION_CODE + 1)) deploy/build.sh -t android --sign --aab --build ./deploy/build/aab
1029+
1030+
(cd deploy/build/aab/client/android-build/build/outputs/bundle/release && mv android-build-release.aab AmneziaVPN_${VERSION}_android9-10.aab)
1031+
10211032
- name: 'Upload arm64-v8a APK'
10221033
uses: actions/upload-artifact@v7
10231034
with:
@@ -1032,6 +1043,13 @@ jobs:
10321043
archive: false
10331044
retention-days: 7
10341045

1046+
- name: 'Upload android9-10 AAB'
1047+
uses: actions/upload-artifact@v7
1048+
with:
1049+
path: deploy/build/aab/client/android-build/build/outputs/bundle/release/*.aab
1050+
archive: false
1051+
retention-days: 7
1052+
10351053
# ------------------------------------------------------
10361054

10371055
Extra:

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ string(TIMESTAMP CURRENT_DATE "%Y-%m-%d")
2828
set(RELEASE_DATE "${CURRENT_DATE}")
2929

3030
set(APP_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH})
31-
set(APP_ANDROID_VERSION_CODE 2136)
31+
if(NOT DEFINED APP_ANDROID_VERSION_CODE)
32+
set(APP_ANDROID_VERSION_CODE 2136)
33+
endif()
3234

3335
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
3436
set(MZ_PLATFORM_NAME "linux")

client/cmake/android.cmake

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,41 @@
11
message("Client android ${CMAKE_ANDROID_ARCH_ABI} build")
22

3-
set(APP_ANDROID_MIN_SDK 28)
3+
if(NOT DEFINED APP_ANDROID_MIN_SDK)
4+
set(APP_ANDROID_MIN_SDK 28)
5+
endif()
46
set(ANDROID_PLATFORM "android-${APP_ANDROID_MIN_SDK}" CACHE STRING
57
"The minimum API level supported by the application or library" FORCE)
68

79
# set QTP0002 policy: target properties that specify Android-specific paths may contain generator expressions
810
qt_policy(SET QTP0002 NEW)
911

12+
set(APP_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)
13+
14+
# Qt has no target property for android:maxSdkVersion, so when a max SDK is requested we
15+
# stage a copy of the package source dir with a <uses-sdk> tag injected into the manifest;
16+
# the Android Gradle Plugin manifest merger combines it with the min/targetSdk it generates
17+
# from QT_ANDROID_MIN/TARGET_SDK_VERSION.
18+
if(DEFINED APP_ANDROID_MAX_SDK)
19+
set(APP_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/android-package-source)
20+
file(REMOVE_RECURSE ${APP_ANDROID_PACKAGE_SOURCE_DIR})
21+
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/android/ DESTINATION ${APP_ANDROID_PACKAGE_SOURCE_DIR})
22+
23+
set(manifest_path ${APP_ANDROID_PACKAGE_SOURCE_DIR}/AndroidManifest.xml)
24+
file(READ ${manifest_path} manifest_contents)
25+
string(REPLACE
26+
"android:installLocation=\"auto\">"
27+
"android:installLocation=\"auto\">\n\n <uses-sdk android:maxSdkVersion=\"${APP_ANDROID_MAX_SDK}\" />"
28+
manifest_contents "${manifest_contents}")
29+
file(WRITE ${manifest_path} "${manifest_contents}")
30+
endif()
31+
1032
set_target_properties(${PROJECT} PROPERTIES
1133
QT_ANDROID_VERSION_NAME ${CMAKE_PROJECT_VERSION}
1234
QT_ANDROID_VERSION_CODE ${APP_ANDROID_VERSION_CODE}
1335
QT_ANDROID_MIN_SDK_VERSION ${APP_ANDROID_MIN_SDK}
1436
QT_ANDROID_TARGET_SDK_VERSION 36
1537
QT_ANDROID_SDK_BUILD_TOOLS_REVISION 36.0.0
16-
QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android
38+
QT_ANDROID_PACKAGE_SOURCE_DIR ${APP_ANDROID_PACKAGE_SOURCE_DIR}
1739
)
1840

1941
set(QT_ANDROID_MULTI_ABI_FORWARD_VARS "QT_NO_GLOBAL_APK_TARGET_PART_OF_ALL;CMAKE_BUILD_TYPE")

deploy/build.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ case "$TARGET" in
123123
android)
124124
no_installers=1
125125
: ${CMAKE_GENERATOR:="Ninja"}
126-
: ${ANDROID_PLATFORM:="android-28"}
126+
: ${ANDROID_PLATFORM:="android-${APP_ANDROID_MIN_SDK:-28}"}
127127

128128
if [[ -n "$SIGN" ]]; then
129129
QT_ANDROID_SIGN_APK=TRUE
@@ -197,6 +197,9 @@ args=()
197197
[[ -n "$ANDROID_SDK_ROOT" ]] && args+=("-DANDROID_SDK_ROOT=$ANDROID_SDK_ROOT")
198198
[[ -n "$ANDROID_NDK_ROOT" ]] && args+=("-DANDROID_NDK_ROOT=$ANDROID_NDK_ROOT")
199199
[[ -n "$ANDROID_PLATFORM" ]] && args+=("-DANDROID_PLATFORM=$ANDROID_PLATFORM")
200+
[[ -n "$APP_ANDROID_MIN_SDK" ]] && args+=("-DAPP_ANDROID_MIN_SDK=$APP_ANDROID_MIN_SDK")
201+
[[ -n "$APP_ANDROID_MAX_SDK" ]] && args+=("-DAPP_ANDROID_MAX_SDK=$APP_ANDROID_MAX_SDK")
202+
[[ -n "$APP_ANDROID_VERSION_CODE" ]] && args+=("-DAPP_ANDROID_VERSION_CODE=$APP_ANDROID_VERSION_CODE")
200203
[[ -n "$QT_ANDROID_SIGN_APK" ]] && args+=("-DQT_ANDROID_SIGN_APK=$QT_ANDROID_SIGN_APK")
201204
[[ -n "$QT_ANDROID_SIGN_AAB" ]] && args+=("-DQT_ANDROID_SIGN_AAB=$QT_ANDROID_SIGN_AAB")
202205
[[ -n "$QT_ANDROID_ABIS" ]] && args+=("-DQT_ANDROID_ABIS=$QT_ANDROID_ABIS")

0 commit comments

Comments
 (0)