Recientemente, hemos publicado una guía sobre cómo agregar dependencias solo para sabores de productos específicos. Después de haber implementado los pasos necesarios, queríamos asegurarnos de que la final .apk en realidad ya no contiene clases no deseadas. En esta publicación, te mostraremos cómo verificar qué clases y recursos están en un apk.
Nota: esta guía está diseñada para descompilar tu propio apk, y no el trabajo duro de otros desarrolladores. Por lo tanto, no incluimos ningún paso para realizar ingeniería inversa o evitar la ofuscación de código.
Preparación: Instalación de las herramientas
Un apk de Android es básicamente un directorio comprimido, que contiene algunos recursos en bruto (imágenes, archivos de diseño, ..) y un archivo classes.dex
. Este archivo contiene todo el código real y nos interesa más. Vamos a descargar todas las herramientas que necesitamos:
- Tendrás que descomprimir el apk. Puede usar la funcionalidad incorporada de su sistema operativo o instalar su archivador (no)favorito, como 7-Zip.
- Para invertir el archivo
classes.dex
a un.jar
, deberá descargar la herramienta dex2jar. - Por último, para que el archivo
.jar
sea legible para el ojo humano, descargue y ejecute JD-Gui.
Recuperar el Código
Bien, ahora es el momento de hacer el trabajo real. Copia tu archivo APK en un directorio en el que quieras trabajar. Descomprima el apk usando la herramienta de su elección y debería obtener un directorio con algunos subdirectorios y algunos archivos.
Siéntase libre de navegar por el AndroidManifest.xml
o el res
directorio. La pieza más interesante es el classes.dex
. Por lo tanto, cambie a la herramienta dex2jar
descargada y abra un nuevo terminal.
Si está en Mac OS, ejecute sh d2j-dex2jar.sh -f -o output.jar your_app_input.apk
. Los usuarios de Windows pueden usar el archivo .bat
para crear el archivo .jar
. Una vez que la herramienta se ejecutó, busque el nuevo archivo .jar
.
Ver el Código descompilado
Por último, inicie la herramienta descargada JD-GUI
y utilícela para abrir el archivo .jar
.
Puede navegar por todos los paquetes y clases que están en su apk. El código es una versión despojada y no contiene ningún comentario o estructura redundante que esté viendo en su IDE. Recuerde, esta es la minimización compilada de su aplicación. Sin embargo, debería darte suficiente información para aprender sobre los conceptos básicos de la aplicación. Por ejemplo, nos ayudó a verificar que ya no hay paquetes relacionados con la biblioteca admob en la aplicación.
Otras opciones
Si solo necesita una descompilación rápida, puede usar la herramienta en línea en www.decompileandroid.com/.
Para propósitos de descompilación más avanzados, puede echar un vistazo a apktool, que ofrece muchos ayudantes adicionales.