Develop applications

If you are interested in developing applications for Android, visit the Android application developer site.

About Android

For general information, visit android.com.

Known issues

We'll be using this page to keep everyone up to date about problems and fixes during the first few days of the open-source release.

We're watching #android on irc.freenode.net and the mailing lists during US Pacific (GMT-0800) business hours, so we should notice any problems reported there.

Stale directories left over after syncing recent master branch changes

If, after a recent repo sync of the master branch, your build fails with an error like this:

build/core/base_rules.mk:117: *** recovery/amend: MODULE.HOST.EXECUTABLES.amend already defined by bootable/recovery/amend.  Stop.

(or a similar complaint about something under recovery or bootloader/legacy), your client probably has extra copies of a few projects in their old locations.  You should be able to fix the problem by deleting them:

# Before deleting, be sure that these directories don't contain any files that you don't want to lose
rm -rf recovery bootloader


Or, you can delete your existing client and re-run "repo init". Clients created after the initial merge from cupcake to master should not have this problem.

Mysterious build failure when javac isn't present

If you see the build failure:

build/core/find-jdk-tools-jar.sh: line 5: [: too many arguments
build/core/host_java_library.mk:28: *** multiple target patterns.  Stop.

It's probably because javac is not in your path.  The build should fail with a better error message.
(thanks, rwhitby!)

FIXED: webkit

We believe the WebKit "repo sync" issues have been resolved by recreating the WebKit history using a nightly build tarball, rather than the complete SVN history.  This unfortunately requires existing repo clients to delete their WebKit directory in order to recreate them:

rm -rf .repo/projects/external/webkit.git external/webkit
cd .repo/manifests
git pull
cd ..
repo sync

Should resolve your client.  If you have modified the .repo/manifest.xml to comment out the webkit project you will need to undo that edit before running "git pull" above.

We apologize for the inconvenience with this particular one-time transition.  repo was not designed to perform whole-sale rewrites of a project's history, and this one-time conversion was necessary to remove the massive WebKit history and lighten the load on git.webkit.org.

FIXED: run-java-tool

If your build is failing, complaining about a missing "run-java-tool", try setting the ANDROID_JAVA_HOME env var to $JAVA_HOME before making.  e.g.,

$ export ANDROID_JAVA_HOME=$JAVA_HOME

(thanks, mikez5!)

FIXED: zip needed to build

xl0 points out: The "getting sources" page is missing "zip" in the what-to-apt-get section.

FIXED: "remote: aborting due to possible repository corruption on the remote side" during repo sync

We had to rebuild some of the repositories to fix the "checksum mismatch" problem; unfortunately, the most straightforward way to recover from this is to delete your whole tree and start over with repo init.

You can also try:
  • remove the iptables, pcap, tcpdump git repositories under .repo/projects/external, along with their working directories in external/
  • rm -rf .repo/manifest*
  • repo init -u git://android.git.kernel.org/platform/manifest.git
  • repo sync

FIXED: "checksum mismatch" during repo sync

If you had been running into errors like "Cannot import platform/external/iptables: checksum mismatch: 7226fd9f7f7ebada706f9d040b3924
5ee8123faa" during repo sync, we believe we've got a fix now.  The easiest way to recover at this point is to delete your whole tree and start over with repo init.