Introduction:
-------------

This document provides important information about the Android
emulator codebase, which will be useful for anyone planning to
contribute patches to it.

  **** IMPORTANT NOTE *******************************************************
  THE ANDROID EMULATOR SOURCES ARE CURRENTLY HEAVILY BEING REFACTORED, IF YOU
  PLAN TO SUBMIT CONTRIBUTIONS, PLEASE READ docs/REFACTORING-MADNESS.TXT FOR
  DETAILS ON HOW TO AVOID BREAKAGES.
  ***************************************************************************


I. Building from sources:
-------------------------

This is covered in docs/BUILDING.TXT


II. Overall source layout:
--------------------------

The Android emulator sources contains many, heavily-modified, sources from the
upstream QEMU project (http://www.qemu.org). It adds the following directories:

  android/
    Android-specific code, used to implement a UI and functional layer on
    top of the QEMU code base. Ideally, anything that shouldn't impact the
    QEMU internals should be here.

  include/hw/android/goldfish/
    Headers for the Android-specific goldfish virtual devices.
    See docs/GOLDFISH-VIRTUAL-PLATFORM.TXT for more details.

  hw/android/goldfish/
    Implementation files for the Android-specific goldfish virtual devices.

  hw/android/
    Implementation files for the Android-specific virtual ARM and MIPS
    boards. For x86, the content of hw/i386/pc.c was modified instead.

  distrib/
    Contains various third-party libraries the emulator depends on
    (e.g. zlib, libpng, libSDL).

  elff/
    Generic ELF processing library, used by memcheck/ implementation.
    Also used by the "ndk-stack" Android NDK tool. Should probably move
    to distrib/ or android/ though.

  memcheck/
    Implementation files related to the Valgrind-like memory checking mode
    triggered by the -memcheck option (see -help-memcheck). Should move
    to android/

  slirp-android/
    Modified version of the slirp/ directory, which adds various Android-specific
    features and modifications.

  telephony/
    GSM modem emulation code. Implemented as a QEMU CharDevice (probably
    needs to be refactored then move to android/).

  proxy/
    A transparent HTTP rewriting proxy used to implement the -http-proxy option.
    (need refactor + move to android/)

Generally speaking, some QEMU source files have been rewritten in so signficant
ways that they gained an -android prefix (e.g. vl-android.c versus vl.c). The
original file is typically kept as a reference to make it easier to see
modifications and eventually integrate upstream changes.

Only a fraction of the QEMU sources are actually part of the Android emulator
sources, and this is intentional. It makes maintaining them easier, especially
when trying to compare with the state of upstream QEMU.


III. Testing:
-------------

There is currently very limited automated testing for the Android emulator,
in the form of the "android_unittests" and "android64_unittests" programs,
which, when invoked, will run a series of GoogleTest-based unit tests that
only check internal features of the Android-specific code.

There is work to significantly increase the coverage of these unit tests, as
well as plans for automated function testing. However, for now manual testing of
the emulator binaries with existing SDK system images remains necessary.


III. Integrating upstream QEMU changes:
---------------------------------------

It is sometimes useful to integrate changes from upstream QEMU into the Android
emulator code (e.g. to gain new features, like the ability to emulate new CPUs,
or fix some bugs).

Doing this is a delicate affair, but workable when using directory comparison
tools (e.g. meld), and a lot of patience. It is strongly recommended to read
both Android emulator and QEMU documentation before trying to do so though.

Do not try to integrate QEMU features that are not directly useful to the
Android emulator. It's generally preferable to write stubs. The Android emulator
does not use many QEMU features, like user-mode-emulation, the QEMU monitor,
the QMP protocol, tracing, and many many more.


  **** IMPORTANT NOTE *******************************************************
  THE ANDROID EMULATOR SOURCES ARE CURRENTLY HEAVILY BEING REFACTORED, IF YOU
  PLAN TO SUBMIT CONTRIBUTIONS, PLEASE READ docs/REFACTORING-MADNESS.TXT FOR
  DETAILS ON HOW TO AVOID BREAKAGES.
  ***************************************************************************
