From 44bf71169c087706f5f53145e9ecf4a76393ebc2 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Fri, 22 Mar 2024 17:00:32 +0000 Subject: [PATCH] Revert "Android: Speed up startup by using existing Qt6 Information" This reverts commit 16c12f71fff44081d537fa90e4f9ea1cb212f5dd. Reason for revert: Introduces bugs. AndroidQtVersion::addToEnvironment() set varying ANDROID_NDK_PLATFORM values in successive calls. Only after a call of QtVersion::ensureMkSpecParsed, a consistent value is set. The symptom could be fixed by adding QtVersion::ensureMkSpecParsed calls in strategic places (e.g. in the beginning of AndroidQtVersion::addToEnvironment), but it does not make me confident that this covers all potential code paths. The change that introduces the issue is 16c12f71fff44081d537fa90e4f9ea1cb212f5dd and will therefore be reverted. It may be resurrected in QtC 14, but with much caution. This issue seems to be specific to qmake. It hardens my impression, that there are no easy gains to be made in the current state of the Android plugin. An improvement for one use-case will break another use-case which may be fixed only after two release cycles. It is Mikado code: "Only touch if needed and safe". Change-Id: I6ad860f6af8848a900d9421837a03929f9a57645 Fixes: QTCREATORBUG-30554 Reviewed-by: Reviewed-by: Christian Stenger Reviewed-by: David Schulz --- src/plugins/android/androidconfigurations.cpp | 13 +++++-- src/plugins/android/androidconstants.h | 7 ---- src/plugins/android/androidqtversion.cpp | 38 +------------------ src/plugins/android/androidqtversion.h | 1 - 4 files changed, 11 insertions(+), 48 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 8edba77605c..2b76929cffb 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -109,6 +109,11 @@ const QLatin1String X86ToolsPrefix("i686-linux-android"); const QLatin1String AArch64ToolsPrefix("aarch64-linux-android"); const QLatin1String X86_64ToolsPrefix("x86_64-linux-android"); +const QLatin1String ArmToolsDisplayName("arm"); +const QLatin1String X86ToolsDisplayName("i686"); +const QLatin1String AArch64ToolsDisplayName("aarch64"); +const QLatin1String X86_64ToolsDisplayName("x86_64"); + const QLatin1String Unknown("unknown"); const QLatin1String keytoolName("keytool"); const Key changeTimeStamp("ChangeTimeStamp"); @@ -177,12 +182,12 @@ QLatin1String AndroidConfig::displayName(const Abi &abi) switch (abi.architecture()) { case Abi::ArmArchitecture: if (abi.wordWidth() == 64) - return QLatin1String(Constants::AArch64ToolsDisplayName); - return QLatin1String(Constants::ArmToolsDisplayName); + return AArch64ToolsDisplayName; + return ArmToolsDisplayName; case Abi::X86Architecture: if (abi.wordWidth() == 64) - return QLatin1String(Constants::X86_64ToolsDisplayName); - return QLatin1String(Constants::X86ToolsDisplayName); + return X86_64ToolsDisplayName; + return X86ToolsDisplayName; default: return Unknown; } diff --git a/src/plugins/android/androidconstants.h b/src/plugins/android/androidconstants.h index 813b6a924c0..379310519ab 100644 --- a/src/plugins/android/androidconstants.h +++ b/src/plugins/android/androidconstants.h @@ -81,11 +81,4 @@ const char ndkPackageName[] = "ndk"; const char platformsPackageName[] = "platforms"; const char buildToolsPackageName[] = "build-tools"; -// For AndroidQtVersion -const char ArmToolsDisplayName[] = "arm"; -const char ArmV7ToolsDisplayName[] = "armv7"; -const char X86ToolsDisplayName[] = "i686"; -const char AArch64ToolsDisplayName[] = "aarch64"; -const char X86_64ToolsDisplayName[] = "x86_64"; - } // Android::Constants diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index c3b0e3e1f82..eb9f1801380 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -109,24 +109,13 @@ QString AndroidQtVersion::description() const const QStringList &AndroidQtVersion::androidAbis() const { - if (m_androidAbis.isEmpty()) { - bool sanityCheckNotUsed; - const BuiltWith bw = builtWith(&sanityCheckNotUsed); - if (!bw.androidAbi.isEmpty()) { - m_androidAbis << bw.androidAbi; - m_minNdk = bw.apiVersion; - } else { - ensureMkSpecParsed(); - } - } - + ensureMkSpecParsed(); return m_androidAbis; } int AndroidQtVersion::minimumNDK() const { - if (m_minNdk == -1) - ensureMkSpecParsed(); + ensureMkSpecParsed(); return m_minNdk; } @@ -185,25 +174,6 @@ static int versionFromPlatformString(const QString &string, bool *ok = nullptr) return match.hasMatch() ? match.captured(1).toInt(ok) : -1; } -static QString abiFromCompilerTarget(const QString &string) -{ - const QStringList components = string.split("-"); - if (components.isEmpty()) - return {}; - - QString qtAbi; - const QString compilerAbi = components.first(); - if (compilerAbi == Constants::AArch64ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A; - else if (compilerAbi == Constants::ArmV7ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A; - else if (compilerAbi == Constants::X86_64ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_X86_64; - else if (compilerAbi == Constants::X86ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_X86; - return qtAbi; -} - AndroidQtVersion::BuiltWith AndroidQtVersion::parseBuiltWith(const QByteArray &modulesCoreJsonData, bool *ok) { @@ -223,10 +193,6 @@ AndroidQtVersion::BuiltWith AndroidQtVersion::parseBuiltWith(const QByteArray &m result.ndkVersion = QVersionNumber::fromString(version.toString()); } } - if (const QJsonValue compilerTarget = builtWith["compiler_target"]; - !compilerTarget.isUndefined()) { - result.androidAbi = abiFromCompilerTarget(compilerTarget.toString()); - } } if (ok) diff --git a/src/plugins/android/androidqtversion.h b/src/plugins/android/androidqtversion.h index cf52b63000b..fb592461c80 100644 --- a/src/plugins/android/androidqtversion.h +++ b/src/plugins/android/androidqtversion.h @@ -35,7 +35,6 @@ public: struct BuiltWith { int apiVersion = -1; QVersionNumber ndkVersion; - QString androidAbi; }; static BuiltWith parseBuiltWith(const QByteArray &modulesCoreJsonData, bool *ok = nullptr); BuiltWith builtWith(bool *ok = nullptr) const;