Search code examples
androidandroid-emulatoremulationandroid-sdk-tools

Difference among Android's emulator command variations


There're several emulator binary variations residing in the Android SDK's /tools folder but I don't find any documentation on their differences (e.g. when to which one).

screenshot of different emulator command variations

Android SDK version is 24.4.1, on CentOS.


Solution

  • Normally, you don't need to care about this, a default emulator will be chosen for you (first binary). Each binary represents one of the supported architectures. The last five are the 32-bit emulators.

    Android emulator is based on QEMU

    When the Android SDK was first made available to the world, Google used QEMU as the basis for their Android emulator. They copied the source code to a custom repository in the Android Open Source Project (AOSP) and made a number of invasive modifications to QEMU. Specifically, they added emulation of a specific board called goldfish for the purposes of emulating an Android phone.

    Every build of Android targets a specific hardware platform, and the emulated goldfish platform is no different. A number of specific emulator features are enabled in both the Android kernel and Android userspace environment when run in an emulated environment. These features allow a smooth and complete user experience resembling using a real Android device, on laptop and desktop workstations.

    The Android emulator provides Android application developers with a convenient development environment and allows developers to develop and test applications on devices which they do not have physical access to. With the introduction of the ARMv8-A architecture and Android support for 64-bit ARM platforms, this need is more important than ever because it allows developers to begin adapting their applications to an ARM 64-bit based mobile ecosystem prior to hardware being available.

    You can use the default emulator like here (or add QEMU options, but I never needed it, read this).

    enter image description here

    enter image description here

    You also can force a 32-bit emulator:

    enter image description here

    enter image description here