CMake:Android: add property QT_ANDROID_COMPILE_SDK_VERSION

This allows to set the compile SDK version from CMakeLists.txt
instead of a parameter to androiddeployqt to give more flexibility.

Fixes: QTBUG-128364
Change-Id: I797e8f9b3c35dcb822c1b7e2b67e6b76387775ca
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Assam Boudjelthia 2024-09-08 20:22:15 +03:00
parent 8436455e27
commit a9ebb97436
6 changed files with 65 additions and 7 deletions

View File

@ -245,6 +245,10 @@ function(qt6_android_generate_deployment_settings target)
_qt_internal_add_android_deployment_property(file_contents "android-target-sdk-version" _qt_internal_add_android_deployment_property(file_contents "android-target-sdk-version"
${target} "QT_ANDROID_TARGET_SDK_VERSION") ${target} "QT_ANDROID_TARGET_SDK_VERSION")
# compile SDK version
_qt_internal_add_android_deployment_property(file_contents "android-compile-sdk-version"
${target} "QT_ANDROID_COMPILE_SDK_VERSION")
# should Qt shared libs be excluded from deployment # should Qt shared libs be excluded from deployment
_qt_internal_add_android_deployment_property(file_contents "android-no-deploy-qt-libs" _qt_internal_add_android_deployment_property(file_contents "android-no-deploy-qt-libs"
${target} "QT_ANDROID_NO_DEPLOY_QT_LIBS") ${target} "QT_ANDROID_NO_DEPLOY_QT_LIBS")

View File

