[Samsung Galaxy Grand Quattro] Arinio:
Few Basic Terminology

WHAT IS AN ANDROID EMULATOR

While there are hundreds of millions of Android devices representing hundreds of

models, you probably do not have one of each model. You may only have a single

piece of Android hardware. And if you do not even have that, you most certainly will

want to acquire one before trying to publish an Android app.

To help fill in the gaps between the devices you have and the devices that are

possible, the Android developer tools ship an emulator. The emulator behaves like a

piece of Android hardware, but it is a program you run on your development

machine. You can use this emulator to emulate many different devices, with

different screen sizes and Android OS versions, by creating one or more Android

virtual devices, or AVDs.

ANDROID OS VERSIONS AND API LEVEL

Android has come a long way since the early beta releases from late 2007. Each new

Android OS version adds more capabilities to the platform and more things that

developers can do to exploit those capabilities.

Moreover, the core Android development team tries very hard to ensure forwards

and backwards compatibility. An app you write today should work unchanged on

future versions of Android (forwards compatibility), albeit perhaps missing some

features or working in some sort of “compatibility mode”. And there are well-trodpaths for how to

create apps that will work both on the latest and on previous

versions of Android (backwards compatibility).

To help us keep track of all the different OS versions that matter to us as developers,

Android has API levels. A new API level is defined when an Android version ships

that contains changes that affect developers. When you create an emulator AVD to

test your app, you will indicate what API level that emulator should emulate. When

you distribute your app, you will indicate the oldest API level your app supports, so

the app is not installed on older devices.

At the time of this writing, the API levels of significance to most Android developers

are:

Android 1.0 (API level 1)

Android 1.1 (API level 2)

Android 1.5 Cupcake (API level 3)

Android 1.6 Donut (API level 4)

Android 2.0 Eclair (API level 5)

Android 2.0.1 Eclair (API level 6)

Android 2.1 Eclair (API level 7)

Android 2.2–2.2.3 Froyo (API level 8)

Android 2.3–2.3.2 Gingerbread (API level 9)

Android 2.3.3–2.3.7 Gingerbread (API level 10)

Android 3.0 Honeycomb (API level 11)

Android 3.1 Honeycomb (API level 12)

Android 3.2 Honeycomb (API level 13)

Android 4.0–4.0.2 Ice Cream Sandwich (API level 14)

Android 4.0.3–4.0.4 Ice Cream Sandwich (API level 15)

Android 4.1 Jelly Bean (API level 16)

Android 4.2 Jelly Bean (API level 17)

Android 4.3 Jelly Bean (API level 18)

Android 4.4 KitKat (API level 19)

WHAT IS DALVIK

In terms of Android, Dalvik is a virtual machine (VM). Virtual machines are used by

many programming languages, such as Java, Perl, and Smalltalk. The Dalvik VM is

designed to work much like a Java VM, but optimized for embedded Linux

environments.

So, what really goes on when somebody writes an Android application is:

1. Developers write Java-syntax source code, leveraging class libraries published

by the Android project and third parties.

2. Developers compile the source code into Java VM bytecode, using the javac

compiler that comes with the Java SDK.

3. Developers translate the Java VM bytecode into Dalvik VM bytecode, which

is packaged with other files into a ZIP archive with the .apk extension (the

APK file).

4. An Android device or emulator runs the APK file, causing the bytecode to be

executed by an instance of a Dalvik VM.