diff options
author | Daniel Teske <daniel.teske@digia.com> | 2013-11-19 17:25:32 +0100 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2013-11-19 18:21:33 +0100 |
commit | 721d6546a63aa26449a0a38ee16355604a4af3ce (patch) | |
tree | d2ab46129c4904a7c4b9d876da0b48597b321cff /src | |
parent | c9c0f801471bcabd6443d3a04cd4fc6c85924930 (diff) | |
download | qt-creator-721d6546a63aa26449a0a38ee16355604a4af3ce.tar.gz |
Android: android.bat needs a special environment
See the below task for details:
Task-number: QTCREATORBUG-10575
Change-Id: I7756d8780b33ede4c3d4eac7e281c9eabfa47e35
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/android/androidconfigurations.cpp | 12 | ||||
-rw-r--r-- | src/plugins/android/androidconfigurations.h | 2 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 1 | ||||
-rw-r--r-- | src/plugins/android/androidsettingswidget.cpp | 12 |
4 files changed, 25 insertions, 2 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index bea0acad9b..c4aef8bdf0 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<AndroidDeviceInfo> AndroidConfigurations::androidVirtualDevices() const { QVector<AndroidDeviceInfo> 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 3845a3cc32..0ffd279c14 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -38,6 +38,7 @@ #include <QMap> #include <projectexplorer/abi.h> #include <utils/fileutils.h> +#include <utils/environment.h> 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 b72b27bec7..73a713372c 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 7e72ee3b6a..fc0a01c22a 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 <utils/winutils.h> +#endif +#include <utils/environment.h> #include <utils/hostosinfo.h> #include <projectexplorer/toolchainmanager.h> #include <projectexplorer/kitmanager.h> @@ -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); } |