diff --git a/scripts/env-android.sh b/scripts/env-android.sh index d918fd232b93c9638f15cc1b95aa687a5757c8cd..45aa21708f1344e4058c234b819b36b32da4fba3 100755 --- a/scripts/env-android.sh +++ b/scripts/env-android.sh @@ -14,11 +14,11 @@ if test -z "${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}"; then fi echo "Preparing Android environment:" -echo " - using Android SDK: ${ANDROID_SDK_ROOT}" -echo " - using Android SDK tools: ${ANDROID_SDK_TOOLS_ROOT}" -echo " - using Gradle: ${GRADLE_HOME}" -echo " - using Java: ${JAVA_HOME}" -echo " - project dir: ${PROJECT_DIR}" +echo " Root: ${PROJECT_DIR}" +echo " NodeJS: version ${NODE_VERSION} with options: ${NODE_OPTIONS}" +echo " Android SDK: ${ANDROID_SDK_ROOT} with CLI: ${ANDROID_SDK_CLI_ROOT}" +echo " Gradle: ${GRADLE_HOME} with options: ${GRADLE_OPTS}" +echo " Java: ${JAVA_HOME}" # Make sure javac exists JAVAC_PATH=$(which javac) @@ -28,11 +28,10 @@ if test -z "${JAVAC_PATH}"; then fi # Prepare Android SDK tools -if ! test -d "${ANDROID_SDK_TOOLS_ROOT}"; then - cd "${PROJECT_DIR}/scripts" - ./install-android-sdk-tools.sh +if ! test -d "${ANDROID_SDK_ROOT}/build-tools/${ANDROID_SDK_VERSION}" || ! test -d "${ANDROID_SDK_CLI_ROOT}/tools/bin"; then + . ${PROJECT_DIR}/scripts/install-android-sdk.sh if test $? -ne 0; then - echo "ERROR: Unable to install Android SDK Tools" + echo "ERROR: Unable to install Android SDK Tools & CLI" fi fi @@ -55,7 +54,6 @@ if test -z "$(which gradle)" && ! test -d "${GRADLE_HOME}"; then fi fi - # Prepare Android platform if ! test -d "${PROJECT_DIR}/platforms/android"; then echo "Adding Cordova Android platform..." @@ -78,6 +76,13 @@ else echo "No directory '${ANDROID_OVERWRITE_DIR}' not found. Please create it, with a file 'release-signing.properties' for release signing" fi +echo +echo "Check Requirements" +cordova requirements android --verbose +if test $? -ne 0; then + echo "ERROR: Check Cordova requirements failed" +fi + export PATH=${GRADLE_HOME}/bin:${PATH} echo "Android environment is ready!" diff --git a/scripts/env-global.sh b/scripts/env-global.sh index 495edb00065145fc1c845938cc750e12a201e33c..9614edf730e13ec5967e8dfb82a19b1bace9e509 100755 --- a/scripts/env-global.sh +++ b/scripts/env-global.sh @@ -21,13 +21,14 @@ REPO_API_URL="https://api.github.com/repos/${REPO}" REPO_PUBLIC_URL="https://github.com/${REPO}" NODEJS_VERSION=12 - -ANDROID_NDK_VERSION=r19c -ANDROID_SDK_VERSION=r29.0.2 -ANDROID_SDK_TOOLS_VERSION=4333796 -ANDROID_SDK_ROOT=/usr/lib/android-sdk -ANDROID_ALTERNATIVE_SDK_ROOT="${HOME}/Android/Sdk" -ANDROID_SDK_TOOLS_ROOT=${ANDROID_SDK_ROOT}/build-tools +#NODE_OPTIONS=--max-old-space-size=4096 + +ANDROID_NDK_VERSION=19.2.5345600 +ANDROID_SDK_VERSION=29.0.3 +ANDROID_SDK_CLI_VERSION=6858069 +ANDROID_SDK_ROOT="${HOME}/Android/Sdk" +ANDROID_ALTERNATIVE_SDK_ROOT=/usr/lib/android-sdk +ANDROID_SDK_CLI_ROOT=${ANDROID_SDK_ROOT}/cli ANDROID_OUTPUT_APK=${PROJECT_DIR}/platforms/android/app/build/outputs/apk ANDROID_OUTPUT_APK_DEBUG=${ANDROID_OUTPUT_APK}/debug ANDROID_OUTPUT_APK_RELEASE=${ANDROID_OUTPUT_APK}/release @@ -44,6 +45,7 @@ WEB_EXT_ID="{6f9922f7-a054-4609-94ce-d269993246a5}" GRADLE_VERSION=6.5.1 GRADLE_HOME=${HOME}/.gradle/${GRADLE_VERSION} CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip +GRADLE_OPTS=-Dorg.gradle.jvmargs=-Xmx512m # Override with a local file, if any if test -f "${PROJECT_DIR}/.local/env.sh"; then @@ -84,14 +86,14 @@ if test -z "${ANDROID_SDK_ROOT}" || ! test -d "${ANDROID_SDK_ROOT}"; then fi # Add Java, Android SDK tools to path -PATH=${ANDROID_SDK_TOOLS_ROOT}/bin:${GRADLE_HOME}/bin:${JAVA_HOME}/bin$:$PATH +PATH=${ANDROID_SDK_CLI_ROOT}/bin:${GRADLE_HOME}/bin:${JAVA_HOME}/bin$:$PATH # Export useful variables export PATH \ PROJECT_DIR \ JAVA_HOME \ ANDROID_SDK_ROOT \ - ANDROID_SDK_TOOLS_ROOT \ + ANDROID_SDK_CLI_ROOT \ CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL @@ -151,9 +153,14 @@ if ! test -d "${PROJECT_DIR}/platforms/android" || ! test -d "${PROJECT_DIR}/dis fi -export PROJECT_DIR PROJECT_NAME REPO REPO_API_URL REPO_PUBLIC_URL NODEJS_VERSION \ - ANDROID_NDK_VERSION ANDROID_SDK_VERSION ANDROID_SDK_TOOLS_VERSION ANDROID_SDK_ROOT ANDROID_ALTERNATIVE_SDK_ROOT \ - ANDROID_SDK_TOOLS_ROOT ANDROID_OUTPUT_APK ANDROID_OUTPUT_APK_DEBUG ANDROID_OUTPUT_APK_RELEASE DIST_WEB \ - DIST_ANDROID WEB_EXT_ID +export PATH \ + PROJECT_DIR PROJECT_NAME \ + REPO REPO_API_URL REPO_PUBLIC_URL \ + NODEJS_VERSION \ + ANDROID_NDK_VERSION ANDROID_SDK_VERSION ANDROID_SDK_CLI_VERSION ANDROID_SDK_ROOT ANDROID_ALTERNATIVE_SDK_ROOT \ + ANDROID_SDK_CLI_ROOT ANDROID_OUTPUT_APK ANDROID_OUTPUT_APK_DEBUG ANDROID_OUTPUT_APK_RELEASE \ + GRADLE_HOME GRADLE_OPTS \ + DIST_WEB DIST_ANDROID \ + WEB_EXT_ID echo "Project environment is ready!" diff --git a/scripts/install-android-sdk-tools.sh b/scripts/install-android-sdk.sh similarity index 54% rename from scripts/install-android-sdk-tools.sh rename to scripts/install-android-sdk.sh index cc9ee954ef6f8a2594e77f36950f2ec75a828e0e..a7de3f5ff8d4c14a78c186726c070a70a57d8461 100755 --- a/scripts/install-android-sdk-tools.sh +++ b/scripts/install-android-sdk.sh @@ -8,28 +8,33 @@ 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" +if [[ "_" == "_${ANDROID_SDK_CLI_ROOT}" ]]; then + echo "Please set env variable ANDROID_SDK_CLI_ROOT" exit 1 fi -if [[ ! -d "${ANDROID_SDK_TOOLS_ROOT}/bin" ]]; then - 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 - # 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" +if [[ ! -d "${ANDROID_SDK_CLI_ROOT}/tools/bin" ]]; then + echo "Installing Android SDK CLI... ${ANDROID_SDK_CLI_ROOT}" + ANDROID_SDK_CLI_FILE="commandlinetools-linux-${ANDROID_SDK_CLI_VERSION}_latest.zip" + test -e "${ANDROID_SDK_CLI_FILE}" || wget -kL https://dl.google.com/android/repository/${ANDROID_SDK_CLI_FILE} + test -e "${ANDROID_SDK_CLI_ROOT}" || sudo mkdir -p "${ANDROID_SDK_CLI_ROOT}" + test -e "${ANDROID_SDK_CLI_ROOT}" && sudo unzip -qq ${ANDROID_SDK_CLI_FILE} -d "${ANDROID_SDK_CLI_ROOT}" + test -e "${ANDROID_SDK_CLI_ROOT}" && sudo rm "${ANDROID_SDK_CLI_FILE}" fi -export PATH=${ANDROID_SDK_TOOLS_ROOT}/bin:$PATH +if [[ ! -d "${ANDROID_SDK_CLI_ROOT}/tools/bin" ]]; then + echo "Failed to install Android SDK CLI tools. If you are not root, try with \`sudo -E ./install-android-sdk-tools.sh\`" + exit 1 +fi + +# Add SDK CLI and Java to path +export PATH=${ANDROID_SDK_CLI_ROOT}/tools/bin:$PATH mkdir -p ${ANDROID_SDK_ROOT}/licenses echo 8933bad161af4178b1185d1a37fbf41ea5269c55 > ${ANDROID_SDK_ROOT}/licenses/android-sdk-license echo 601085b94cd77f0b54ff86406957099ebe79c4d6 > ${ANDROID_SDK_ROOT}/licenses/android-googletv-license echo 33b6a2b64607f11b759f320ef9dff4ae5c47d97a > ${ANDROID_SDK_ROOT}/licenses/google-gdk-license -yes | sdkmanager --licenses +yes | sdkmanager --licenses "--sdk_root=${ANDROID_SDK_ROOT}" mkdir -p ~/.android touch ~/.android/repositories.cfg @@ -39,14 +44,12 @@ echo y | sdkmanager "extras;android;m2repository" "--sdk_root=${ANDROID_SDK_ROOT 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 -echo y | sdkmanager "build-tools;27.0.3" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log -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 +echo "Installing Android build-tools..." +echo y | sdkmanager "build-tools;${ANDROID_SDK_VERSION}" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log +[[ $? -ne 0 ]] && exit 1 # Install platforms +echo "Installing Android target 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 @@ -55,3 +58,9 @@ echo y | sdkmanager "platforms;android-25" --sdk_root=${ANDROID_SDK_ROOT} | tee echo y | sdkmanager "platforms;android-27" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log echo y | sdkmanager "platforms;android-28" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log echo y | sdkmanager "platforms;android-29" --sdk_root=${ANDROID_SDK_ROOT} | tee -a sdkmanager.log +[[ $? -ne 0 ]] && exit 1 + +# Install NDK +echo "Installing Android NDK..." +sdkmanager "ndk;22.0.7026061" --sdk_root=${ANDROID_SDK_ROOT} +sdkmanager "ndk;${ANDROID_NDK_VERSION}" --sdk_root=${ANDROID_SDK_ROOT} diff --git a/scripts/release-android-sign.sh b/scripts/release-android-sign.sh index dce529aaf7dfc7ec44b3f47baf816987bfc3d55d..1bccacbca79fe89abe68b70d2ebdb30129d47eac 100755 --- a/scripts/release-android-sign.sh +++ b/scripts/release-android-sign.sh @@ -44,7 +44,7 @@ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ${KEYSTORE_FILE [[ $? -ne 0 ]] && exit 1 echo "Executing jarsigner [OK]" -BUILD_TOOLS_DIR="${ANDROID_SDK_ROOT}/build-tools/28.*/" +BUILD_TOOLS_DIR="${ANDROID_SDK_ROOT}/build-tools/${ANDROID_SDK_VERSION}/" cd ${BUILD_TOOLS_DIR} echo "Executing zipalign..." diff --git a/scripts/release.sh b/scripts/release.sh index 78fead628648d63f2565bef42f58dd2922ff2c83..4244ae6defbde8e19685713504697526b1951b7e 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -77,9 +77,7 @@ esac # Preparing the environment . ${PROJECT_DIR}/scripts/env-global.sh -if [[ $? -ne 0 ]]; then - exit 1 -fi +[[ $? -ne 0 ]] && exit 1 echo "----------------------------------" @@ -101,7 +99,7 @@ rm -rf ${ANDROID_OUTPUT_APK_RELEASE}/*.apk || exit 1 [[ $? -ne 0 ]] && exit 1 APK_RELEASE_FILE="${ANDROID_OUTPUT_APK_RELEASE}/app-release.apk" - APK_RELEASE_UNSIGNED_FILE="${ANDROID_OUTPUT_APK_RELEASE}/app-release-unsigned.apk" +APK_RELEASE_UNSIGNED_FILE="${ANDROID_OUTPUT_APK_RELEASE}/app-release-unsigned.apk" if [[ ! -f "${APK_RELEASE_FILE}" ]]; then if [[ ! -f "${APK_RELEASE_UNSIGNED_FILE}" ]]; then echo "ERROR: Missing android artifact at ${APK_RELEASE_FILE}"