diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index bea0acad9ba..c4aef8bdf0b 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -248,6 +248,7 @@ void AndroidConfigurations::updateAvailableSdkPlatforms() m_availableSdkPlatforms.clear(); QProcess proc; + proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment()); proc.start(androidToolPath().toString(), QStringList() << QLatin1String("list") << QLatin1String("target")); // list avaialbe AVDs if (!proc.waitForFinished(-1)) { proc.terminate(); @@ -283,6 +284,14 @@ FileName AndroidConfigurations::adbToolPath() const return path.appendPath(QLatin1String("platform-tools/adb" QTC_HOST_EXE_SUFFIX)); } +Utils::Environment AndroidConfigurations::androidToolEnvironment() const +{ + Utils::Environment env = Utils::Environment::systemEnvironment(); + if (!m_config.openJDKLocation.isEmpty()) + env.set(QLatin1String("JAVA_HOME"), m_config.openJDKLocation.toUserOutput()); + return env; +} + FileName AndroidConfigurations::androidToolPath() const { if (HostOsInfo::isWindowsHost()) { @@ -524,6 +533,7 @@ QString AndroidConfigurations::createAVD(int minApiLevel, QString targetArch) co QString AndroidConfigurations::createAVD(const QString &target, const QString &name, const QString &abi, int sdcardSize ) const { QProcess proc; + proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment()); proc.start(androidToolPath().toString(), QStringList() << QLatin1String("create") << QLatin1String("avd") << QLatin1String("-t") << target @@ -565,6 +575,7 @@ QString AndroidConfigurations::createAVD(const QString &target, const QString &n bool AndroidConfigurations::removeAVD(const QString &name) const { QProcess proc; + proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment()); proc.start(androidToolPath().toString(), QStringList() << QLatin1String("delete") << QLatin1String("avd") << QLatin1String("-n") << name); @@ -579,6 +590,7 @@ QVector AndroidConfigurations::androidVirtualDevices() const { QVector devices; QProcess proc; + proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment()); proc.start(androidToolPath().toString(), QStringList() << QLatin1String("list") << QLatin1String("avd")); // list available AVDs if (!proc.waitForFinished(-1)) { diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 3845a3cc320..0ffd279c14e 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -38,6 +38,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE class QSettings; @@ -89,6 +90,7 @@ public: QStringList sdkTargets(int minApiLevel = 0) const; Utils::FileName adbToolPath() const; Utils::FileName androidToolPath() const; + Utils::Environment androidToolEnvironment() const; Utils::FileName antToolPath() const; Utils::FileName emulatorToolPath() const; Utils::FileName gccPath(ProjectExplorer::Abi::Architecture architecture, const QString &ndkToolChainVersion) const; diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index b72b27bec7c..73a713372ce 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -706,6 +706,7 @@ void AndroidManager::updateTarget(ProjectExplorer::Target *target, const QString params << QLatin1String("-t") << targetSDK; if (!name.isEmpty()) params << QLatin1String("-n") << name; + androidProc.setProcessEnvironment(AndroidConfigurations::instance().androidToolEnvironment().toProcessEnvironment()); androidProc.start(AndroidConfigurations::instance().androidToolPath().toString(), params); if (!androidProc.waitForFinished(-1)) androidProc.terminate(); diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 7e72ee3b6a5..fc0a01c22a1 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -35,6 +35,10 @@ #include "androidconstants.h" #include "androidtoolchain.h" +#ifdef Q_OS_WIN +#include +#endif +#include #include #include #include @@ -434,8 +438,12 @@ void AndroidSettingsWidget::manageAVD() QProcess *avdProcess = new QProcess(); connect(this, SIGNAL(destroyed()), avdProcess, SLOT(deleteLater())); connect(avdProcess, SIGNAL(finished(int)), avdProcess, SLOT(deleteLater())); - avdProcess->start(AndroidConfigurations::instance().androidToolPath().toString(), - QStringList() << QLatin1String("avd")); + + avdProcess->setProcessEnvironment(AndroidConfigurations::instance().androidToolEnvironment().toProcessEnvironment()); + QString executable = AndroidConfigurations::instance().androidToolPath().toString(); + QStringList arguments = QStringList() << QLatin1String("avd"); + + avdProcess->start(executable, arguments); }