| This package contains the sources to the Android emulator program. |
| |
| Supported Development Platforms: |
| -------------------------------- |
| |
| The Android emulator can be built on the following platforms: |
| |
| - Linux 32-bits |
| - Linux 64-bits (*only* generates 32-bit emulator binary) |
| - Darwin x86 |
| - Darwin ppc (experimental only) |
| - Windows x86 (through Cygwin only) |
| |
| Note that development on 64-bit versions of Darwin and Windows is |
| not supported. The 32-bit emulator binary should run normally on |
| these platforms though. |
| |
| The Windows emulator binary is built using the -no-cygwin option |
| and thus doesn't depend on CYGWIN.DLL being installed on your system. |
| |
| It is possible to hack the android-configure.sh script to build |
| a 64-bit emulator binary on Linux. Unfortunately the resulting |
| program will crash pretty soon during emulation. This problem is |
| due to the way the emulator works and cannot be easily fixed at |
| the moment. |
| |
| Supported Compilers: |
| -------------------- |
| |
| The Android emulator is a heavy fork of QEMU 0.8.2, and as such, |
| can only be built properly with a small number of compilers. Moreover, |
| which compiler can be used depends on your platform. |
| |
| The following table sums up the compilers that are *known* to produce |
| correct output: |
| |
| Linux x86: gcc-3.4.6 |
| Linux x86 and x86_64: gcc-4.2.3 |
| Darwin x86: gcc-4.0.1 (build 5341) |
| Darwin ppc: gcc-3.3 (build 1819) |
| |
| Use any other compiler at your own risks ! A 'bad binary' usually |
| results in the VM crashing either immediately or after a few seconds. |
| |
| Note that on Darwin, the *build* number of your compiler *is* important. |
| Some builds of gcc-4.0.1 are known to generate bad binaries on Darwin x86, |
| so your own fails to build an executable that works correctly. |
| You can find the sources to the required gcc here: |
| |
| |
| We distribute a file named distrib/build_gcc_qemu_darwin.sh which can be |
| used as a replacement for the Apple-provided build_gcc.sh that comes with |
| their gcc distribution. |
| |
| |
| Building the emulator with the Android build system: |
| ---------------------------------------------------- |
| |
| Ensure that you have properly configured your build by running the |
| envsetup.sh script and using the appropriate 'lunch' command. |
| |
| Then type: |
| |
| m emulator |
| |
| This will rebuild the emulator and place it in an adequate location. |
| Simply type 'emulator' to start it with the currently built system |
| image. |
| |
| |
| Building the emulator without the Android build system: |
| ------------------------------------------------------- |
| |
| You can also build the emulator as a stand-alone program, by following |
| these simple steps: |
| |
| 1/ First, build Android's patched libSDL as a static library, |
| this can be done as: |
| |
| cd $TOP/external/qemu/distrib/sdl-1.2.12 |
| ./android-configure --prefix=<PATH> |
| make |
| make install |
| |
| Where $TOP is the path of your open-source Android source tree, and |
| where <PATH> is any path of your chosing where the library will |
| be copied to by the 'make install' command. For example, you |
| can use $HOME/android-sdl |
| |
| 2/ Configure the emulator with android-configure.sh, as in: |
| |
| cd $TOP/external/qemu |
| ./android-configure.sh --sdl-config=<PATH>/bin/sdl-config |
| make |
| |
| Where <PATH> is the same path you used with the --prefix option |
| when building the SDL library |
| |
| The emulator binary is located into objs/emulator, you can strip it and |
| copy it to any location of your choosing. |
| |
| |
| Creating an emulator source distribution package: |
| ------------------------------------------------- |
| |
| We provide a script to build a tar.gz package file that contains all the |
| sources required to rebuild the emulator (i.e. it includes the patched SDL |
| sources as well) plus a handy script to automate the rebuild. |
| |
| Simply invoke: |
| |
| cd $TOP/tools/qemu |
| distrib/make-distrib.sh |
| |
| This script will create a tar.gz file under /tmp/android-package and will |
| print its location when it completes. |
| |
| To rebuild the corresponding emulator, un-tar-gz the package, and run |
| the 'rebuild.sh' script. |