From 0df76339f09e46f30b24e8238d4ed8aa3c4de9f8 Mon Sep 17 00:00:00 2001 From: Juha Vuolle Date: Wed, 21 Aug 2024 11:28:12 +0300 Subject: [PATCH] Prioritize Android permissions without additional attributes This is a manual cherry-pick from 87cc6bb8c81b93b5c806a821e22332c80c0c37d5 Android permissions may have additional attributes such as 'minSdkLevel' and 'maxSdkLevel'. When generating the default AndroidManifest.xml there may be duplicate permission entries, stemming for example from two different Qt modules. With this change the permission without any additional attributes is given priority. The underlying assumption is that such permission is likely the most permissive. Task-number: QTBUG-129944 Change-Id: Id0416290780b68289c2cca0bc03dde40997d3c16 Reviewed-by: Assam Boudjelthia Reviewed-by: Ivan Solovev (cherry picked from commit 87cc6bb8c81b93b5c806a821e22332c80c0c37d5) --- src/tools/androiddeployqt/main.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp index 1f62df05f3d..6567b0dac0d 100644 --- a/src/tools/androiddeployqt/main.cpp +++ b/src/tools/androiddeployqt/main.cpp @@ -2129,7 +2129,12 @@ bool readAndroidDependencyXml(Options *options, } else if (reader.name() == "permission"_L1) { QString name = reader.attributes().value("name"_L1).toString(); QString extras = reader.attributes().value("extras"_L1).toString(); - options->permissions.insert(name, extras); + // With duplicate permissions prioritize the one without any attributes, + // as that is likely the most permissive + if (!options->permissions.contains(name) + || !options->permissions.value(name).isEmpty()) { + options->permissions.insert(name, extras); + } } else if (reader.name() == "feature"_L1) { QString name = reader.attributes().value("name"_L1).toString(); options->features.append(name);