1275a6932SEvan Bacon#!/usr/bin/env bash 2275a6932SEvan Bacon 3275a6932SEvan Bacon# Downloading the rncache can fail easily so we just copy it. 4275a6932SEvan Bacon# > This comes from `node_modules/react-native/src/rncache.json` 5275a6932SEvan Baconmkdir -p ~/.rncache 6275a6932SEvan Baconcp -f rncache/* ~/.rncache/ 7275a6932SEvan Bacon 8275a6932SEvan Bacon# React Native environment variables 9275a6932SEvan Bacon 10275a6932SEvan Bacon# Ensure file 11275a6932SEvan Bacontouch ~/.bash_profile 12275a6932SEvan Bacon 13275a6932SEvan Bacon# Prevent duplication by searching for an existing value 14275a6932SEvan BaconANDROID_PATH_EXIST=`cat ~/.bash_profile | grep ANDROID_HOME=` 15275a6932SEvan Bacon 16275a6932SEvan Baconif [ -z "$ANDROID_PATH_EXIST" ]; then 17275a6932SEvan Bacon echo ' 18275a6932SEvan Bacon export ANDROID_HOME=$HOME/Library/Android/sdk 19275a6932SEvan Bacon export PATH=$PATH:$ANDROID_HOME/tools 20275a6932SEvan Bacon export PATH=$PATH:$ANDROID_HOME/tools/bin 21275a6932SEvan Bacon export PATH=$PATH:$ANDROID_HOME/platform-tools 22275a6932SEvan Bacon ' >> ~/.bash_profile 23275a6932SEvan Baconfi 24275a6932SEvan Bacon 25275a6932SEvan Bacon# Reload the profile 26275a6932SEvan Baconsource $HOME/.bash_profile 27275a6932SEvan Bacon 28275a6932SEvan Bacon# Ensure the `sdkmanager` is installed for React Android 29*dc235dafSHein Rutjessdk_manager="${ANDROID_HOME}/tools/bin/sdkmanager" 30*dc235dafSHein Rutjesif [ ! -f "${sdk_manager}" ]; then 31275a6932SEvan Bacon echo "\nDownloading android sdk tools...\n" 32275a6932SEvan Bacon 33275a6932SEvan Bacon sdk_tools_url=`curl https://developer.android.google.cn/studio/ | egrep -o "https://dl.google.com/android/repository/sdk-tools-darwin-.+?\.zip"` 34275a6932SEvan Bacon sdk_tools_name=`basename ${sdk_tools_url}` 35275a6932SEvan Bacon # Remove possible existing copy 36275a6932SEvan Bacon rm -f ${sdk_tools_name} 37275a6932SEvan Bacon # Download and install `sdkmanager` 38275a6932SEvan Bacon curl -O ${sdk_tools_url} 39275a6932SEvan Bacon mkdir -p ${ANDROID_HOME} 40275a6932SEvan Bacon tar -zxvf ${sdk_tools_name} -C ${ANDROID_HOME} 41275a6932SEvan Baconfi 42275a6932SEvan Bacon 43275a6932SEvan Baconmkdir -p $HOME/.android 44275a6932SEvan Bacontouch $HOME/.android/repositories.cfg 45275a6932SEvan Bacon 46275a6932SEvan Bacon# Auto accept all the Google licenses 47*dc235dafSHein Rutjesyes | ${sdk_manager} --licenses 48275a6932SEvan Bacon 49275a6932SEvan Baconsdk_manager_options='--no_https --verbose --channel=0' 50275a6932SEvan Bacon# To launch the emulator by shell script 51*dc235dafSHein Rutjes${sdk_manager} emulator ${sdk_manager_options} 52275a6932SEvan Bacon 53275a6932SEvan Bacon# Install NDK... 54*dc235dafSHein Rutjes${sdk_manager} ndk-bundle ${sdk_manager_options} 55*dc235dafSHein Rutjes${sdk_manager} platform-tools ${sdk_manager_options} 56275a6932SEvan Bacon# Install Intel HAXM (for emulators) 57*dc235dafSHein Rutjes${sdk_manager} "extras;intel;Hardware_Accelerated_Execution_Manager" ${sdk_manager_options} 58275a6932SEvan Bacon# Install the version of Android required for React Native 59*dc235dafSHein Rutjes${sdk_manager} "platforms;android-26" "system-images;android-26;google_apis;x86_64" "build-tools;26.0.3" ${sdk_manager_options} 60*dc235dafSHein Rutjes${sdk_manager} --update ${sdk_manager_options} 61275a6932SEvan Bacon 62275a6932SEvan Baconecho '✅ React Native is now setup'