All students should work through steps 1 to 5 before classes begin.
Go to
http://www.eclipse.org/downloads/ and select/download/install "Eclipse IDE
for Java Developers"
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.
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.
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.)
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.
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.
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
a) Implement Client to
client messaging (mediated by the App Engine) aka "direct messaging"
using C2DM
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.
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.