Android SDK

How to Install and Get Started


Android Robot

Android is an Operating System for mobile devices developed by Google, which is built upon Linux kernel. Android competes with Apple's iOS (for iPhone/iPad), RIM's Blackberry, Microsoft's Windows Phone, Symbian OS, and many other proprietary mobile OSes.

The latest Android 7 (Nougat) supports Phone/Tablet, TV, Wear (watch and glass), Automobile and Internet of things.

Android Platform

Android is based on Linux with a set of native core C/C++ libraries. Android applications are written in Java. However, they run on Android's own Java Virtual Machine, called Dalvik Virtual Machine (DVM) (instead of JDK's JVM) which is optimized to operate on the small and mobile devices.

Android Stack

The mother site for Android is For programmers and developers, visit to download the SDK, Android Training, API Guides and API documentation.

Installing "Android SDK" and "Android Studio IDE"

Installing Android software is probably the most challenging part of this project - for the unlucky ones. It takes times - from 30 minutes to n hours to forever - depending on your luck (in fact, your IT knowledge) and your PC. You probably need a fairly decent PC to run the Android emulator and 5-10GB of free disk space!!!

We need to install both the "Android Studio", which is an IDE based on IntelliJ (a popular Java IDE); and "Android SDK" libraries.

Step 0: Pre-Installation Check List
  1. Before installing Android SDK, you need to install Java Development Kit (JDK). Read "How to install JDK". Ensure that your JDK is at or above 1.7. You can check your JDK version with command "javac -version".
  2. The installation and many operations take a LONG time to complete. Do NOT stare at your screen or at the ceiling. Browse through the "Android Training" @ Android Developers ( There are three main menus: "Design", "Develop", and "Distribute". Choose "Develop", you can find the Android "Training", "API Guides", "Reference" and "Tools". For beginners, browse through the "Training".
Step 1: Install "Android Studio IDE" and "Android SDK"
(For Windows)
  1. Check that environment variable JAVA_HOME is set to the JDK installation directory via command "set JAVA_HOME". Otherwise, set the JAVA_HOME via "Control Panel". Check the detail steps HERE.
  2. Check the system requirements for Android Studio/SDK @
  3. Goto "Android Developer" @ ⇒ Select "Get Android Studio" ⇒ "Download Android Studio For Windows", e.g., android-studio-bundle-162.xxxxxx-windows.exe, which is a huge file of 1.8GB.
  4. Run the downloaded installer. Follow the on-screen instruction and accept the defaults to complete the installation. You need about 5GB of free disk space! Take note (and take photo) on the installation locations of "Android Studio" and "Android SDK".

Take note that "Android Studio IDE" is installed in "C:\Program Files\Android\Android Studio" and "Android SDK" is installed in "C:\Users\your-username\AppData\Local\Android\sdk".

(For Mac OS X)
  1. Check the system requirements @
  2. Goto "Android Developer" @ ⇒ Select "Get Android Studio" ⇒ "Download Android Studio For Mac". E.g., android-studio-ide-162.xxxxxx-mac.dmg (424MB).
  3. Launch the downloaded .dmg installation file.
  4. Drag and drop Android Studio into the "Applications" folder.
    Note: If you see a warning that says the package is damaged and should be moved to the trash, go to System Preferences ⇒ Security & Privacy ⇒ under Allow applications downloaded from ⇒ select Anywhere. Then run again.

The Android SDK is installed in "~/Library/Android/sdk/".

Step 2: Post-Installation - Adding More SDK Packages

The installation installed basic SDK packages. You may need to add a few more to run the Hello-world.

Adding too many SDK packages, especially the so-called system images for emulating different device (e.g., various phone/tablet), will take an extremely LONG time, especially if everyone is downloading and jamming up the network. The system images also take up a lot of disk space - more than 10 GB per API level!!! For our toy project, we only need a small set of SDK packages.

[TODO] Check if it is possible to copy the SDK instead of downloading during installation?

(For Windows)

[March 2017] DO NOTHING! In this latest Android Studio, all the necessary components have been installed.

  1. Launch Android Studio ⇒ Check "I do not have previous version of Android Studio" ⇒ Android studio setup wizard will download more SDK components ⇒ Wait for it to complete ⇒ Finish.
  2. Select "Configure" ⇒ "SDK Manager" ⇒ Select "SDK Tools" tab ⇒ Check "Android Support Repository/Library", "Intel x86 Emulator Accelerator (HAXM Installer)" and "Google USB Driver" ⇒ Apply.
(For Mac OS X)
  1. Launch Android Studio (from Applications) ⇒ Android studio setup wizard will download more SDK components ⇒ Wait and wait and wait for it to complete ⇒ Finish. (If error occurs in installing "platform-tools" ⇒ Cancel.)
  2. Select "Configure" ⇒ "SDK Manager" ⇒ If error "Please specify an Android SDK Location" occurs, click "Edit" and COPY the SDK location "/Users/.../Library/Android/sdk", then select "Configure" ⇒ Project defaults ⇒ Project structure ⇒ In "Android SDK Location", PASTE it.
  3. Select "Configure" ⇒ "SDK Manager" ⇒ "Launch Standalone SDK Manager" ⇒ Click "Deselect All" (otherwise, it will take hours to install all the packages) ⇒ Check that these packages are "installed"; otherwise, check them to install:
    1. Under "Tools":
      1. "Android SDK Tools"
      2. "Android SDK Platform-tools"
      3. "Android SDK Build-tools (highest version)"
    2. Under "Android 7.0 (API 25)" (or the latest version):
      1. "SDK Platform"
      2. At least one "System Image". If any of the "xxxxxx System Images" is already installed, okay. Otherwise, check "Google APIs" and "Google APIs Intel x86 Atom System Image" (which seems to be the fastest among a few I tried).
        [Notes: (1) System Image is huge (>1GB each). (2) Android devices could be built on many different hardware processors, e.g., Intel x86, ARMv5, and ARMv7. Android SDK provides "emulator" for you to test your app on ALL hardware, by building a System-Image for EACH of the hardware. Our toy project does not need to be simulated on ALL hardware but just anyone of the hardware!]
    3. Under "Extras":
      1. "Android Support Repository/Library"
      2. "Google Repository"
      3. "Intel x86 Emulator Accelerator (HAXM Installer)"
    Click "Install n packages". This step is SLOW! very SLOW! The SDK will be installed under "~/Library/Android/sdk" for Mac OS X.

Write your First Android App

Android apps are written in Java, and use XML extensively. I shall assume that you have basic knowledge of Java and XML.

Take note that Android emulator is slow - VERY VERY VERY SLOW!!! Be Patient!!!


Step 0: Read

Goto "Android Training" @ Read "Get Started" and "Building your first app".

Step 1: Create a New Android Project
  1. Launch Android Studio.
  2. Choose "Start a new Android Studio Project".
  3. In "New Project: Configure your new project" dialog ⇒ Set "Application Name" to "Hello Android" (this will be the title in your app menu) ⇒ Set your "Company Domain" to "" ⇒ In "Project Location", choose your project directory, e.g., d:\myProject or use the default location ⇒ Leave the rest to their default values ⇒ Next.
  4. In "Installing Requested Components" ⇒ Next.
  5. In "Target Android Devices: Select the form factor your app will run on" ⇒ Check "Phone and Tablet" ⇒ In "Minimum SDK", choose "API 15: Android 4.0.3 (IceCreamSandwich)" ⇒ Leave all of the other options (TV, Wear, and Glass) unchecked ⇒ Next.
  6. In "Add an activity to Mobile" dialog ⇒ Select "Empty Activity" (default) ⇒ Next.
  7. In "Customize the Activity" dialog ⇒ Set "Activity Name" to "MainActivity" (default) ⇒ Set "Layout Name" to "activity_main" (default) ⇒ Finish.
  8. Be patient! It could take a while to set up your first app. The app appears after "Indexing..." (at the bottom status bar) completes. By default, a hello-world app is created.
Step 2: Setup Emulator (aka Android Virtual Device (AVD))

To run your Android app under the emulator, you need to first create an Android Virtual Devices (AVD). An AVD models a specific device (e.g., your jPone or Taimi). You can create AVDs to emulate different android devices (e.g., phone/tablet, android version, screen size, and etc.).

  1. In Android studio, select "Tools" ⇒ Android ⇒ AVD Manager.
  2. Click "Create Virtual Device".
  3. In "Select Hardware: Choose a device definition" dialog ⇒ In "Category", choose "Phone" ⇒ In "Name", choose "2.7 QVGA" (the smallest device available - you can try a bigger device later) ⇒ Next.
  4. In "System Image" ⇒ Next.
  5. In "AVD Name", enter "QVGA" ⇒ Finish.
Step 3: Run the Android App on Emulator
  1. Select the "Run" menu ⇒ "Run app" ⇒ Check "Launch Emulator" ⇒ Select "QVGA" ⇒ OK.
  2. You MAY BE prompted to install Intel HAXM (Hardware Accerlerated Execution Manager). Follow the instruction to install HAXM.
  3. You MAY BE asked to enable VT-x in BIOS. Reboot your computer, hit a hot-key to enter BIOS (ESC for my HP). Enable VT-x under "Advanced" ⇒ "System Options" (could be different for different computer). See below "Problem and Error Notes".
  4. Be patient! It may take a few MINUTES to fire up the app on the emulator. You first see a black screen ⇒ then the word "Android" ⇒ then the wallpaper ⇒ then the "Hello, world!" message.
    If you have problem running on the emulator, I suggest you try to run on an actual Android device (phone/pad) if you have one. Goto next step.
  5. DO NOT CLOSE THE EMULATOR, as it really takes a long time to start. You could always re-run the app (or run a new app) on the same emulator. Try re-run the app by selecting "Run" menu ⇒ "Run app" ⇒ Now, "QVGA" should appear under "Choose a running device" (as it has already started) ⇒ Select it ⇒ OK.

Problem & Error Notes:

  1. If everything fails, select "File" menu ⇒ "Invalidate Caches / Restart..." ⇒ and wait ...
  2. If you encountered error "HAX is not working..." ⇒ Open "SDK Manager" ⇒ Check if "Extras / Intel x86 Emulator Accelerator (HAXM Installer)" is installed ⇒ Place your cursor under "Intel x86 Emulator Accelerator (HAXM Installer)" to show the location of the downloaded installer (by default, "C:\Users\your-username\AppData\Local\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager" for Windows or "~/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager" for Mac OS X) ⇒ Goto the the directory and run "intelhaxm-android.exe" to install HAXM ⇒ Be patient! The installer may take a while to launch ⇒ Follow the screen instructions to complete the setup.
    Take note that: (a) In Wiindows, the "AppData" directory is hidden. You need to unhide via "Control Panel" ⇒ "Folder Options" (or "File Explorer Options" in Windows 10) ⇒ Check "Show hidden files, folders, and drives". (b) In Mac OS X, the "Library" folder is hidden. You can unhide via "Finder" ⇒ Go ⇒ Home ⇒ Settings ⇒ Show View Option.
    If the problem persists, remove and then re-install.
  3. If you encountered error "Intel virtualization technology (VT-x) is not turned on" ⇒ Check your BIOS setting to ensure that "Intel virtualization technology" is enabled. Shutdown and re-boot your PC to enter the BIOS setup. This is machine dependent. Google "Your-PC-brand-and-model enter BIOS setup".
    If "Intel virtualization technology" is already enabled, this error is probably caused by your antivirus software. Disable your antivirus for this session and rerun.
  4. If you have problem creating AVD via "AVD Manager" (On Mac OS X having error "Studio quit unexpectedly"), open the AVD manager via command line as follows:
    // For Mac OS X
    cd ~/Library/Android/sdk/tools
    ./android avd
    // For Windows
    cd C:\Users\your-username\AppData\Local\Android\sdk\tools
    android avd
Step 4: Run the Android App on Real Devices

Reference: "Running Your App", "Run on Real Device" @

To run the Android app on a REAL device (Android Phone or Tablet):

  1. Connect the real device to your computer. Make sure that you have the "USB Driver" for your device installed on your computer. You can find the "Google USB Driver" @, and Google's certified "OEM USB Drivers" @ If you device is not certified there, good luck! It took me many hours to find a compatible driver for my cheap un-brand Tablet.
  2. Enable "USB Debugging" mode on your real device:
    (On Android 4.2/5.0 and newer) Need to enable "Developer options" via "Settings" ⇒ About Phone ⇒ tap "Build number" seven (7) times until "Developer Mode" is displayed. Return to the previous screen to find "Developer options".
    (On Android 4.0) From "Settings" ⇒ "Developer options" ⇒ Check "USB Debugging".
    (On Android 3.2 and older) From "Settings" ⇒ "Applications" ⇒ "Development" ⇒ Check "USB Debugging". This allows Android SDK to transfer data between your computer and your device. Also enable "Unknown source" from "Applications". This allows applications from unknown sources to be installed on the device.
    Ref: See for detailed screen shots.
  3. You shall see the message "USB Debugging Connected" when you plugs the USB cable into your computer.
  4. From Android Studio, select "Run" menu ⇒ "Run app" ⇒ Your device shall be listed under "Choose a running device" ⇒ Select the device ⇒ OK.

Notes: To delete a project, select "File" ⇒ "Close Project" ⇒ On the "Recent Projects" ⇒ Press "Delete" key on the project.

Hello-world "by Coding"

There are two ways to create User Interface (UI) on Android: (1) Write Java codes; (2) Layout via XML descriptions.

Let's begin with writting Java codes (because I suppose to teach you programming). We shall continue from the "Hello Android" project created earlier.

Expand the "app" node. Expand the "java" node. Expand the "com.example.helloandroid" package node. Open the "" (which actually has been opened). REPLACE the onCreate() method as follows and add the import statement. Do not touch the rest of the codes.

package ......;
import ......;
import android.widget.TextView;   // Add this line
public class MainActivity extends ...... {

    // REPLACE the ENTIRE onCreate() method as follows:
    protected void onCreate(Bundle savedInstanceState) {
        TextView textView = new TextView(this);   // Construct a TextView UI component
        textView.setText("Hello, from my Java code!"); // Set the text message for TextView
        setContentView(textView);  // this Activity sets its content to the TextView
    // Do not touch the rest of the codes, if any

Run the application ("Run" ⇒ "Run app"). You shall see the message "Hello, from my Java code!" displayed.

Dissecting the "" - Application, Activity & View

An Android application could have one or more Activity.

An Activity, which usually has a screen, is a single, focused thing that the user can interact with the application (hence called activity). The MainActivity extends the class, and overrides the onCreate() method. The onCreate() is a call-back method, which is called back by the Android system when the activity is launched.

A View is a UI component (or widget, or control). We construct a TextView (which is a subclass View for showing a text message), and set its text. We then set the content-view of the MainActivity screen to this TextView.

Android Application Descriptor File - "AndroidManifest.xml"

Each Android application has a manifest file named AndroidManifest.xml under "app" ⇒ "manifests". It describes the Android app.

For example, our "Hello Android" application, with an activity MainActivity, has the following manifest (generated automatically by the Android Studio when the project was built):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=""
    package="com.example.helloandroid" >
        android:theme="@style/AppTheme" >
            android:label="@string/app_name" >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
  • The <manifest> element specifies the package name.
  • The <manifest> contains one <application> element.
  • The <application> element specifies the icon, label (the application's title) and theme of this application. It contains one ore more <activity> elements.
  • This application has one activity. The <activity> element declares its program name ("MainActivity" in default package); and label (the activity's screen title). It may contain <intent-filter>.
  • The <intent-filter> declares that this activity is the entry point (android.intent.action.MAIN) of the application. This activity is to be added to the application launcher (android.intent.category.LAUNCHER).

Hello-World using "XML Layout"

Instead of writing Java codes to create the user interface (UI) (as in the above example using a TextView component). It is more flexible and therefore recommended to layout your UI components via a descriptive XML layout file. In this way, you don't need to hardcode the views, and you can easily modify the look and feel of the application by editing the XML markups. The Java codes can therefore focus on the business logic.

Let's rewrite our hello-world to use XML layout.

Step 1: Create a New Android Application

CLOSE the previous project, via "File" ⇒ "Close Project" (Always CLOSE the previous project before starting a new project).

Create a new Android project with application name "Hello Android XML", domain name "". Select "Phone and Tablet". Create an "Empty Activity" with "Activity Name" of "MainActivity", "Layout Name" of "activity_main".

Step 2: Define the Layout in XML - "res\layout\activity_main.xml"

Expand the "app", "res (resource)", "layout" node. Open the "activity_main.xml". Android Studio provides two views for this XML file: "Design (or Graphical)" and "Text (or XML)" - selectable at the bottom of the panel. Select the "Text" mode and study the codes:

<?xml version="1.0" encoding="utf-8"?>
< xmlns:android=""

        android:text="Hello World!"
        app:layout_constraintTop_toTopOf="parent" />


It declares a TextView (text field) that holds a text string "Hello World!". The TextView component has width and height big enough to hold its content ("wrap_content").

Step 3: Defining String References and Values - "res\values\string.xml"

Instead of hardcoding the Hello-World string directly inside the TextView (as in the above XML file), we shall use a string reference (similar to a variable) for better flexibility.

Expand res/values node. Open strings.xml, and ADD the line in red:

    <string name="app_name">Hello Android XML</string>
    <string name="hello">Hello world from XML!</string>

This "string.xml" defines 2 references/values:

  • A string reference "app_name" contains the application's name, that you entered when you created the project.
  • A string reference "hello" contains the value of "Hello world from XML!".

Now, modify the "activity_main.xml" to use the string reference "hello", in the format "@string/hello", as follows:

        android:text="@string/hello" />
Step 4: The Activity - ""

Next, MODIFY the "" (under app/java/com.example.helloandroidxml), as follows:

package ......;
import ......;
public class MainActivity extends ...... {
    protected void onCreate(Bundle savedInstanceState) {
           // Use "activity_main.xml" to layout the screen.

The "MainActivity" sets its content-view to "R.layout.activity_main", which is mapped to the XML layout file "res\layout\activity_main.xml" that we have modified earlier.

Step 5: Run the App

Run the application. You shall see the new string "Hello, from XML!" displayed.


Continue with the "Android Training" @

Read the Android "API Guides" @, and Demos.


  1. Android SDK @
  2. "Android Training" @
  3. Android "API Guides" @
Link to Android's References and Resources