Los archivos APK son el resultado de la compilación del código fuente original de la aplicación. Muchos desarrolladores resguardan celosamente su código fuente y piensan que entregando solo el APK a sus clientes mantienen el código original protegido.
Sin embargo, por la naturaleza siempre es posible decompilar los archivos empaquetados en el APK y volver a una versión casi fidedigna del código fuente Java.
Existen muchos decompiladores pero personalmente utilizo Jadx que puede ser descargado en https://github.com/skylot/jadx. Para utilizar Jadx primero hay que compilarlo y el detalle esta explicado en el link anterior.
Vayamos por el método fácil y abramos el ejecutable con entorno gráfico que se generó: <directorio Jadx>/build/jadx-gui-0.7.2-unstable.exe. Al abrirlo, podemos seleccionar el APK del que deseemos obtener el código fuente y lo decompilamos.
El resultado nos muestra una reconstrucción casi fidedigna del código fuente original y nos devela otros archivos como el androidmanifest.xml y todos los recursos de la aplicación como la imagen del logo.
Y así, hemos accedido al código fuente original de la aplicación y podemos revelar la lógica que le da funcionamiento que tan celosamente resguardan los desarrolladores.