#!/usr/bin/env bash console_port=$CONSOLE_PORT adb_port=$ADB_PORT adb_server_port=$ADB_SERVER_PORT emulator_opts=$EMULATOR_OPTS if [ -z "$console_port" ]; then console_port="5554" fi if [ -z "$adb_port" ]; then adb_port="5555" fi if [ -z "$adb_server_port" ]; then adb_server_port="5037" fi if [ -z "$emulator_opts" ]; then emulator_opts="-screen multi-touch -no-boot-anim -noaudio -no-window -gpu swiftshader_indirect -camera-back none -camera-front none -skip-adb-auth -no-snapshot-save" fi # Detect ip and forward ADB ports outside to outside interface ip=$(ip addr list eth0 | grep "inet " | cut -d' ' -f6 | cut -d/ -f1) redir --laddr=$ip --lport=$adb_server_port --caddr=127.0.0.1 --cport=$adb_server_port & redir --laddr=$ip --lport=$console_port --caddr=127.0.0.1 --cport=$console_port & redir --laddr=$ip --lport=$adb_port --caddr=127.0.0.1 --cport=$adb_port & function clean_up { echo "Cleaning up" rm -f /tmp/.X1-lock kill $XVFB_PID 2>/dev/null kill $FLUXBOX_PID 2>/dev/null kill $VNC_PID 2>/dev/null exit } trap clean_up SIGHUP SIGINT SIGTERM export DISPLAY=:1 export ANDROID_SDK_ROOT=/opt/android-sdk export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ANDROID_SDK_ROOT/emulator/lib64/qt/lib:$ANDROID_SDK_ROOT/emulator/lib64:$ANDROID_SDK_ROOT/emulator/lib64/gles_swiftshader Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -screen 0 1024x768x24 & XVFB_PID=$! sleep 1 && fluxbox -display ":1.0" & FLUXBOX_PID=$! sleep 2 && x11vnc -display :1 -nopw -forever & VNC_PID=$! # Set up and run emulator cd $ANDROID_SDK_ROOT/emulator CONFIG="/root/.android/avd/x86_64.avd/config.ini" CONFIGTMP=${CONFIG}.tmp if [ -n "$ANDROID_CONFIG" ]; then IFS=';' read -ra OPTS <<< "$ANDROID_CONFIG" for OPT in "${OPTS[@]}"; do IFS='=' read -ra KV <<< "$OPT" KEY=${KV[0]} VALUE=${KV[1]} mv ${CONFIG} ${CONFIGTMP} cat ${CONFIGTMP} | grep -v ${KEY}= > ${CONFIG} echo ${OPT} >> ${CONFIG} done fi echo "emulator_opts: $emulator_opts" # Use the emulator binary directly $ANDROID_SDK_ROOT/emulator/emulator -avd x86_64 -ports $console_port,$adb_port $emulator_opts