xref: /expo/scripts/setup-react-android.sh (revision dc235daf)
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'