diff --git a/package.json b/package.json
index abc78c7be5785e39c37ab6a0ad75970cbaaf9100..fd56f6320d0a41224595f0965482a6636b9c1332 100644
--- a/package.json
+++ b/package.json
@@ -211,4 +211,4 @@
   "engines": {
     "yarn": ">= 1.0.0"
   }
-}
+}
\ No newline at end of file
diff --git a/scripts/env-android.sh b/scripts/env-android.sh
index b1a4e19a2074c756680f080671fb9a231de0e7ae..33195e295212820916a0db70f3383471e63f1171 100755
--- a/scripts/env-android.sh
+++ b/scripts/env-android.sh
@@ -21,10 +21,16 @@ fi
 echo "Preparing Android environment:"
 echo " - using Android SDK: ${ANDROID_SDK_ROOT}"
 echo " - using Android SDK tools: ${ANDROID_SDK_TOOLS_ROOT}"
-echo " - using Gradle: ${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}"
+echo " - using Gradle: ${GRADLE_HOME}"
 echo " - using Java: ${JAVA_HOME}"
 echo " - project dir: ${PROJECT_DIR}"
 
+# Make sure javac exists
+JAVAC_PATH=$(which javac)
+if [[ "_" == "_${JAVAC_PATH}" ]]; then
+  echo "ERROR: 'javac' executable not found in PATH. Make sure you have installed a complete Java JDK, and not only a JRE."
+  exit 1
+fi
 
 # Prepare Android SDK tools
 if [[ ! -d "${ANDROID_SDK_TOOLS_ROOT}" ]]; then
@@ -35,11 +41,29 @@ if [[ ! -d "${ANDROID_SDK_TOOLS_ROOT}" ]]; then
   fi
 fi
 
-cd "${PROJECT_DIR}"
+# Install Gradle
+if [[ ! -d "${GRADLE_HOME}" ]]; then
+  cd "${PROJECT_DIR}/scripts"
+  echo "Installing gradle...  ${GRADLE_HOME}"
+  test -e "gradle-${GRADLE_VERSION}-all.zip" || wget -kL ${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}
+  GRADLE_PARENT=$(dirname $GRADLE_HOME)
+  test -e "${GRADLE_PARENT}" || mkdir -p ${GRADLE_PARENT}
+  test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || unzip -qq gradle-${GRADLE_VERSION}-all.zip -d "${GRADLE_PARENT}"
+  if [[ $? -ne 0 ]]; then
+      exit 1
+  fi
+  test -e "${GRADLE_HOME}" || mv "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}"
+  if [[ $? -ne 0 ]]; then
+      exit 1
+  fi
+  test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || rm "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}"
+fi
+
 
 # Prepare Android platform
 if [[ ! -d "${PROJECT_DIR}/platforms/android" ]]; then
   echo "Adding Cordova Android platform..."
+  cd "${PROJECT_DIR}"
   ionic cordova prepare android --color --verbose
   if [[ $? -ne 0 ]]; then
     exit 1
diff --git a/scripts/env-global.sh b/scripts/env-global.sh
index 0a2abc6da063e554d90213e95fcd496896ace194..f147d95790698a422a6b1703140e86da624e0a00 100755
--- a/scripts/env-global.sh
+++ b/scripts/env-global.sh
@@ -24,9 +24,8 @@ NODEJS_VERSION=10
 
 ANDROID_NDK_VERSION=r19c
 ANDROID_SDK_VERSION=r29.0.0
-ANDROID_SDK_TOOLS_VERSION=4333796
 ANDROID_SDK_ROOT=/usr/lib/android-sdk
-ANDROID_SDK_TOOLS_ROOT=${ANDROID_SDK_ROOT}/tools
+ANDROID_SDK_TOOLS_VERSION=4333796
 ANDROID_OUTPUT_APK=${PROJECT_DIR}/platforms/android/build/outputs/apk
 ANDROID_OUTPUT_APK_DEBUG=${ANDROID_OUTPUT_APK}/debug
 ANDROID_OUTPUT_APK_RELEASE=${ANDROID_OUTPUT_APK}/release
