1#!/usr/bin/env bash 2 3port=${2:-8081} 4 5CURRENT_ENV=${NODE_ENV:-"development"} 6ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT:-$ANDROID_HOME} 7 8DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 9 10echo " ☛ Bootstrapping Expo in ${CURRENT_ENV} mode" 11 12"$DIR/setup-android-project.sh" 13 14if ! $ANDROID_SDK_ROOT/tools/android list avd | grep -q bare-expo; then 15 echo " ⚠️ No emulator for bare Expo found, creating one..." 16 $DIR/create-emulator.sh 22 17fi 18 19if $ANDROID_SDK_ROOT/platform-tools/adb devices -l | grep -q emulator; then 20 echo " ✅ Emulator is already running" 21else 22 echo " ⚠️ Starting emulator..." 23 echo "no" | $ANDROID_SDK_ROOT/emulator/emulator "-avd" "bare-expo" "-skin" "480x800" "-no-audio" "-no-boot-anim" "-port" "5554" "-no-snapshot" "-partition-size" "1024" & 24 25 $DIR/wait-for-emulator.sh 26 sleep 30 27 28 $ANDROID_SDK_ROOT/platform-tools/adb wait-for-device 29 $ANDROID_SDK_ROOT/platform-tools/adb shell settings put global window_animation_scale 0 30 $ANDROID_SDK_ROOT/platform-tools/adb shell settings put global transition_animation_scale 0 31 $ANDROID_SDK_ROOT/platform-tools/adb shell settings put global animator_duration_scale 0 32 $ANDROID_SDK_ROOT/platform-tools/adb shell am broadcast -a android.intent.action.BOOT_COMPLETED & 33 34 sleep 5 35 echo " ✅ Emulator is running" 36fi 37 38$DIR/start-metro.sh $port 39 40if [ "${CURRENT_ENV}" = "test" ]; then 41 42 if [ -f "android/app/build/outputs/apk/debug/app-debug-androidTest.apk" ]; then 43 echo " ✅ Debug Detox project is built for Android" 44 else 45 echo " ⚠️ Building the debug Detox project..." 46 yarn run android:detox:build:debug 47 fi 48 49 echo " ☛ Starting Detox in watch mode" 50 # Run our default E2E tests 51 yarn run android:detox:test:debug --watch 52else 53 echo " ☛ Running the Android project..." 54 # Build and run the Android project using `react-native run-android` 55 node "node_modules/react-native/cli.js" run-android --no-packager --port ${port} 56fi 57