From cb6eaa3c2435128392d5ef7bd98e26902d086ece Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@digia.com>
Date: Mon, 10 Jun 2013 18:18:38 +0200
Subject: [PATCH] Android: Set JAVA_HOME in environment and use that
 environment

Change-Id: Ia0f3abad74b7ac423fab621ca22e0f698747c477
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Ray Donnelly <mingw.android@gmail.com>
---
 src/plugins/android/androidmanager.cpp             | 5 +++++
 src/plugins/android/androidpackagecreationstep.cpp | 2 ++
 src/plugins/android/androidpackagecreationstep.h   | 3 ++-
 src/plugins/android/androidtoolchain.cpp           | 3 +++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp
index ed2fb8d10fe..4761b68db40 100644
--- a/src/plugins/android/androidmanager.cpp
+++ b/src/plugins/android/androidmanager.cpp
@@ -611,9 +611,14 @@ void AndroidManager::updateTarget(ProjectExplorer::Target *target, const QString
 {
     QString androidDir = dirPath(target).toString();
 
+    Utils::Environment env = Utils::Environment::systemEnvironment();
+    QString javaHome = AndroidConfigurations::instance().config().openJDKLocation.toString();
+    if (!javaHome.isEmpty())
+        env.set(QLatin1String("JAVA_HOME"), javaHome);
     // clean previous build
     QProcess androidProc;
     androidProc.setWorkingDirectory(androidDir);
+    androidProc.setProcessEnvironment(env.toProcessEnvironment());
     androidProc.start(AndroidConfigurations::instance().antToolPath().toString(),
                       QStringList() << QLatin1String("clean"));
     if (!androidProc.waitForFinished(-1))
diff --git a/src/plugins/android/androidpackagecreationstep.cpp b/src/plugins/android/androidpackagecreationstep.cpp
index 5616af1f05c..5f80db9cd80 100644
--- a/src/plugins/android/androidpackagecreationstep.cpp
+++ b/src/plugins/android/androidpackagecreationstep.cpp
@@ -169,6 +169,7 @@ bool AndroidPackageCreationStep::init()
     m_certificatePasswdForRun = m_certificatePasswd;
     m_jarSigner = AndroidConfigurations::instance().jarsignerPath();
     m_zipAligner = AndroidConfigurations::instance().zipalignPath();
+    m_environment = bc->environment();
 
     ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(target()->kit());
     if (tc->type() != QLatin1String(Constants::ANDROID_TOOLCHAIN_TYPE))
@@ -702,6 +703,7 @@ bool AndroidPackageCreationStep::createPackage()
     emit addOutput(tr("Creating package file ..."), MessageOutput);
 
     QProcess *const buildProc = new QProcess;
+    buildProc->setProcessEnvironment(m_environment.toProcessEnvironment());
 
     connect(buildProc, SIGNAL(readyReadStandardOutput()), this,
         SLOT(handleBuildStdOutOutput()));
diff --git a/src/plugins/android/androidpackagecreationstep.h b/src/plugins/android/androidpackagecreationstep.h
index 64c958702c2..bc7336cd2ad 100644
--- a/src/plugins/android/androidpackagecreationstep.h
+++ b/src/plugins/android/androidpackagecreationstep.h
@@ -35,6 +35,7 @@
 
 #include <projectexplorer/abi.h>
 #include <projectexplorer/buildstep.h>
+#include <utils/environment.h>
 
 #include <QAbstractItemModel>
 
@@ -140,10 +141,10 @@ private:
     QStringList m_qtLibsWithDependencies;
     QVector<AndroidManager::Library> m_availableQtLibs;
     QStringList m_prebundledLibs;
-
     QStringList m_bundledJars;
     QStringList m_otherBundledFiles;
     bool m_bundleQt;
+    Utils::Environment m_environment;
 };
 
 } // namespace Internal
diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp
index 6e3ba77b683..a05cba4a18f 100644
--- a/src/plugins/android/androidtoolchain.cpp
+++ b/src/plugins/android/androidtoolchain.cpp
@@ -115,6 +115,9 @@ void AndroidToolChain::addToEnvironment(Environment &env) const
     env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_PREFIX"), AndroidConfigurations::toolchainPrefix(targetAbi().architecture()));
     env.set(QLatin1String("ANDROID_NDK_TOOLS_PREFIX"), AndroidConfigurations::toolsPrefix(targetAbi().architecture()));
     env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_VERSION"), m_ndkToolChainVersion);
+    QString javaHome = AndroidConfigurations::instance().openJDKPath().toString();
+    if (!javaHome.isEmpty() && QFileInfo(javaHome).exists())
+        env.set(QLatin1String("JAVA_HOME"), javaHome);
 }
 
 bool AndroidToolChain::operator ==(const ToolChain &tc) const
-- 
GitLab