@@ -37,6 +36,7 @@ DIST_ANDROID=${PROJECT_DIR}/dist/android
 #JAVA_HOME=
 
 GRADLE_VERSION=4.10.3
+GRADLE_HOME=${HOME}/.gradle/${GRADLE_VERSION}
 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
 
 
@@ -74,10 +74,10 @@ if [[ "_" == "_${JAVA_HOME}" ]]; then
 fi
 
 # Check Android SDK root path
-DEFAULT_ANDROID_SDK_ROOT=$(test -d ~/Android/Sdk && cd ~/Android/Sdk && pwd)
+DEFAULT_ANDROID_SDK_ROOT="${HOME}/Android/Sdk"
 if [[ "_" == "_${ANDROID_SDK_ROOT}" ]]; then
   if [[ -d "${DEFAULT_ANDROID_SDK_ROOT}" ]]; then
-    ANDROID_SDK_ROOT="${DEFAULT_ANDROID_SDK_ROOT}"
+    export ANDROID_SDK_ROOT="${DEFAULT_ANDROID_SDK_ROOT}"
   else
     echo "Please set env variable ANDROID_SDK_ROOT"
     exit 1
@@ -85,7 +85,7 @@ if [[ "_" == "_${ANDROID_SDK_ROOT}" ]]; then
 fi
 if [[ ! -d "${ANDROID_SDK_ROOT}" ]]; then
   if [[ ! -d "${ANDROID_SDK_ROOT}" ]]; then
-    ANDROID_SDK_ROOT="${DEFAULT_ANDROID_SDK_ROOT}"
+    export ANDROID_SDK_ROOT="${DEFAULT_ANDROID_SDK_ROOT}"
   else
     echo "Invalid path for ANDROID_SDK_ROOT: ${ANDROID_SDK_ROOT} is not a directory"
     exit 1
@@ -93,16 +93,18 @@ if [[ ! -d "${ANDROID_SDK_ROOT}" ]]; then
 fi
 
 # Export Android SDK tools to path
-if [[ -d "${ANDROID_SDK_TOOLS_ROOT}/bin" ]]; then
-  export PATH=${ANDROID_SDK_TOOLS_ROOT}/bin:$PATH
-fi
+ANDROID_SDK_TOOLS_ROOT=${ANDROID_SDK_ROOT}/tools
+PATH=${ANDROID_SDK_TOOLS_ROOT}/bin:${GRADLE_HOME}/bin:$PATH
 
 # Export useful variables
-export PROJECT_DIR \
+export PATH \
+  PROJECT_DIR \
   JAVA_HOME \
   ANDROID_SDK_ROOT \
+  ANDROID_SDK_TOOLS_ROOT \
   CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL
 
+
 # Node JS
 export NVM_DIR="$HOME/.nvm"
 if [[ -d "${NVM_DIR}" ]]; then
diff --git a/scripts/install-android-sdk-tools.sh b/scripts/install-android-sdk-tools.sh
index 7aca9b2ae2050b7cf262547c0fcb7968f6dd7ecc..cc9ee954ef6f8a2594e77f36950f2ec75a828e0e 100755
--- a/scripts/install-android-sdk-tools.sh
+++ b/scripts/install-android-sdk-tools.sh
@@ -1,13 +1,25 @@
 #!/bin/bash
 
-. ./env-global.sh
+# Load global variables
+. "$(dirname $0)/env-global.sh"
 
-test -e "${ANDROID_SDK_ROOT}" || mkdir -p "${ANDROID_SDK_ROOT}"
+# Make sure variables are set
+if [[ "_" == "_${ANDROID_SDK_ROOT}" ]]; then
+  echo "Please set env variable ANDROID_SDK_ROOT"
+  exit 1
+fi
+if [[ "_" == "_${ANDROID_SDK_TOOLS_ROOT}" ]]; then
+  echo "Please set env variable ANDROID_SDK_TOOLS_ROOT"
+  exit 1
+fi
 
 if [[ ! -d "${ANDROID_SDK_TOOLS_ROOT}/bin" ]]; then
