#!/usr/bin/env bash # assert ANDROID_HOME is set if [ -z "$ANDROID_SDK_HOME" ]; then echo "ANDROID_SDK_HOME is not set" exit 1 fi # assert 2 parameters are provided if [ $# -ne 2 ]; then echo "Usage: $0 " exit 1 fi EMULATOR_NAME=$1 SYSTEM_IMAGE=$2 SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) DEVELOPMENT_DIR=$SCRIPT_DIR/.. ROOT_PROJECT_DIR=$SCRIPT_DIR/../../.. echo "Downloading system image..." $ANDROID_SDK_HOME/cmdline-tools/latest/bin/sdkmanager --install "$SYSTEM_IMAGE" # create AVD if it doesn't exist if $ANDROID_SDK_HOME/cmdline-tools/latest/bin/avdmanager list avd | grep -q "$EMULATOR_NAME"; then echo "AVD already exists. Skipping creation." else echo "Creating AVD..." echo 'no' | $ANDROID_SDK_HOME/cmdline-tools/latest/bin/avdmanager create avd -n "$EMULATOR_NAME" -k "$SYSTEM_IMAGE" sleep 1 fi $SCRIPT_DIR/start_emulator.sh "$EMULATOR_NAME" sleep 3 # get emulator device name from ADB EMULATOR_DEVICE_NAME=$($ANDROID_SDK_HOME/platform-tools/adb devices | grep emulator | cut -f1) if [ -z "$EMULATOR_DEVICE_NAME" ]; then echo "Emulator device name not found" exit 1 fi ADB="$ANDROID_SDK_HOME/platform-tools/adb -s $EMULATOR_DEVICE_NAME" echo "Waiting for emulator to boot..." $ADB wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' echo "Provisioning emulator for write access to '/system'..." $ADB root sleep 3 # wait for adb to restart $ADB remount # remount /system as writable echo "Rebooting emulator..." $ADB reboot # need to reboot first time we remount $ADB wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' echo "Provisioning emulator for Seedvault..." $SCRIPT_DIR/install_app.sh echo "Setting backup transport to Seedvault..." $ADB shell bmgr enable true $ADB shell bmgr transport com.stevesoltys.seedvault.transport.ConfigurableBackupTransport echo "Rebooting emulator..." $ADB reboot $ADB wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' echo "Emulator '$EMULATOR_NAME' has been provisioned with Seedvault!"