From d7bc681ed9a90d1e58c5bfa8cb6948d74d1f97d2 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 22 Nov 2024 09:50:09 +0100 Subject: [PATCH] Android: Fix unnecessary loop in parsePlatforms While the 'targets' value is indeed an array, we only use the first value in practice for Android builds. Simplify the code by removing the loop over 'targets' and use the first value directly. Also, try the next platform if we encounter a problem with the current one. Change-Id: Id00fc595d1a88fa81cb9c90c9ff3343704d781c7 Reviewed-by: Eike Ziller --- src/plugins/android/androidqtversion.cpp | 33 +++++++++++++----------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index 2276599faa9..a1da35cd8c8 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -212,24 +212,27 @@ static AndroidQtVersion::BuiltWith parsePlatforms(const QJsonObject &jsonObject, const QJsonObject platform = platformValue.toObject(); if (platform.value("name").toString() != QLatin1String("Android")) continue; - for (const QJsonValue &targetsValue : platform.value("targets").toArray()) { - const QJsonObject target = targetsValue.toObject(); - const QString apiVersionString = target.value("api_version").toString(); - if (apiVersionString.isNull()) - return {}; - bool apiVersionOK = false; - result.apiVersion = versionFromPlatformString(apiVersionString, &apiVersionOK); - if (!apiVersionOK) - return {}; - const QString ndkVersionString = target.value("ndk_version").toString(); - if (ndkVersionString.isNull()) - return {}; - result.ndkVersion = QVersionNumber::fromString(ndkVersionString); + const QJsonArray targets = platform.value("targets").toArray(); + if (targets.isEmpty()) + continue; + const QJsonObject target = targets.first().toObject(); + const QString apiVersionString = target.value("api_version").toString(); + if (apiVersionString.isNull()) + continue; + bool apiVersionOK = false; + result.apiVersion = versionFromPlatformString(apiVersionString, &apiVersionOK); + if (!apiVersionOK) + continue; + const QString ndkVersionString = target.value("ndk_version").toString(); + if (ndkVersionString.isNull()) + continue; + result.ndkVersion = QVersionNumber::fromString(ndkVersionString); + if (result.apiVersion != -1 && !result.ndkVersion.isNull()) { + if (ok) + *ok = true; break; } } - if (ok) - *ok = true; return result; }