xref: /expo/scripts/setup-react-android.sh (revision fc77b8df)
1#!/usr/bin/env bash
2
3# Downloading the rncache can fail easily so we just copy it.
4# > This comes from `node_modules/react-native/src/rncache.json`
5mkdir -p ~/.rncache
6cp -f rncache/* ~/.rncache/
7
8# React Native environment variables
9
10# Ensure file
11touch ~/.bash_profile
12
13# Prevent duplication by searching for an existing value
14ANDROID_PATH_EXIST=`cat ~/.bash_profile | grep ANDROID_HOME=`
15
16if [ -z "$ANDROID_PATH_EXIST" ]; then
17  echo '
18    export ANDROID_HOME=$HOME/Library/Android/sdk
19    export PATH=$PATH:$ANDROID_HOME/tools
20    export PATH=$PATH:$ANDROID_HOME/tools/bin
21    export PATH=$PATH:$ANDROID_HOME/platform-tools
22  ' >> ~/.bash_profile
23fi
24
25# Reload the profile
26source $HOME/.bash_profile
27
28# Ensure the `sdkmanager` is installed for React Android
29sdk_manager="${ANDROID_HOME}/tools/bin/sdkmanager"
30if [ ! -f "${sdk_manager}" ]; then
31  echo "\nDownloading android sdk tools...\n"
32
33  sdk_tools_url=`curl https://developer.android.google.cn/studio/ | egrep -o "https://dl.google.com/android/repository/sdk-tools-darwin-.+?\.zip"`
34  sdk_tools_name=`basename ${sdk_tools_url}`
35  # Remove possible existing copy
36  rm -f ${sdk_tools_name}
37  # Download and install `sdkmanager`
38  curl -O ${sdk_tools_url}
39  mkdir -p  ${ANDROID_HOME}
40  tar -zxvf ${sdk_tools_name} -C ${ANDROID_HOME}
41fi
42
43mkdir -p $HOME/.android
44touch $HOME/.android/repositories.cfg
45
46# Auto accept all the Google licenses
47yes | ${sdk_manager} --licenses
48
49sdk_manager_options='--no_https --verbose --channel=0'
50# To launch the emulator by shell script
51${sdk_manager} emulator ${sdk_manager_options}
52
53# Install NDK...
54${sdk_manager} ndk-bundle ${sdk_manager_options}
55${sdk_manager} platform-tools ${sdk_manager_options}
56# Install Intel HAXM (for emulators)
57${sdk_manager} "extras;intel;Hardware_Accelerated_Execution_Manager" ${sdk_manager_options}
58# Install the version of Android required for React Native
59${sdk_manager} "platforms;android-26" "system-images;android-26;google_apis;x86_64" "build-tools;26.0.3" ${sdk_manager_options}
60${sdk_manager} --update ${sdk_manager_options}
61
62echo '✅  React Native is now setup'