En muchas ocasiones, surge la necesidad de ejecutar aplicaciones con arquitectura ARM en un emulador de Android para estudiar su comportamiento o realizar ingeniería inversa. Sin embargo, nos encontramos con la dificultad de que nuestros equipos, basados en arquitectura x86, no pueden ejecutar aplicaciones ARM de manera nativa. Afortunadamente, desde 2020, las herramientas oficiales de Google han abordado este problema, permitiendo la ejecución de binarios ARM en emuladores de Android. Puedes consultar más información al respecto en el siguiente enlace: Actualizaciones del emulador de Android.
En este artículo, te guiaré paso a paso sobre cómo configurar el emulador desde cero en un sistema operativo Linux. Sin embargo, es importante destacar que el proceso es totalmente compatible con cualquier sistema operativo. Finalmente, también aprenderás cómo instalar archivos APK en tu emulador. Sin más preámbulos, ¡empecemos!
Descarga y Preparación de Command Line Tools
Lo primero que necesitarás es descargar las herramientas de línea de comandos de Android. Puedes obtenerlas buscando el archivo commandlinetools-linux-11076708_latest.zip en el siguiente enlace: Descargar herramientas de línea de comandos de Android.
Una vez que hayas finalizado la descarga, crea una carpeta con el nombre que prefieras; por ejemplo, «android». Coloca el archivo ZIP que descargaste dentro de esa carpeta. A continuación, puedes utilizar el siguiente comando para descomprimirlo:
unzip commandlinetools-linux-11076708_latest.zip
Ahora para que los comandos funcionen correctamente Google nos exige una estructura de ficheros como la siguiente: android/cmdline-tools/{version} y lo podemos realizar por consola de la siguiente manera:
mkdir cmdline-tools/11076708
cd cmdline-tools
mv bin lib NOTICE.txt source.properties 11076708
Descarga de la Imagen del Sistema y Plataformas
Para mis propósitos, optaré por la imagen system-images;android-30;google_apis_playstore;x86, ya que incluye todo lo necesario para el análisis que planeo llevar a cabo en el futuro. Esta imagen cuenta con la API 30, la cual permite ejecutar aplicaciones ARM. A continuación, te mostraré cómo buscar las imágenes disponibles y descargarlas:
cd 11076708/bin
# para buscar
./sdkmanager --list | grep "system-images;"
./sdkmanager --list | grep "platforms;"
# para instalar
./sdkmanager "system-images;android-30;google_apis_playstore;x86"
./sdkmanager "platforms;android-30"
./sdkmanager "platform-tools"
Creación y Gestión del Dispositivo Virtual (AVD)
Con esto, solo nos queda crear nuestro dispositivo virtual. A continuación, te proporciono los comandos necesarios para llevar a cabo este proceso:
# creamos el dispositivo
./avdmanager create avd --name "android-v11-api-30" --package "system-images;android-30;google_apis_playstore;x86"
# verificamos si se ha creado
./avdmanager list avd
# si deseas eliminarlo puedes utilizar este comando, yo no lo haré
./avdmanager delete avd --name "android-v11-api-30"
Ejecución del Emulador
Para ejecutar nuestro emulador, solo necesitamos regresar a la carpeta que creamos inicialmente, llamada «android», y ejecutar el siguiente comando:
./emulator/emulator @android-v11-api-30
Instalación y Gestión de APKs con ADB
¡Felicitaciones! Ahora, como se prometió, veamos cómo instalar cualquier archivo APK. Para hacerlo, utilizaremos ADB (Android Debug Bridge) de la siguiente manera:
# listar los dispositivos android (fisicos y virtuales)
./platform-tools/adb devices
# instalar el apk en nuestro dispositivo virtual
./platform-tools/adb install myapp.apk
# un plus, con este comando podemos entrar a la terminal de android
./platform-tools/adb shell
Cierre y Comentarios
Ahora todo depende de ti. Si tienes alguna duda, puedes dejarla directamente en los comentarios. Espero que te diviertas estudiando tanto como yo disfruto escribiendo. Un saludo.