summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Edelev <[email protected]>2025-05-22 19:15:00 +0200
committerAlexey Edelev <[email protected]>2025-07-07 21:20:38 +0200
commitb42f09b02e6cd3cf1196ec0064d4cb934f06580d (patch)
tree9f6a1c3a7e79a0a72e3c99c0c554a9337656ac4a
parentc33a769f5c1b1a5014ca724d110439c291709ff4 (diff)
Generate features in AndroidManifest.xml
Use the transitive INTERFACE_QT_ANDROID_FEATURES property to generate user feature declarations in AndroidManifest.xml. Change-Id: I6d49da12dc708abe125546241a268bb4ed6937d1 Reviewed-by: Alexandru Croitor <[email protected]>
-rw-r--r--cmake/QtAndroidHelpers.cmake12
-rw-r--r--cmake/QtPostProcessHelpers.cmake1
-rw-r--r--src/corelib/Qt6AndroidGradleHelpers.cmake11
3 files changed, 24 insertions, 0 deletions
diff --git a/cmake/QtAndroidHelpers.cmake b/cmake/QtAndroidHelpers.cmake
index 41eaf55d8e2..cb7d4716f12 100644
--- a/cmake/QtAndroidHelpers.cmake
+++ b/cmake/QtAndroidHelpers.cmake
@@ -491,3 +491,15 @@ function(qt_internal_android_add_interface_permissions target)
qt_internal_set_module_transitive_properties(${target} TYPE LINK PROPERTIES
INTERFACE_QT_ANDROID_PERMISSIONS "${postprocessed_permissions}")
endfunction()
+
+# The function stores Android features that are required by the module target.
+# The stored INTERFACE_QT_ANDROID_FEATURES is the transitive property.
+function(qt_internal_android_add_interface_features target)
+ get_target_property(features ${target} QT_ANDROID_FEATURES)
+ if(NOT features)
+ return()
+ endif()
+
+ qt_internal_set_module_transitive_properties(${target} TYPE LINK PROPERTIES
+ INTERFACE_QT_ANDROID_FEATURES "${features}")
+endfunction()
diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake
index 3f1468a4304..07fcdee268b 100644
--- a/cmake/QtPostProcessHelpers.cmake
+++ b/cmake/QtPostProcessHelpers.cmake
@@ -791,6 +791,7 @@ function(qt_modules_process_android_dependencies)
foreach (target ${repo_known_modules})
qt_internal_android_dependencies(${target})
qt_internal_android_add_interface_permissions(${target})
+ qt_internal_android_add_interface_features(${target})
endforeach()
endfunction()
diff --git a/src/corelib/Qt6AndroidGradleHelpers.cmake b/src/corelib/Qt6AndroidGradleHelpers.cmake
index 500946f0e9b..11d1e771cba 100644
--- a/src/corelib/Qt6AndroidGradleHelpers.cmake
+++ b/src/corelib/Qt6AndroidGradleHelpers.cmake
@@ -430,6 +430,17 @@ function(_qt_internal_android_generate_target_android_manifest target)
_qt_internal_android_convert_permissions(APP_PERMISSIONS ${target} XML)
+ set(feature_prefix "\n <uses-feature android:name=\"")
+ set(feature_suffix " \" android:required=\"false\" /$<ANGLE-R>")
+ set(feature_property "$<TARGET_PROPERTY:${target},QT_ANDROID_FEATURES>")
+ string(JOIN "" APP_FEATURES
+ "$<$<BOOL:${feature_property}>:"
+ "${feature_prefix}"
+ "$<JOIN:${feature_property},${feature_suffix},${feature_prefix}>"
+ "${feature_suffix}"
+ ">"
+ )
+
set(APP_ARGUMENTS "${QT_ANDROID_APPLICATION_ARGUMENTS}")
_qt_internal_configure_file(GENERATE OUTPUT "${out_file}.tmp"