Android Hello World!

It has been a custom in learning any programming languages to start with a Hello World program. Let us create one for Android.

Goal

  1. Create a very simple application
  2. Run it on a real device
  3. Run it on the emulator
  4. Examine its structure

Google Tutorial

  1. We will follow the tutorial at: http://developer.android.com/resources/tutorials/hello-world.html
  2. Start Android Studio
  3. Create an Android Virtual Device (AVD)
  4. Create a New Android Project

Your First Android App

Before you start, be sure you have your development environment set up. You need to:

  • Download the Android SDK.
  • Install the ADT plugin for Eclipse (if you’ll use the Eclipse IDE).
  • Download the latest SDK tools and platforms using the SDK Manager.

If you haven’t already done these tasks, start by downloading the Android SDK and following the install steps. Once you’ve finished the setup, you’re ready to begin this class.

Creating an Android Project

An Android project contains all the files that comprise the source code for your Android app. The Android SDK tools make it easy to start a new Android project with a set of default project directories and files.

Create a Project with Eclipse

  • Click New in the toolbar.
  • In the window that appears, open the Android folder, select Android Application Project, and click Next.
  • Fill in the form that appears:
  1. Application Name is the app name that appears to users. For this project, use “My First App.”
  2. Project Name is the name of your project directory and the name visible in Eclipse.
  3. Package Name is the package namespace for your app (following the same rules as packages in the Java programming language). Your package name must be unique across all packages installed on the Android system. For this reason, it’s generally best if you use a name that begins with the reverse domain name of your organization or publisher entity. For this project, you can use something like “com.example.myfirstapp.” However, you cannot publish your app on Google Play using the “com.example” namespace.
  4. Minimum Required SDK is the lowest version of Android that your app supports, indicated using the API level. To support as many devices as possible, you should set this to the lowest version available that allows your app to provide its core feature set. If any feature of your app is possible only on newer versions of Android and it’s not critical to the app’s core feature set, you can enable the feature only when running on the versions that support it (as discussed in Supporting Different Platform Versions). Leave this set to the default value for this project.
  5. Target SDK indicates the highest version of Android (also using the API level) with which you have tested with your application. As new versions of Android become available, you should test your app on the new version and update this value to match the latest API level in order to take advantage of new platform features.
  6. Compile With is the platform version against which you will compile your app. By default, this is set to the latest version of Android available in your SDK. (It should be Android 4.1 or greater; if you don’t have such a version available, you must install one using the SDK Manager). You can still build your app to support older versions, but setting the build target to the latest version allows you to enable new features and optimize your app for a great user experience on the latest devices.
  7. Theme specifies the Android UI style to apply for your app. You can leave this alone.
  • Click Next.
  • On the next screen to configure the project, leave the default selections and click Next.
  • The next screen can help you create a launcher icon for your app. You can customize an icon in several ways and the tool generates an icon for all screen densities. Before you publish your app, you should be sure your icon meets the specifications defined in the Iconography design guide.
  • Click Next.
  • Now you can select an activity template from which to begin building your app. For this project, select BlankActivity and click Next.
  • Leave all the details for the activity in their default state and click Finish.

Running Your App

Before you run your app, you should be aware of a few directories and files in the Android project:

AndroidManifest.xml

  • The manifest file describes the fundamental characteristics of the app and defines each of its components. You’ll learn about various declarations in this file as you read more training classes. One of the most important elements your manifest should include is the <uses-sdk>element. This declares your app’s compatibility with different Android versions using the android:minSdkVersionand android:targetSdkVersionattributes.

For your first app, it should look like this:

  • <manifest xmlns:android=”http://schemas.android.com/apk/res/android” … ><uses-sdk android:minSdkVersion=”8″ android:targetSdkVersion=”17″ />…</manifest>You should always set the android:targetSdkVersionas high as possible and test your app on the corresponding platform version. For more information, read Supporting Different Platform Versions.
  • src/
    • Directory for your app’s main source files. By default, it includes an Activity class that runs when your app is launched using the app icon.
  • res/
    • Contains several sub-directories for app resources. Here are just a few:
  1. drawable-hdpi/
  • Directory for drawable objects (such as bitmaps) that are designed for high-density (hdpi) screens. Other drawable directories contain assets designed for other screen densities.
  • layout/
  • Directory for files that define your app’s user interface.
  • values/
    • Directory for other various XML files that contain a collection of resources, such as string and color definitions.

