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