diff options
author | Alexey Edelev <[email protected]> | 2025-05-22 19:15:00 +0200 |
---|---|---|
committer | Alexey Edelev <[email protected]> | 2025-07-07 21:20:38 +0200 |
commit | b42f09b02e6cd3cf1196ec0064d4cb934f06580d (patch) | |
tree | 9f6a1c3a7e79a0a72e3c99c0c554a9337656ac4a | |
parent | c33a769f5c1b1a5014ca724d110439c291709ff4 (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.cmake | 12 | ||||
-rw-r--r-- | cmake/QtPostProcessHelpers.cmake | 1 | ||||
-rw-r--r-- | src/corelib/Qt6AndroidGradleHelpers.cmake | 11 |
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" |