summaryrefslogtreecommitdiff
path: root/src/plugins/android/androidconfigurations.cpp
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@qt.io>2021-12-07 21:04:51 +0100
committerAlessandro Portale <alessandro.portale@qt.io>2021-12-10 09:15:34 +0000
commitf1a5a1f7161d32d0840dad91f174ff5d8d3a5b0f (patch)
tree61b6bc34f9370088dc1e55b8350fcfb7273525d4 /src/plugins/android/androidconfigurations.cpp
parent7042b551fdb66e2a933a3e2d9ff2b09c54155039 (diff)
downloadqt-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.cpp24
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;
}