Sacado de aqui y de diversas fuentes que voy poniendo enlaces conforme vayan saliendo. Yo no he inventado ésto, ni lo he descubierto, solo os lo pongo aquí para que no perdais el tiempo como lo he tenido que perder yo.
Si hay alguna parte que os parece que hay algún agujero en la explicación, os atrancais en algun punto o no os funciona, decidmelo en los comentarios e intentaré solucionarlo en la medida de mis posibilidades. Estaré atento a los comentarios, lo prometo ;)
Llego a un punto del proyecto en el que necesitaba debuggear ciertos errores, me salía un mensaje en el eclipse que decía Source Not Found, me costó algo de tiempo solucionar ésto. Si os ha servido de ayuda, por favor, linkadme, poned un comentario, o enviadme cheques a mi casa.

El mismo problema aparece cuando estás debuggeando. Hay que conseguir los fuentes de android para colocarlos en la carpeta donde tengas instalado el sdk de android. Como siempre hay varias maneras de conseguir ésto. Una sencilla y otra un poco más complicada.
La manera sencilla: aprovecharse del trabajo de otros
La manera sencilla es descargar directamente los fuentes preparados que un amable caballero nos ha preparado para que los usemos (nos 22MB cada uno). Aquí os dejo los enlaces:
La manera de los valientes: prepararse su propio zip
Comencemos el camino de los valientes. Necesitamos varias cosicas:
- Python 2.4 lo más normal es que lo tengas instalado, si no es así lo puedes obtener de su página oficial.
- JDK 6. Si no tienes éste, apaga y vámonos.
- Git 1.5.4 or más moderno. Puedes encontrarlo en http://git.or.cz/ o en tu gestor de paquetes (sudo apt-get install git-core).
Ahora hay que instalar Repo. Repo es una herramienta que hace más facil todo el proceso de bajar los fuentes de android. Para más información acerca de Repo visiten la exquisita documentación de google acerca del tema.
- Creamos un directorio en nuestra carpeta personal y lo incluimos en el path:
mkdir ~/bin PATH=~/bin:$PATH
- Descargamos el comando repo y nos aseguramos que está como ejecutable
curl http://android.git.kernel.org/repo > ~/bin/repo chmod a+x ~/bin/repo
Una vez tengamos todos los requisitos creamos una carpeta para meter todos los fuentes de android.
cd mkdir android-src cd android-src
Ahora llamamos al repo que hemos bajado para inicializar el repositorio
- CupCake (Android 1.5)
- Donut (Android 1.6)
- EClair (Android 2.0)
- Froyo (Android 2.2)
- Gingerbread (Android 2.3)
repo init -u git://android.git.kernel.org/platform/manifest.git -b donut
Debe dar una salida como lo siguiente:
Getting repo ... from git://android.git.kernel.org/platform/manifest.git remote: Counting objects: 659, done. remote: Compressing objects: 1remote: 00% (285/285), done. remote: Total 659 (delta 256), reused 617 (delta 237) Receiving objects: 100% (659/659), 180.40 KiB | 100 KiB/s, done. Resolving deltas: 100% (256/256), done. From git://android.git.kernel.org/platform/manifest * [new branch] android-1.5 -> origin/android-1.5 * [new branch] android-1.5r2 -> origin/android-1.5r2 * [new branch] android-1.5r3 -> origin/android-1.5r3 * [new branch] android-1.5r4 -> origin/android-1.5r4 ....................... * [new tag] android-sdk-tools_r7 -> android-sdk-tools_r7 From git://android.git.kernel.org/platform/manifest * [new tag] android-1.0 -> android-1.0 Your Name [angel]:
Nos pide el nombre amablemente, se lo damos. Nos pide una dirección de correo electrónico, yo se la dí, los conspiranoicos que pongan lo que quieran. Cuando terminemos tiene que salir una cosa como ésta.
repo initialized in /home/angel/android-src
Ya tenemos incializado el repositorio, ahora le damos a bajar los fuentes con el comando
repo sync
Se pone a bajar una gran cantidad de archivos, unos 4 gigas me bajó a mi.
Initializing project platform/bionic ... remote: Counting objects: 7582, done. remote: Compressing objects: 100% (2710/2710), done. remote: Total 7582 (delta 5191), reused 7124 (delta 4805) Receiving objects: 100% (7582/7582), 2.62 MiB | 176 KiB/s, done. Resolving deltas: 100% (5191/5191), done. From git://android.git.kernel.org/platform/bionic * [new branch] cdma-import -> korg/cdma-import * [new branch] cupcake -> korg/cupcake * [new branch] cupcake-release -> korg/cupcake-release ........................ * [new tag] android-sdk-tools_r7 -> android-sdk-tools_r7 Checking out files: 100% (7697/7697), done.ut files: 4% (331/7697) Checking out files: 100% (5528/5528), done. Checking out files: 100% (453/453), done.g out files: 5% (27/453) Checking out files: 100% (3804/3804), done.out files: 3% (116/3804) Checking out files: 100% (4187/4187), done.out files: 25% (1061/4187) Checking out files: 100% (403/403), done.g out files: 21% (85/403) Checking out files: 100% (641/641), done.g out files: 23% (148/641) Checking out files: 100% (601/601), done.g out files: 3% (23/601) Checking out files: 100% (7313/7313), done.out files: 18% (1332/7313) Checking out files: 100% (6591/6591), done.out files: 0% (62/6591) Checking out files: 100% (350/350), done.ng out files: 48% (169/350) Checking out files: 100% (282/282), done.ng out files: 10% (31/282) Checking out files: 100% (1670/1670), done. out files: 0% (8/1670) Checking out files: 100% (11/11), done.king out files: 45% (5/11) Syncing work tree: 100% (141/141), done.
Y así termina el proceso y terminamos con un directorio lleno de cosicas como éste.

Ahora hay que preparar los bonitos zips. Un caballero nos propone hacerlo con un script de python. Otro caballero explica como hacerlo a mano. Me cuadra la primera forma.
Creamos un archivo en la carpeta sources llamado prepara.py, lo editamos y pegamos ésto:
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()Ahora nos vamos a la carpeta y ejecutamos:
python prepara.py
Ya tenemos los fuentes, ahora que?
Una vez tenemos los fuentes, creamos un directorio llamado sources dentro de la carpeta donde esta el android.jar que estamos usando, en mi caso es la carpeta android-sdk-linux_86/platforms/android-4/sources y la carpeta tiene que tener una pinta como ésta:

Con esto ya tenemos los fuentes de android integrados en eclipse para poder curiosear y mirarle las tripas a este amiguito que nos regala google. Sin embargo para que el debugger encuentre esos fuentes hay que indicárselo
Hay que cambiar la perspectiva de eclipse a modo debug
Botón derecho en el proyecto y darle a "Edit Source Lookup"
Le damos "Add" y luego "File System Directory"
Le damos "Browse" y localizamos nuestra carpeta de sources creada, en mi caso:
Y Voilá... ya tenemos nuestro debugger funcionando para que sepamos de qué va el error que nos estaba dando el programa