Prerequisites for Software Tools and Homework Assignments, CS141B

All students should work through steps 1 to 5 before classes begin.

1) Eclipse

Go to http://www.eclipse.org/downloads/ and select/download/install "Eclipse IDE for Java Developers"
 

2) Android SDK

Go to  http://developer.android.com/sdk/index.html and download the SDK for your OS.

Follow the step-wise instructions here: http://developer.android.com/sdk/installing.html

Afterwards:

Open Eclipse, and go to "Window->Preferences" in the main menu.
Click on the "Android" item, and type in the location on your machine of the SDK you just downloaded. (On my machine, for example, it is C:\Program Files\Android\android-sdk-windows)
Click on the "Apply" button and you will see a list of SDK versions that are available.
Click on OK.

Now it is time to install the Eclipse ADT plugin for the Android SDK.

Pay careful attention to the download and installation instructions for the plugin, which depend on the version of Eclipse you have.
 

3) Building a test Android Application

During the course we are going to build Android applications that communicate with services in the Google App Engine, specifically a Twitter-like system called CMS (Caltech Message System). But for now, we will create a simple "Hello World" Android app,

After the ADT Plugin is installed, you should be able to create a new Android project in Eclipse by selecting "File->New->Project" in the Eclipse main menu and then "Android->Android Project" in the dialog box.

A "New Android Project" dialog box will appear. Complete the fields as follows:

Project name: CMSClient
Build Target: select e.g. the Android 2.3 checkbox
Application name: CMSClient
Package name:  edu.caltech.cs.c141.CMSClient
Create Activity: CMSClient
Min SDK Version: 3


Then click "Finish".

Your "CMSClient" app will now appear in the Package Explorer. Select it and then click on the "Run" button. A Dialog box will appear, in which you should select to run Test as an Android Application.

At this point, the Android Emulator will start up. After the emulator boots the Android OS, it will install and run the "Test" app. You will need to unlock the emulator screen by dragging the padlock button to the right ... just like one a real Android phone. This will then reveal the CMSClient app's "Hello World, Test" message.

 

4) Google App Engine

Go to http://code.google.com/appengine/downloads.html and download the SDK for Java.

At the same page, follow the instructions for downloading and installing the Google Plugin for Eclipse. (The latter allows you to develop App Engine applications using the Google Web Toolkit.)

 

5) Version Control and Repository

Eclipse already contains Subversive, which implements SVN. We will use two main repositories for the class:

In addition, each student will use a separate repository for their own code - accessible only by the student and the instructors.

The repositories will be created and maintained in code.google.com, which supports SVN access. Read the Getting Started guide: http://code.google.com/p/support/wiki/GettingStarted.

 

6) First Homework Assignment

Concept: A Twitter-like App Engine service that allows Android clients to upload short (<150 character) text messages to the App Engine, and to download the latest set of messages from all clients. A WebBrowser interface will also be available that has the same functionality as the Android client.

Details: The client UI should show a text box that the user can use to type a message, a button that will upload a (non-empty) message, a scrollable list widget containing the latest messages
from all clients on the App Engine, and a button for refreshing that list.

The App Engine application should accept messages from clients, store them, and return a list of all messages (within some specified time) from all clients to a client, when so requested.

 

7) Second Homework Assignment


a) Implement "Push" of new messages from the App Engine to all connected clients, using C2DM http://code.google.com/android/c2dm/index.html

b) Implement "Push" of new messages from the App Engine to all Web clients, using the App Engine Channel API

 

8) Third Homework Assignment


a) Implement Client to client messaging (mediated by the App Engine) aka "direct messaging" using C2DM

b) Implement support for multimedia messages in the Android client

There will be some discussion in class on multimedia message data sizes, limits thereon, compression, processing on the server using e.g. the App Engine Images API.

Assignment Rules


Each student must complete their own, original, implementation of the Android client. The design and specification of the App Engine code will be done in class, and students allocated pieces
of it to code and install.