Link Android Source Code to Eclipse


Long story short: Android source code needs to be placed in a "sources"subdirectory of the Android SDK. 1. Download the code 2. Move code to "sources"subdirectory of the Android SDK.
 
Where to put the Source Code? To find out what the default location for source code is, please refer to Eric Burke's blog (ref. 2). Inside com.android.ide.eclipse.adt.project.internal.AndroidClassspathContainerInitializer .java
IPath android_src = new Path(AdtPlugin.getOsAbsoluteAndroidSources());
Inside com.android.ide.eclipse.adt.project.internal.AdtPlugin .java
/** Returns the absolute android sources path in the sdk */public static String getOsAbsoluteAndroidSources() { return getOsSdkFolder() + getOsRelativeAndroidSources(); }/** Returns the android sources path relative to the sdk folder */public static String getOsRelativeAndroidSources() { return AndroidConstants.FD_ANDROID_SOURCES; }
Inside com.android.ide.eclipse.adt.project.internal.AndroidConstants
public static final String FD_ANDROID_SOURCES = "sources";  
So the code should be placed into: [SDK_PATH ]/sources/ In SDK1 .5, should be: [SDK_PATH ]/platforms/android-1.1/sources [SDK_PATH ]/platforms/android-1.5/sources
Wh at is the code tree structure?
SDK_PATH
 | android.jar
  +--docs/...
  +--samples/...
  +--sources
    +--android
       |      ...accounts, annotation, app, bluetooth, etc...
    +--com/android/etc...
    +--dalvik/...
    +--java/...
    +--javax/...

How to pack the Source Code? You can zip the source code and then unzip it into sources. You can use the Python script written by Mike (ref. 1)
from __future__ import with_statement # for Python < 2.6 import os import re import zipfile # open a zip file DST_FILE = 'sources.zip' if os.path.exists(DST_FILE): print DST_FILE, "already exists"exit(1) zip = zipfile.ZipFile(DST_FILE, 'w', zipfile.ZIP_DEFLATED) # some files are duplicated, copy them only once written = {} # iterate over all Java files for dir, subdirs, files in os.walk('.'): for file in files: if file.endswith('.java'): # search package name path = os.path.join(dir, file) with open(path) as f: for line in f: match = re.match(r'/s*package/s+([a-zA-Z0-9/._]+);', line) if match: # copy source into the zip file using the package as path zippath = match.group(1).replace('.', '/') + '/' + file if zippath not in written: written[zippath] = 1 zip.write(path, zippath) break; zip.close()
References: 1. View Android Source Code in Eclipse http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html 2. Browsing Android Source in Eclipse http://stuffthathappens.com/blog/2008/11/01/browsing-android-source-in-eclipse/