Project: titanium
Issue TIMOB-14785: CLI: Create Android Emulator Library
We need an Android emulator library that provides the following functions: * create AVD ** improve emulator naming convention (TIMOB-1872 Android: Fix AVD naming scheme) * launch emulator ** make sure adb server is running ** if the emulator we want is already running, return ** if avd does not exist, create it ** if skin is not specified, select a valid skin for the AVD's Android SDK (TIMOB-13582 CLI: Launching emulator without specifying skin will use HVGA and will fail if chosen AVD does not support HVGA) ** custom launch params (TIMOB-2646 Android: Feature Request: Customized launch params) ** gracefully handle when emulator doesn't start in timely manner (TIMOB-9153 Android: Deployment: Android Emulator intermittently fails to launch app after timed out) ** NOTE: do not launch a useless emulator, especially on Windows (TIMOB-4730 Android 3.2 Simulator behavior on windows is very poor (not launched at all or useless emulator launched)) ** pipe emulator output to logger (TIMOB-13381 Android Emulator: process launches in new terminal on Windows) ** fire callback when emulator has booted ** fire callback when sdcard is ready ** fire callback when emulator is quit (TIMOB-12604 Android: Closing the emulator, 'Emulator has exited' log in not printed on console) ** NOTE: be careful when running multiple x86 instances as to avoid "Starting emulator for AVD 'titanium_10_800x1280_armeabi-v7a' \ emulator: The memory needed by this VM exceeds the driver limit. \ HAX is not working and emulator runs in emulation mode" errors * kill emulator ** NOTE: make sure emulator is properly killed on Windows (TIMOB-7468 Android: tooling - Rhino/V8 - On windows systems during emulator build, console reports error attempting to kill emulator process) * NOTE: make sure to support directories with &, especially on Windows (TIMOB-2527 Android: App launch/build problem if ampersand in home folder name)
Story points: 20