Perdí el código de un proyecto y menos mal que tenía la última versión instalada en una tablet y lo pude recuperar, pongo los pasos por si ha alguien le ocurre lo mismo. Es para un proyecto que no utilice ProGuard.
Herramientas
JAD - 'yum install jad' - Jad v1.5.8e.
dex2jar - http://code.google.com/p/dex2jar/ Ver. 0.0.9.9
Paso 1
Descargar la aplicación desde el dispositivo Android: adb pull /data/app/<nombre-del-package>
Paso 2
El anterior paso nos habrá creado un archivo comprimido en formato .zip, ahora creamos una carpeta para hacer las operaciones dentro de ella y copiamos ahí el archivo descargado.
Código:
# mkdir carpeta # cd carpeta/ [carpeta/]# scp <ruta_archivo/nombre_archivo.zip> . [carpeta/]# unzip nombre_archivo.zip
Paso 3
Ahora tenemos la estructura de un proyecto Android pero no está la carpeta /src/ con las clases, está todo en el archivo .dex. Para obtener los archivos .class utilizamos la herramienta dex2jar, la podemos descargar en la misma carpeta:
Código:
Esto genera un archivo .jar nombrado así "classes-dex2jar.jar" para descomprimirlo podemos usar este comando:[carpeta/]# unzip dex2jar-0.0.9.9.zip [carpeta/]# sh dex2jar-0.0.9.9/d2j-dex2jar.sh classes.dex
Código:
unzip -d classes-dex2jar.jar.tmp classes-dex2jar.jar
Paso 4
Ahora ya solo queda decompilar las clases Java, lo haremos con JAD
(En mi caso tenía varias librerías y me daba algunas excepciones, lo que hice fue borrar todas las carpetas que no tuvieran que ver con el código que quería obtener y no dio más excepciones.)
Código:
Y listo, ya tenemos los archivos .java en el directorio 'src'.[carpeta/]# cd classes-dex2jar.jar.tmp/ [carpeta/]# rm -rf android/ javax/ myjava/ org/ [carpeta/]# cd .. [carpeta/]# jad -o -r -sjava -dsrc classes-dex2jar.jar.tmp/**/*.class
Saludos