diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2021-12-07 21:04:51 +0100 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2021-12-10 09:15:34 +0000 |
commit | f1a5a1f7161d32d0840dad91f174ff5d8d3a5b0f (patch) | |
tree | 61b6bc34f9370088dc1e55b8350fcfb7273525d4 /src/plugins/android/androidconfigurations.cpp | |
parent | 7042b551fdb66e2a933a3e2d9ff2b09c54155039 (diff) | |
download | qt-creator-f1a5a1f7161d32d0840dad91f174ff5d8d3a5b0f.tar.gz |
Android: Allow users to select which NDK to use for kits
This adds a "Make Default" button next to the NDKs list view. The
default NDK version is then used to override the NDK version for all Qt
versions in the sdk_definitions.json.
Fixes: QTCREATORBUG-21755
Fixes: QTCREATORBUG-22389
Fixes: QTCREATORBUG-24248
Fixes: QTCREATORBUG-26281
Change-Id: I460daafdd7f2d6380c0114bcd14cb0c46226d516
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins/android/androidconfigurations.cpp')
-rw-r--r-- | src/plugins/android/androidconfigurations.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index d55ef90a44..9ba6eb96ea 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -108,6 +108,7 @@ namespace { const QLatin1String SettingsGroup("AndroidConfigurations"); const QLatin1String SDKLocationKey("SDKLocation"); const QLatin1String CustomNdkLocationsKey("CustomNdkLocations"); + const QLatin1String DefaultNdkLocationKey("DefaultNdkLocation"); const QLatin1String SdkFullyConfiguredKey("AllEssentialsInstalled"); const QLatin1String SDKManagerToolArgsKey("SDKManagerToolArgs"); const QLatin1String OpenJDKLocationKey("OpenJDKLocation"); @@ -226,6 +227,8 @@ void AndroidConfig::load(const QSettings &settings) QStringList({"-netdelay", "none", "-netspeed", "full"})).toStringList(); m_sdkLocation = FilePath::fromUserInput(settings.value(SDKLocationKey).toString()).cleanPath(); m_customNdkList = settings.value(CustomNdkLocationsKey).toStringList(); + m_defaultNdk = + FilePath::fromUserInput(settings.value(DefaultNdkLocationKey).toString()).cleanPath(); m_sdkManagerToolArgs = settings.value(SDKManagerToolArgsKey).toStringList(); m_openJDKLocation = FilePath::fromString(settings.value(OpenJDKLocationKey).toString()); m_openSslLocation = FilePath::fromString(settings.value(OpenSslPriLocationKey).toString()); @@ -246,6 +249,11 @@ void AndroidConfig::load(const QSettings &settings) // persistent settings } m_customNdkList.removeAll(""); + if (!m_defaultNdk.isEmpty() && ndkVersion(m_defaultNdk).isNull()) { + if (avdConfigLog().isDebugEnabled()) + qCDebug(avdConfigLog) << "Clearing invalid default NDK setting:" << m_defaultNdk.path(); + m_defaultNdk.clear(); + } parseDependenciesJson(); } @@ -258,6 +266,7 @@ void AndroidConfig::save(QSettings &settings) const // user settings settings.setValue(SDKLocationKey, m_sdkLocation.toString()); settings.setValue(CustomNdkLocationsKey, m_customNdkList); + settings.setValue(DefaultNdkLocationKey, m_defaultNdk.toString()); settings.setValue(SDKManagerToolArgsKey, m_sdkManagerToolArgs); settings.setValue(OpenJDKLocationKey, m_openJDKLocation.toString()); settings.setValue(OpenSslPriLocationKey, m_openSslLocation.toString()); @@ -396,6 +405,16 @@ void AndroidConfig::removeCustomNdk(const QString &customNdk) m_customNdkList.removeAll(customNdk); } +void AndroidConfig::setDefaultNdk(const Utils::FilePath &defaultNdk) +{ + m_defaultNdk = defaultNdk; +} + +FilePath AndroidConfig::defaultNdk() const +{ + return m_defaultNdk; +} + FilePath AndroidConfig::openSslLocation() const { return m_openSslLocation; @@ -927,6 +946,8 @@ void AndroidConfig::setSdkManagerToolArgs(const QStringList &args) FilePath AndroidConfig::ndkLocation(const BaseQtVersion *qtVersion) const { + if (!m_defaultNdk.isEmpty()) + return m_defaultNdk; // A selected default NDK is good for any Qt version return sdkLocation().pathAppended(ndkPathFromQtVersion(*qtVersion)); } @@ -1005,6 +1026,9 @@ bool AndroidConfig::allEssentialsInstalled(AndroidSdkManager *sdkManager) if (essentialPkgs.isEmpty()) break; } + if (!m_defaultNdk.isEmpty()) + essentialPkgs = Utils::filtered(essentialPkgs, + [](const QString &p){ return !p.startsWith("ndk;"); }); return essentialPkgs.isEmpty() ? true : false; } |