#!/usr/bin/env bash PLATFORMS_VERSION=${1:-} BUILDTOOLS_VERSION=${2:-} CMAKE_VERSION=${3:-} NDK_VERSION=${4:-} ARG5=${5:-} pausefunc() { read -rsp $'Press any key to continue...\n' -n1 key } # $1 parameter should be the profile file updateProfileFile() { if [ ! -f "${1}" ]; then touch "${1}" fi if ! grep -q "export ANDROID_HOME=\"$STUDIO_SDK_PATH\"" "$1" then echo >> "$1" echo "export ANDROID_HOME=\"$STUDIO_SDK_PATH\"" >> "$1" fi # remove ANDROID_SDK_HOME if present (causes errors in Gradle Android plugin) if grep -q "export ANDROID_SDK_HOME=" "$1" then grep -v "export ANDROID_SDK_HOME=" "$1" >~/android_patch_profile.tmp cp ~/android_patch_profile.tmp "$1" rm ~/android_patch_profile.tmp fi if ! grep -q "export JAVA_HOME=\"$JAVA_HOME\"" "$1" then echo >> $1 echo "export JAVA_HOME=\"$JAVA_HOME\"" >> "$1" fi if [ "$adbPath" == "" ]; then if ! grep -q "export PATH=\"\$PATH:$PLATFORMTOOLS\"" "$1" then echo >> "$1" echo export PATH="\"\$PATH:$PLATFORMTOOLS\"" >> "$1" echo Added $PLATFORMTOOLS to PATH in $1 fi fi if ! grep -q "export NDKROOT=\"$NDKINSTALLPATH\"" "$1" then echo >> "$1" echo "export NDKROOT=\"$NDKINSTALLPATH\"" >> "$1" echo "export NDK_ROOT=\"$NDKINSTALLPATH\"" >> "$1" fi } # $1 parameter should be the profile contents to remove # $2 parameter should be the profile file undoProfileFile() { if [ ! -f "${2}" ]; then return 0 fi local code=\ '{ data = data $0 ORS } END { i = index(data, text) if (i != 0) { data = substr(data, 1, i - 1) substr(data, i + length(text)) printf "%s", data > out exit close(out) } exit 1 }' if awk -v text="${1}" -v out="${2}" "${code}" "${2}"; then echo "Removed UE Android developer environment variables from ${2}" if [ ! -s "${2}" ]; then rm "${2}" fi return 0 fi return 1 } if [[ ${ARG5} == "-noninteractive" ]]; then PAUSE= else PAUSE="pausefunc" fi # hardcoded versions for compatibility with non-Turnkey manual running if [[ -z "${PLATFORMS_VERSION}" ]]; then PLATFORMS_VERSION="android-34" fi if [[ -z "${BUILDTOOLS_VERSION}" ]]; then BUILDTOOLS_VERSION="35.0.1" fi if [[ -z "${CMAKE_VERSION}" ]]; then CMAKE_VERSION="3.22.1" fi if [[ -z "${NDK_VERSION}" ]]; then NDK_VERSION="27.2.12479018" fi STUDIO_PATH="$HOME/Applications/Android Studio.app" if [ ! -x "$STUDIO_PATH" ]; then STUDIO_PATH="/Applications/Android Studio.app" if [ ! -x "$STUDIO_PATH" ]; then echo Android Studio not installed, please download Android Studio 2022.2.1 from https://developer.android.com/studio ${PAUSE} exit 1 fi fi echo Android Studio Path: $STUDIO_PATH if [ "$STUDIO_SDK_PATH" == "" ]; then STUDIO_SDK_PATH=~/Library/Android/sdk fi if [ ! -d "$STUDIO_SDK_PATH" ]; then echo Android SDK not found at: $STUDIO_SDK_PATH echo Unable to locate local Android SDK location. Did you run Android Studio after installing? echo If Android Studio is installed, please run again with SDK path as parameter, otherwise download Android Studio 4.0.2 from https://developer.android.com/studio ${PAUSE} exit 1 fi echo Android Studio SDK Path: $STUDIO_SDK_PATH export JAVA_HOME="$STUDIO_PATH/Contents/jbr/Contents/Home" NDKINSTALLPATH="$STUDIO_SDK_PATH/ndk/${NDK_VERSION}" PLATFORMTOOLS="$STUDIO_SDK_PATH/platform-tools:$STUDIO_SDK_PATH/build-tools/${BUILDTOOLS_VERSION}:$STUDIO_SDK_PATH/tools/bin" adbPath=$(type -P "adb") SDKMANAGERPATH="$STUDIO_SDK_PATH/cmdline-tools/latest/bin" if [ ! -d "$SDKMANAGERPATH" ]; then SDKMANAGERPATH="$STUDIO_SDK_PATH/tools/bin" if [ ! -d "$SDKMANAGERPATH" ]; then echo Unable to locate sdkmanager. Did you run Android Studio and install cmdline-tools after installing? ${PAUSE} exit 1 fi fi "$SDKMANAGERPATH/sdkmanager" "platform-tools" "platforms;${PLATFORMS_VERSION}" "build-tools;${BUILDTOOLS_VERSION}" "cmake;${CMAKE_VERSION}" "ndk;${NDK_VERSION}" retVal=$? if [ $retVal -ne 0 ]; then echo Update failed. Please check the Android Studio install. ${PAUSE} exit $retVal fi if [ ! -d "$STUDIO_SDK_PATH/platform-tools" ]; then retVal=1 fi if [ ! -d "$STUDIO_SDK_PATH/platforms/${PLATFORMS_VERSION}" ]; then retVal=1 fi if [ ! -d "$STUDIO_SDK_PATH/build-tools/${BUILDTOOLS_VERSION}" ]; then retVal=1 fi if [ ! -d "$NDKINSTALLPATH" ]; then retVal=1 fi if [ $retVal -ne 0 ]; then echo Update failed. Did you accept the license agreement? ${PAUSE} exit $retVal fi updateProfileFile ~/.zshrc if [ "${SHELL}" == "/bin/zsh" ]; then undoProfileFile "\nexport ANDROID_HOME=\"$STUDIO_SDK_PATH\"\n\nexport JAVA_HOME=\"$JAVA_HOME\"\n\nexport PATH=\"\$PATH:$PLATFORMTOOLS\"\n\nexport NDKROOT=\"$STUDIO_SDK_PATH/ndk/25.1.8937393\"\nexport NDK_ROOT=\"$STUDIO_SDK_PATH/ndk/25.1.8937393\"\n" ~/.bash_profile ||\ undoProfileFile "\nexport ANDROID_HOME=\"$STUDIO_SDK_PATH\"\n\nexport JAVA_HOME=\"$JAVA_HOME\"\n\nexport NDKROOT=\"$STUDIO_SDK_PATH/ndk/25.1.8937393\"\nexport NDK_ROOT=\"$STUDIO_SDK_PATH/ndk/25.1.8937393\"\n" ~/.bash_profile ||\ undoProfileFile "\nexport ANDROID_HOME=\"$STUDIO_SDK_PATH\"\n\nexport JAVA_HOME=\"$JAVA_HOME\"\n\nexport PATH=\"\$PATH:$PLATFORMTOOLS\"\n\nexport NDKROOT=\"$NDKINSTALLPATH\"\nexport NDK_ROOT=\"$NDKINSTALLPATH\"\n" ~/.bash_profile ||\ undoProfileFile "\nexport ANDROID_HOME=\"$STUDIO_SDK_PATH\"\n\nexport JAVA_HOME=\"$JAVA_HOME\"\n\nexport NDKROOT=\"$NDKINSTALLPATH\"\nexport NDK_ROOT=\"$NDKINSTALLPATH\"\n" ~/.bash_profile fi echo Success! exit 0