This is source release of the Android emulator. simply run the "build-emulator.sh" script to
generate a statically linked "emulator" binary in the current directory.

you can also use the "--target=<path>" option to install the executable into a different location,

At the moment, only Linux and Mac OS X are supported.

This emulator is probably not usable without other support files provided by the Android project,
like a specific kernel image, ramdisk, system and user disk images. Please go to the Android web
site for more details.

This emulator is licensed under the GNU General Public License (GPL) version 2, which can be
found in the file "qemu/COPYING".

it is based on QEMU 0.8.2 with many changes used to support the following features:

  - additionnal hardware support for some Android reference boards.

  - various OS-X related patches to make everything compile cleanly with GCC 4.1 and
    beyond. this includes better support for the Mach-O binary format

  - support for instruction-level profiling and data cache simulation. this allows the
    emulator to generate "profile" files that can later be analyzed with external tools
    to provide accurate information about what's happening in the system

  - changes in the dynamic code generators, mainly to support concurrent generators in
    a single binary (this allows us to use different generators for profiling and
    non-profiling modes, and switch between them dynamically at runtime when needed)

  - support for network throttling and latency simulation, used to better emulate the
    network conditions of radio networks.

  - a new graphical user interface capable of displaying and rotating "device skins"

  - an optional (and disabled by default) "polling" runtime mode that doesn't use
    SIGALRM signals to implement timers. this makes for much better timing accuracy
    when using "old" emukated Linux kernels, at the cost of using 100% CPU, even when
    the guest system is idle. This is now disabled since Linux 2.6.21 and beyond use
    "dynamic ticks" that make this mode un-necessary for Android.


it also uses a patched version of LibSDL-1.2.12 which implements the following:

  - prevent a fatal bug in Quartz Extreme's QuickDraw emulation to crash the program
    whenever SDL_WINDOW_POS is set in the environment before starting the program.
    the patch implements a simple workaround to this system-level problem.

  - new APIs: SDL_WM_GetPos() and SDL_WM_SetPos() are used to retrieve and set the emulator
    window position. this allows us to implement a simple-yet-useful feature: the emulator remembers
    its position among restarts.
