Skip to content

Commit

Permalink
[android] Fixed NDK not installed when running setup:native (#6685)
Browse files Browse the repository at this point in the history
When running `$yarn setup:native`, it may happen that the sdkmanager cannot be executed (`sdkmanager: command not found`) and the Android NDK is not installed. This happens when your bash_profile already contains the Android SDK path (ANDROID_HOME),but not the `${sdk}/tool/bin` path.

Checking whether `../tools/bin` is in the path is tricky and sketchy, instead this PR therefore makes the script more resilient by using the absolute path to reference the `sdkmanager`. Fixes #6617
  • Loading branch information
IjzerenHein authored and EvanBacon committed Feb 13, 2020
1 parent 8c74cb7 commit 3ba8751
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions scripts/setup-react-android.sh
Expand Up @@ -26,7 +26,8 @@ fi
source $HOME/.bash_profile

# Ensure the `sdkmanager` is installed for React Android
if [ ! -f "${ANDROID_HOME}/tools/bin/sdkmanager" ]; then
sdk_manager="${ANDROID_HOME}/tools/bin/sdkmanager"
if [ ! -f "${sdk_manager}" ]; then
echo "\nDownloading android sdk tools...\n"

sdk_tools_url=`curl https://developer.android.google.cn/studio/ | egrep -o "https://dl.google.com/android/repository/sdk-tools-darwin-.+?\.zip"`
Expand All @@ -43,19 +44,19 @@ mkdir -p $HOME/.android
touch $HOME/.android/repositories.cfg

# Auto accept all the Google licenses
yes | sdkmanager --licenses
yes | ${sdk_manager} --licenses

sdk_manager_options='--no_https --verbose --channel=0'
# To launch the emulator by shell script
sdkmanager emulator ${sdk_manager_options}
${sdk_manager} emulator ${sdk_manager_options}

# Install NDK...
sdkmanager ndk-bundle ${sdk_manager_options}
sdkmanager platform-tools ${sdk_manager_options}
${sdk_manager} ndk-bundle ${sdk_manager_options}
${sdk_manager} platform-tools ${sdk_manager_options}
# Install Intel HAXM (for emulators)
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager" ${sdk_manager_options}
${sdk_manager} "extras;intel;Hardware_Accelerated_Execution_Manager" ${sdk_manager_options}
# Install the version of Android required for React Native
sdkmanager "platforms;android-26" "system-images;android-26;google_apis;x86_64" "build-tools;26.0.3" ${sdk_manager_options}
sdkmanager --update ${sdk_manager_options}
${sdk_manager} "platforms;android-26" "system-images;android-26;google_apis;x86_64" "build-tools;26.0.3" ${sdk_manager_options}
${sdk_manager} --update ${sdk_manager_options}

echo '✅ React Native is now setup'

0 comments on commit 3ba8751

Please sign in to comment.