http://blog.youkuaiyun.com/codejoker/article/details/4283702
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
What 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/