summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2017-08-08 14:27:54 +0200
committerVikas Pachdha <vikas.pachdha@qt.io>2017-08-29 13:27:55 +0000
commit2e821a7730fa40930dde694d59c69a72d5c43763 (patch)
treee72d02f511e979602ea09554c163775a53da19f1
parentb6c1cb3487d2850c4e9dfc2818ee920bffc1031d (diff)
downloadqt-creator-2e821a7730fa40930dde694d59c69a72d5c43763.tar.gz
Android: Fix default JDK path discovery
Task-number: QTCREATORBUG-18691 Change-Id: Ibd17e7edf1c2cfdcc54ff2b9f16a9125bb217a84 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: BogDan Vatra <bogdan@kdab.com>
-rw-r--r--src/plugins/android/androidconfigurations.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index ccefeef4e2..cba8f4d438 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -70,6 +70,7 @@
#include <QThread>
#include <functional>
+#include <memory>
using namespace ProjectExplorer;
using namespace Utils;
@@ -82,7 +83,7 @@ namespace Android {
using namespace Internal;
namespace {
-
+ const char jdkSettingsPath[] = "HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit";
const QVersionNumber sdkToolsAntMissingVersion(25, 3, 0);
const QLatin1String SettingsGroup("AndroidConfigurations");
@@ -1247,8 +1248,18 @@ void AndroidConfigurations::load()
}
}
} else if (HostOsInfo::isWindowsHost()) {
- QSettings settings(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Javasoft\\Java Development Kit"), QSettings::NativeFormat);
- QStringList allVersions = settings.childGroups();
+ QStringList allVersions;
+ std::unique_ptr<QSettings> settings(new QSettings(jdkSettingsPath,
+ QSettings::NativeFormat));
+ allVersions = settings->childGroups();
+#ifdef Q_OS_WIN
+#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
+ if (allVersions.isEmpty()) {
+ settings.reset(new QSettings(jdkSettingsPath, QSettings::Registry64Format));
+ allVersions = settings->childGroups();
+ }
+#endif
+#endif
QString javaHome;
int major = -1;
int minor = -1;
@@ -1264,9 +1275,9 @@ void AndroidConfigurations::load()
if (tmpMajor > major
|| (tmpMajor == major
&& tmpMinor > minor)) {
- settings.beginGroup(version);
- QString tmpJavaHome = settings.value(QLatin1String("JavaHome")).toString();
- settings.endGroup();
+ settings->beginGroup(version);
+ QString tmpJavaHome = settings->value(QLatin1String("JavaHome")).toString();
+ settings->endGroup();
if (!QFileInfo::exists(tmpJavaHome))
continue;