When you build and run the default Android app, the default Activityclass starts and loads a layout file that says “Hello World.” The result is nothing exciting, but it’s important that you understand how to run your app before you start developing.

Running on a Real Device

If you have a real Android-powered device, here’s how you can install and run your app:

  1. Plug in your device to your development machine with a USB cable. If you’re developing on Windows, you might need to install the appropriate USB driver for your device. For help installing drivers, see the OEM USB Drivers document.
  2. Enable USB debugging on your device.
  • On most devices running Android 3.2 or older, you can find the option under Settings > Applications > Development.
  • On Android 4.0 and newer, it’s in Settings > Developer options. Note: On Android 4.2 and newer, Developer options is hidden by default. To make it available, go to Settings > About phone and tap Build number seven times. Return to the previous screen to find Developer options.

To run the app from Eclipse:

  1. Open one of your project’s files and clickRun from the toolbar.
  2. In the Run as window that appears, select Android Application and click OK.

Eclipse installs the app on your connected device and starts it.

Running on the Emulator

Whether you’re using Eclipse or the command line, to run your app on the emulator you need to first create an Android Virtual Device (AVD). An AVD is a device configuration for the Android emulator that allows you to model different devices.

  1. To create an AVD:
  2. Launch the Android Virtual Device Manager:
  • In Eclipse, click Android Virtual Device Manager from the toolbar.
  • From the command line, change directories to <sdk>/tools/ and execute:android avd
  • In the Android Virtual Device Manager panel, click New.
  • Fill in the details for the AVD. Give it a name, a platform target, an SD card size, and a skin (HVGA is default).
  • Click Create AVD.
  • Select the new AVD from the Android Virtual Device Manager and clickStart.
  • After the emulator boots up, unlock the emulator screen.

To run the app from Eclipse:

  1. Open one of your project’s files and click Run from the toolbar.
  2. In the Run as window that appears, select Android Application and click OK.
  3. Eclipse installs the app on your AVD and starts it.

Package Content

Android Manifest

<?xml version=”1.0″ encoding=”utf-8″?>

<manifest xmlns:android=”http://schemas.android.com/apk/res/android

package=”com.example.helloandroid”

android:versionCode=”1″

android:versionName=”1.0″>

<application android:icon=”@drawable/icon” android:label=”@string/app_name”>

<activity android:name=”.HelloAndroid”

android:label=”@string/app_name”>

<intent-filter>

<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />

</intent-filter>

</activity>

</application>

</manifest>

Activity

An Android activity is focused on a single thing a user can do.

Most applications have multiple activities

Activities start each other

Hello Android

Revised HelloAndroid.java

Run HelloAndroid

Resources

/res/layout/main.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android

android:orientation=”vertical”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent” >

<TextView

android:layout_width=”fill_parent”

android:layout_height=”wrap_content”

android:text=”@string/hello” />

</LinearLayout>

/res/values/strings.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<resources>

<string name=”hello”>Hello World, HelloAndroid – by resources!</string>

<string name=”app_name”>Hello, Android</string>

</resources>

HelloAndroid.java

/gen/R.java

package com.example.helloandroid;

public final class R {

public static final class attr {

}

public static final class drawable {

public static final int icon=0x7f020000;

}

public static final class id {

public static final int textview=0x7f050000;

}

public static final class layout {

public static final int main=0x7f030000;

}

public static final class string {

public static final int app_name=0x7f040001;

public static final int hello=0x7f040000;

}

}

Run HelloAndroid

Hello Bug!

Introducing a bug

package com.example.helloandroid;

import android.app.Activity;

import android.os.Bundle;

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Object o = null;

o.toString();

setContentView(R.layout.main);

}

}

Run with the bug

Leave a Reply

Your email address will not be published. Required fields are marked *