-  echo "Installing Android SDK tools..."
+  echo "Installing Android SDK tools... ${ANDROID_SDK_TOOLS_ROOT}"
   test -e "sdk-tools-linux-${ANDROID_SDK_TOOLS_VERSION}.zip" || wget -kL https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS_VERSION}.zip
-  test -e "${ANDROID_SDK_TOOLS_ROOT}" || unzip -qq sdk-tools-linux-${ANDROID_SDK_TOOLS_VERSION}.zip -d "${ANDROID_SDK_TOOLS}"
+  # Get parent folder
+  ANDROID_SDK_TOOLS_PARENT=$(dirname $ANDROID_SDK_ROOT)
+  test -e "${ANDROID_SDK_TOOLS_PARENT}" || mkdir -p "${ANDROID_SDK_TOOLS_PARENT}"
+  test -e "${ANDROID_SDK_TOOLS_ROOT}" || unzip -qq sdk-tools-linux-${ANDROID_SDK_TOOLS_VERSION}.zip -d "${ANDROID_SDK_TOOLS_PARENT}"
   test -e "${ANDROID_SDK_TOOLS_ROOT}" && rm "sdk-tools-linux-${ANDROID_SDK_TOOLS_VERSION}.zip"
 fi
 
@@ -22,11 +34,11 @@ yes | sdkmanager --licenses
 mkdir -p ~/.android
 touch ~/.android/repositories.cfg
 
-echo y | sdkmanager "platform-tools" --sdk_root=${ANDROID_SDK_ROOT} | tee sdkmanager.log
-
-echo y | sdkmanager "extras;android;m2repository" --sdk_root=${ANDROID_SDK_ROOT} | tee -a  sdkmanager.log
-echo y | sdkmanager "extras;google;m2repository" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
+echo y | sdkmanager "platform-tools" "--sdk_root=${ANDROID_SDK_ROOT}" | tee sdkmanager.log
+echo y | sdkmanager "extras;android;m2repository" "--sdk_root=${ANDROID_SDK_ROOT}" | tee -a  sdkmanager.log
+echo y | sdkmanager "extras;google;m2repository" "--sdk_root=${ANDROID_SDK_ROOT}" | tee -a sdkmanager.log
 
+# Install build tools
 echo y | sdkmanager "build-tools;23.0.2" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
 echo y | sdkmanager "build-tools;23.0.3" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
 echo y | sdkmanager "build-tools;25.0.2" --sdk_root=${ANDROID_SDK_ROOT}  | tee -a sdkmanager.log
@@ -34,6 +46,7 @@ echo y | sdkmanager "build-tools;27.0.3" --sdk_root=${ANDROID_SDK_ROOT}  | tee -
 echo y | sdkmanager "build-tools;28.0.3" --sdk_root=${ANDROID_SDK_ROOT}  | tee -a sdkmanager.log
 echo y | sdkmanager "build-tools;29.0.2" --sdk_root=${ANDROID_SDK_ROOT}  | tee -a sdkmanager.log
 
+# Install platforms
 echo y | sdkmanager "platforms;android-16" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
 echo y | sdkmanager "platforms;android-21" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
 echo y | sdkmanager "platforms;android-23" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log
diff --git a/scripts/run-android.sh b/scripts/run-android.sh
index f6ccd375a904bf0b6df343def1958b21921adf8a..f981bea29f570be012826ed79502408894b5d5a2 100755
--- a/scripts/run-android.sh
+++ b/scripts/run-android.sh
@@ -20,4 +20,4 @@ echo "Building Android application..."
 ionic cordova build android --warning-mode=none --color
 
 echo "Running Android application..."
-native-run android --app ${PROJECT_DIR}/platforms/android/build/outputs/apk/debug/android-debug.apk $*
+native-run android --app ${ANDROID_OUTPUT_APK_DEBUG}/android-debug.apk $*