summaryrefslogtreecommitdiffstats
path: root/src/corelib/Qt5AndroidSupport.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/Qt5AndroidSupport.cmake')
-rw-r--r--src/corelib/Qt5AndroidSupport.cmake72
1 files changed, 50 insertions, 22 deletions
diff --git a/src/corelib/Qt5AndroidSupport.cmake b/src/corelib/Qt5AndroidSupport.cmake
index 5512635f97..8ed9d7b4cc 100644
--- a/src/corelib/Qt5AndroidSupport.cmake
+++ b/src/corelib/Qt5AndroidSupport.cmake
@@ -1,3 +1,18 @@
+function(qt_internal_get_highest_android_sdk_build_tools_revision out_var build_tools_dir)
+ file(GLOB revisions RELATIVE "${build_tools_dir}" "${build_tools_dir}/*")
+ if(NOT revisions)
+ message(FATAL_ERROR "Cannot determine version of Android build tools. "
+ "Please specify ANDROID_SDK_BUILD_TOOLS_REVISION manually.")
+ endif()
+ set(highest_revision 1.0)
+ foreach(revision IN LISTS revisions)
+ if(revision VERSION_GREATER highest_revision)
+ set(highest_revision ${revision})
+ endif()
+ endforeach()
+ set(${out_var} ${highest_revision} PARENT_SCOPE)
+endfunction()
+
if (NOT ${PROJECT_NAME}-MultiAbiBuild)
set(ANDROID_ABIS armeabi-v7a arm64-v8a x86 x86_64)
@@ -18,8 +33,8 @@ if (NOT ${PROJECT_NAME}-MultiAbiBuild)
option(ANDROID_BUILD_ABI_${abi} "Enable the build for Android ${abi}" ${abi_initial_value})
endif()
endforeach()
- option(ANDROID_MIN_SDK_VERSION "Android minimum SDK version" "21")
- option(ANDROID_TARGET_SDK_VERSION "Android target SDK version" "29")
+ set(ANDROID_MIN_SDK_VERSION "21" CACHE STRING "Android minimum SDK version")
+ set(ANDROID_TARGET_SDK_VERSION "30" CACHE STRING "Android target SDK version")
# Make sure to delete the "android-build" directory, which contains all the
# build artefacts, and also the androiddeployqt/gradle artefacts
@@ -50,6 +65,8 @@ if (NOT ${PROJECT_NAME}-MultiAbiBuild)
@QT_ANDROID_PACKAGE_SOURCE_DIR@
@QT_ANDROID_VERSION_CODE@
@QT_ANDROID_VERSION_NAME@
+ @QT_ANDROID_TARGET_SDK_VERSION@
+ @QT_ANDROID_MIN_SDK_VERSION@
@QT_ANDROID_EXTRA_LIBS@
@QT_QML_IMPORT_PATH@
"ndk": "@ANDROID_NDK@",
@@ -57,6 +74,7 @@ if (NOT ${PROJECT_NAME}-MultiAbiBuild)
"qml-root-path": "@CMAKE_CURRENT_SOURCE_DIR@",
"qt": "@QT_DIR@",
"sdk": "@ANDROID_SDK@",
+ "sdkBuildToolsRevision": "@ANDROID_SDK_BUILD_TOOLS_REVISION@",
"stdcpp-path": "@ANDROID_TOOLCHAIN_ROOT@/sysroot/usr/lib/",
"tool-prefix": "llvm",
"toolchain-prefix": "llvm",
@@ -71,6 +89,12 @@ if (NOT ${PROJECT_NAME}-MultiAbiBuild)
get_filename_component(ANDROID_SDK ${ANDROID_NDK}/../ ABSOLUTE)
endif()
+ if("${ANDROID_SDK_BUILD_TOOLS_REVISION}" STREQUAL "")
+ qt_internal_get_highest_android_sdk_build_tools_revision(
+ ANDROID_SDK_BUILD_TOOLS_REVISION
+ "${ANDROID_SDK}/build-tools")
+ endif()
+
find_program(ANDROID_DEPLOY_QT androiddeployqt)
get_filename_component(QT_DIR ${ANDROID_DEPLOY_QT}/../../ ABSOLUTE)
@@ -103,8 +127,8 @@ if (NOT ${PROJECT_NAME}-MultiAbiBuild)
generate_json_variable(ANDROID_VERSION_NAME "android-version-name")
generate_json_variable_list(ANDROID_EXTRA_LIBS "android-extra-libs")
generate_json_variable_list(QML_IMPORT_PATH "qml-import-paths")
- generate_json_variable_list(ANDROID_MIN_SDK_VERSION "android-min-sdk-version")
- generate_json_variable_list(ANDROID_TARGET_SDK_VERSION "android-target-sdk-version")
+ generate_json_variable(ANDROID_MIN_SDK_VERSION "android-min-sdk-version")
+ generate_json_variable(ANDROID_TARGET_SDK_VERSION "android-target-sdk-version")
configure_file(
@@ -123,24 +147,28 @@ if (NOT ${PROJECT_NAME}-MultiAbiBuild)
set(android_deploy_qt_platform "--android-platform ${ANDROID_SDK_PLATFORM}")
endif()
- add_custom_target(apk
- COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT}
- --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json"
- --output "${CMAKE_BINARY_DIR}/android-build"
- --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk"
- ${android_deploy_qt_platform}
- ${android_deploy_qt_jdk}
- VERBATIM)
-
- add_custom_target(aab
- COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT}
- --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json"
- --output "${CMAKE_BINARY_DIR}/android-build"
- --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk"
- --aab
- ${android_deploy_qt_platform}
- ${android_deploy_qt_jdk}
- VERBATIM)
+ if(NOT TARGET apk)
+ add_custom_target(apk
+ COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT}
+ --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json"
+ --output "${CMAKE_BINARY_DIR}/android-build"
+ --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk"
+ ${android_deploy_qt_platform}
+ ${android_deploy_qt_jdk}
+ VERBATIM)
+ endif()
+
+ if(NOT TARGET aab)
+ add_custom_target(aab
+ COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT}
+ --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json"
+ --output "${CMAKE_BINARY_DIR}/android-build"
+ --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk"
+ --aab
+ ${android_deploy_qt_platform}
+ ${android_deploy_qt_jdk}
+ VERBATIM)
+ endif()
include(ExternalProject)
macro (setup_library library_name android_abi)