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 $*