@ -223,6 +223,43 @@ Specifies the target Android API level for the target.
\sa{qt6_android_generate_deployment_settings}{qt_android_generate_deployment_settings()} \sa{qt6_android_generate_deployment_settings}{qt_android_generate_deployment_settings()}
*/ */
/*!
\page cmake-target-property-qt-android-compile-sdk-version.html
\ingroup cmake-properties-qtcore
\ingroup cmake-target-properties-qtcore
\ingroup cmake-android-build-properties
\title QT_ANDROID_COMPILE_SDK_VERSION
\target cmake-target-property-QT_ANDROID_COMPILE_SDK_VERSION
\summary {Android target SDK version.}
\cmakepropertysince 6.9
\cmakepropertyandroidonly
Specifies the version of the Android SDK against which your application is compiled.
This is propagated to \c {build.gradle} as \c compileSdkVersion. This value can be
provided via \l {androiddeployqt}'s \c {--android-platform} parameter which takes
precedence over this CMake property.
\badcode
set_target_properties(${target} PROPERTIES
QT_ANDROID_COMPILE_SDK_VERSION 35
)
\endcode
The following format also works:
\badcode
set_target_properties(${target} PROPERTIES
QT_ANDROID_COMPILE_SDK_VERSION "android-35"
)
\endcode
\sa{qt6_android_generate_deployment_settings}{qt_android_generate_deployment_settings()}
\sa QT_ANDROID_TARGET_SDK_VERSION
*/
/*! /*!
\page cmake-target-property-qt-android-sdk-build-tools-revision.html \page cmake-target-property-qt-android-sdk-build-tools-revision.html
\ingroup cmake-properties-qtcore \ingroup cmake-properties-qtcore

View File

@ -63,6 +63,7 @@ how to accomplish this.
\li \l{cmake-target-property-QT_ANDROID_MIN_SDK_VERSION}{QT_ANDROID_MIN_SDK_VERSION} \li \l{cmake-target-property-QT_ANDROID_MIN_SDK_VERSION}{QT_ANDROID_MIN_SDK_VERSION}
\li \l{cmake-target-property-QT_ANDROID_PACKAGE_SOURCE_DIR}{QT_ANDROID_PACKAGE_SOURCE_DIR} \li \l{cmake-target-property-QT_ANDROID_PACKAGE_SOURCE_DIR}{QT_ANDROID_PACKAGE_SOURCE_DIR}
\li \l{cmake-target-property-QT_ANDROID_TARGET_SDK_VERSION}{QT_ANDROID_TARGET_SDK_VERSION} \li \l{cmake-target-property-QT_ANDROID_TARGET_SDK_VERSION}{QT_ANDROID_TARGET_SDK_VERSION}
\li \l{cmake-target-property-QT_ANDROID_COMPILE_SDK_VERSION}{QT_ANDROID_COMPILE_SDK_VERSION}
\li \l{cmake-target-property-QT_ANDROID_PACKAGE_NAME}{QT_ANDROID_PACKAGE_NAME} \li \l{cmake-target-property-QT_ANDROID_PACKAGE_NAME}{QT_ANDROID_PACKAGE_NAME}
\li \l{cmake-target-property-QT_ANDROID_APP_NAME}{QT_ANDROID_APP_NAME} \li \l{cmake-target-property-QT_ANDROID_APP_NAME}{QT_ANDROID_APP_NAME}
\li \l{cmake-target-property-QT_ANDROID_APP_ICON}{QT_ANDROID_APP_ICON} \li \l{cmake-target-property-QT_ANDROID_APP_ICON}{QT_ANDROID_APP_ICON}

View File

@ -1023,15 +1023,27 @@ bool readInputFile(Options *options)
options->sdkPath = QDir::fromNativeSeparators(sdkPath.toString()); options->sdkPath = QDir::fromNativeSeparators(sdkPath.toString());
}
{
if (options->androidPlatform.isEmpty()) { if (options->androidPlatform.isEmpty()) {
options->androidPlatform = detectLatestAndroidPlatform(options->sdkPath); const QJsonValue ver = jsonObject.value("android-compile-sdk-version"_L1);
if (options->androidPlatform.isEmpty()) if (!ver.isUndefined()) {
return false; const auto value = ver.toString();
} else { options->androidPlatform = value.startsWith("android-"_L1) ?
if (!QDir(options->sdkPath + "/platforms/"_L1 + options->androidPlatform).exists()) { value : "android-%1"_L1.arg(value);
fprintf(stderr, "Warning: Android platform '%s' does not exist in SDK.\n",
qPrintable(options->androidPlatform));
} }
if (options->androidPlatform.isEmpty()) {
options->androidPlatform = detectLatestAndroidPlatform(options->sdkPath);
if (options->androidPlatform.isEmpty())
return false;
}
}
if (!QDir(options->sdkPath + "/platforms/"_L1 + options->androidPlatform).exists()) {
fprintf(stderr, "Warning: Android platform '%s' does not exist in SDK.\n",
qPrintable(options->androidPlatform));
} }
} }

View File

@ -30,6 +30,7 @@ set_target_properties(${target} PROPERTIES
QT_ANDROID_SDK_BUILD_TOOLS_REVISION "23.0.2" QT_ANDROID_SDK_BUILD_TOOLS_REVISION "23.0.2"
QT_ANDROID_MIN_SDK_VERSION "1" QT_ANDROID_MIN_SDK_VERSION "1"
QT_ANDROID_TARGET_SDK_VERSION "2" QT_ANDROID_TARGET_SDK_VERSION "2"
QT_ANDROID_COMPILE_SDK_VERSION "35"
QT_ANDROID_APP_NAME "Android Deployment Settings Test" QT_ANDROID_APP_NAME "Android Deployment Settings Test"
QT_ANDROID_PACKAGE_NAME "org.qtproject.android_deployment_settings_test" QT_ANDROID_PACKAGE_NAME "org.qtproject.android_deployment_settings_test"
QT_ANDROID_DEPLOYMENT_DEPENDENCIES "dep1.so;dep2.so;dep3.so" QT_ANDROID_DEPLOYMENT_DEPENDENCIES "dep1.so;dep2.so;dep3.so"
@ -55,6 +56,7 @@ set_target_properties(${target} PROPERTIES
QT_ANDROID_SDK_BUILD_TOOLS_REVISION "23.0.2" QT_ANDROID_SDK_BUILD_TOOLS_REVISION "23.0.2"
QT_ANDROID_MIN_SDK_VERSION "1" QT_ANDROID_MIN_SDK_VERSION "1"
QT_ANDROID_TARGET_SDK_VERSION "2" QT_ANDROID_TARGET_SDK_VERSION "2"
QT_ANDROID_COMPILE_SDK_VERSION "35"
QT_ANDROID_APP_NAME "Android Deployment Settings Test" QT_ANDROID_APP_NAME "Android Deployment Settings Test"
QT_ANDROID_PACKAGE_NAME "org.qtproject.android_deployment_settings_test" QT_ANDROID_PACKAGE_NAME "org.qtproject.android_deployment_settings_test"
QT_ANDROID_DEPLOYMENT_DEPENDENCIES "dep1.so;dep2.so;dep3.so" QT_ANDROID_DEPLOYMENT_DEPENDENCIES "dep1.so;dep2.so;dep3.so"

View File

@ -76,6 +76,8 @@ void tst_android_deployment_settings::DeploymentSettings_data()
<< "1"; << "1";
QTest::newRow("android-target-sdk-version") << "android-target-sdk-version" QTest::newRow("android-target-sdk-version") << "android-target-sdk-version"
<< "2"; << "2";
QTest::newRow("android-compile-sdk-version") << "android-compile-sdk-version"
<< "35";
QTest::newRow("android-package-name") << "android-package-name" QTest::newRow("android-package-name") << "android-package-name"
<< "org.qtproject.android_deployment_settings_test"; << "org.qtproject.android_deployment_settings_test";
QTest::newRow("android-app-name") << "android-app-name" QTest::newRow("android-app-name") << "android-app-name"