Juegos Linux: Anbox - Android en una Caja

Aunque normalmente solo suelo hablar de las placas ODROID basadas en ARM, hoy quiero detenerme en el ODROID-H2 con el que se puede hacer algo muy interesante. Puesto que ODROID-H2 es una placa estándar x86_64 (amd64), puedes llevar a cabo exactamente los mismos pasos de configuración en cualquier otro PC o ordenador portátil x86_64 con Linux.

Esta es mi experiencia con un paquete de software llamado Anbox, un "emulador" de Android para Linux, explicaré cómo configurarlo, qué hice con él y qué problemas encontré y cómo los resolví. Tomalo más bien como un recorrido interactivo mas que una guía rápida paso a paso, como he ido descubriendo varios secretos relacionados con la instalación y la configuración.

Anbox

Anbox es una nueva forma de emular Android, donde puede ejecutar Android directamente en tu sistema operativo Linux en lugar de iniciar Android directamente en el sistema o ejecutarlo en una VM.

Ya existen otras herramientas que pueden hacer lo mismo, aunque por lo general ocupan bastante, varios GB de almacenamiento solo para iniciar el emulador, por ejemplo, Android Development Studio.

Anbox utiliza LXC, llamados Contenedores Linux, una técnica similar a Docker, donde puede ejecutar un sistema operativo en un entorno encapsulado, pero sigues compartiendo el Kernel y los recursos del sistema. Esto también significa que si el ODROID-H2 tiene 16 GB de RAM, técnicamente tu Android también funciona con 16 GB de RAM.

Para hacer esto, hay una característica disponible tanto en el Kernel de Linux como en Android que es muy necesaria, se llama Ashmen y Binder, estos son dos módulos disponibles para el Kernel.

Instalación de Módulos kernel

Raramente un Kernel viene precompilado con esta funcionalidad, pero afortunadamente hay módulos DKMS disponibles para esto.

Existe una guía muy buena sobre cómo empezar con todo esto: https://docs.Anbox.io/userguide/install_kernel_modules.html

En resumen, estas son las dos cosas que puedes hacer: 1. Instalar módulos dkms desde PPA:

$ sudo add-apt-repository ppa:morphis/Anbox-support
$ sudo apt update
$ sudo apt install linux-headers-generic Anbox-modules-dkms
2. Instalar módulos dkms desde GitHub:

https://github.com/Anbox/Anbox-modules

Te sugiero usar el PPA o crear tu propio archivo deb, ya que instalará automáticamente todos los archivos necesarios y los colocará en la ubicación correcta.

Los módulos Kernel crearán /dev/binder y /dev/ashmem como nuevos dispositivos necesarios para que Android acceda a los recursos de nuestro sistema host. No te preocupes si no los ves de inmediato. O bien tiene que cargar los módulos de Kernel manualmente o bien tienes que esperar hasta que instalemos Anbox.

Instalar Anbox

La distribución principal de Anbox está a través de paquetes sanp, que están disponible en muchos sistemas Ubuntu y en otras distribuciones de Linux. La segunda opción es instalar paquetes deb directamente desde el repositorio de tu sistema operativo.

A partir de Debian Stretch (backports) o Ubuntu 19.04, Abox existe como paquete oficial en su repositorio. Lo probé en mi ODROID-H2 en Debian Buster, aunque también lo hice funcionar en mi ordenador portátil que utiliza Ubuntu 18.04. Como he dicho, solo está disponible oficialmente en Ubuntu 19.04, pero si sabes cómo, también puedes compilarlo en Ubuntu 18.04 (que es lo que yo hice).

Puesto que ODROID-H2 viene con Ubuntu 19.04, no deberías tener problemas para instalarlo.

De cualquier modo, debes asegurarte de tener suficiente espacio en /var/. Si tienes tu sistema particionado y no utilizas una sola partición para todo el sistema operativo, asegúrete de tener suficiente espacio en /var/ para todas las aplicaciones que quieres instalar. Éstas pueden necesitar fácilmente hasta 20 GB o más dependiendo de las que quieras probar.

¿Por qué deberías optar por los paquetes deb sobre los paquetes snap?

La razón por la que debes usar los paquetes deb para Anbox es simple, al igual que con los módulos Kernel, si instalas Anbox como un paquete deb, éste ya vendrá con muchas cosas ya instaladas y preparadas para usarse. Tiene un servicio llamado Anbox-container-manager que es gestionado por systemd y se encarga de todas las pequeñas tareas de segundo plano. Iniciará automáticamente los módulos del kernel para /dev/binder y /dev/ashmem, así como un adaptador de red virtual para que Android pueda tener acceso a Internet.

Es muy cómodo y permite una fácil gestión si deseas probar cosas nuevas con posterioridad.

Los paquetes snap, por otro lado, tienen algunos problemas importantes.

La mayor ventaja de los paquetes snap es que viene con un archivo Android.img, mientras que, si instalas el archivo deb, tendrás que descargar el archivo Android.img por tu cuenta (lo explicaré más adelante).

Aunque los paquetes snap por lo general funcionan, desaconsejo usarlos ya que son muy inflexibles y pueden causar problemas importantes si quieres añadir Google Apps, por ejemplo, o si deseas probar parches.

Primero empecé con paquetes snap y funcionó "bien", pero cuando intenté instalar Google Apps (Gapps) a través de un script, el sistema no lograba iniciarse y me llevó un día o dos descubrir que el problema estaba relacionado con paquetes sanp y no con la versión de Anbox, o con las Gapps que estaba usando.

Los paquetes Snap son contenedores bloqueados, no puedes modificarlos de ningún modo, significa que no puedes cambiar la configuración, actualizar aplicaciones, intercambiar la imagen de Android, etc. a menos que instales un nuevo paquete Snap de esa aplicación.

Para alterar el paquete snap y agregar Gapps, por ejemplo, necesitas trabajar con "overlay-fs" para el paquete sanp, donde se combinará una carpeta que has creado con los datos proporcionados por el paquete sanp. En mi caso, en el momento en el que activé overlay-fs, incluso sin ningún cambio, la mayoría de mis aplicaciones ya no funcionaron.

Con el paquete deb no tiene estas restricciones y puedes cambiar el archivo Android.img directamente, así como manipular rootfs o la carpeta de datos de la imagen de Android si fuera necesario. Esto te permite colocar archivos directamente en tu sistema de archivos virtual o en el propio archivo img, lo cual resulta imposible con los paquetes snap.

Mi consejo: aunque son el eje central de la distribución Anbox, ¡mantente alejado de los paquetes snap!

Primer Arranque

¿Qué necesitas para poner en marcha tu primera experiencia Android con Anbox?

Bueno, con los paquetes snap, podrías iniciarlo sobre la marcha, pero como hemos dicho que no vamos a usar paquetes snap, necesitamos una imagen Android para trabajar.

Algunas cuestiones técnicas

Estás ejecutando Anbox en un contenedor LXC, esto significa que no está "emulado", tampoco es realmente una "virtualización", aunque está muy cerca. Utiliza el mismo hardware y Kernel que tienes en tu sistema operativo principal. Lo que significa que tu sistema operativo Android debe adecuarse a la configuración de tu PC.

Conseguir una imagen de Android

Necesitamos una imagen de Android x86_64 (amd64). Esto puede sonar complicado, pero no te preocupes, hay otros ya han hecho todo el trabajo y solo necesitas descargar una imagen desde aquí: https://build.Anbox.io/Android-images/ como puedes ver, hay varias imágenes disponibles. Puedes elegir cualquier imagen que tenga "amd64" en su nombre. Utilizaremos la última por ahora: https://build.Anbox.io/Android-images/2018/07/19/Android_amd64.img.

Todas estas imágenes incluye Android 7.1.1, ya que éste es el utilizado por la mayoría de los emuladores.

Descárgate la imagen anterior y cámbiale el nombre a Android.img, copia el archivo en el sistema donde instalaste Anbox (a través de deb o desde tu repositorio) en /var/lib/Anbox/

$ sudo wget https://build.Anbox.io/Android-images/2018/07/19/Android_amd64.img -O /var/lib/Anbox/Android.img
Esto es todo para echar a andar

¿Recuerdas el servicio Anbox-container-manager de antes?

En el inicio comprueba si hay un archivo Android.img en esa carpeta y, de ser así, activará automáticamente los módulos del kernel y el puente de red necesario para el acceso a Internet en Anbox.

Como ahora tenemos un Android.img ubicado en /var/lib/Anbox/, es hora de iniciar el servicio:

$ sudo service Anbox-container-manager restart
Ten en cuenta que utilicé “restar”, ya que es posible que tengas que usar el comando más tarde nuevamente, así que ya lo tiene en tu historial de comandos.

Si revisas tu menú de inicio y buscas Anbox (debajo de accesorios), debería ver una pantalla de inicio muy minimalista con solo unas cuantas aplicaciones.

Calculator, Calendar, Clock, Contacts, Email, Files, Gallery, Music, Settings y WebViewer son probablemente las únicas aplicaciones que podras ver. Y aunque todas funcionan bien, a excepción de "Settings", probablemente nunca necesitarás ninguna de estas aplicaciones. Aún así, si ves esta pantalla, significa que Anbox funciona.

Figure 01 - Anbox Running with Android
Figura 01 - Anbox ejecutándose con Android

Figure 02 - Anbox’s Application Manager
Figura 02 - Administrador de aplicaciones de Anbox

Iniciar Anbox por primera vez (puede tomar algunos segundos) Menú de la aplicación Anbox con aplicaciones por defecto.

Instalar aplicaciones - parte 1

Tener "Android" funcionado esta bien y es elegante, pero si sólo puedes ejecutar el calendario o el reloj, éste se volverá aburrido muy rápido. Así que, lo que necesitamos es una forma de instalar aplicaciones. Hay diferentes formas de hacer esto.

Comencemos con la más fácil, que requiere que ya tengan archivos .apk disponibles.

Primero necesitamos instalar Android-toolbox que está disponible para tu sistema operativo:

$ sudo apt install Android-tools-adb
Con esto, puedes instalar aplicaciones fácilmente escribiendo:
$ adb install
Android toolbox está diseñada para TODOS los sistemas Android, no específicamente para Anbox.

Éste busca cualquier dispositivo conectado permitiéndote interactuar con él.

Si tienes Anbox instalado y funcionando, puede usar adb para instalar la aplicación en el sistema.

Ten en cuenta que si tiene un dispositivo Android, como un smartphone o una tablet, conectado a tu PC/ordenador/ODROID H2 con Linux, puedes terminar instalando aplicaciones en este dispositivo, así que asegúrate de usarlo solo cuando Anbox se esté ejecutando (a menos que sepas lo que haces).

¿Te estarás preguntando dónde puedes conseguir archivos apk para instalar? Existen varios sitios donde puedes descargar archivos apk, a menudo los programas o juegos tienen enlaces de descarga en su sitio web y también hay sitios como APKMirror (https://www.apkmirror.com/) que te permiten descargar archivos apk directamente para tu sistema.

Nota Importante

¿Recuerdas que descargaste la imagen de Android_amd64? Esto significa que tienes una imagen Android basada en x86_64 y solo puede ejecutar aplicaciones de Android x86 o x86_64, o aplicaciones que no requieren un formato binario específico. Fíjate que en APKMirror, puede ver qué paquetes de arquitectura tienen antes de descargarlos. Asegúrate de descargar los correspondientes a x86.

Figure 3 - Installing and running FireFox Nightly (x86) on Anbox via adb install from APKMirror
Figura 3: Instalando y ejecutando FireFox Nightly (x86) en Anbox mediante  adb install desde APKMirror

Con esto, ya puedes instalar las primeras aplicaciones y probarlas con Anbox. Para serte sincero, mi objetivo cuando empecé a usar Anbox era ejecutar Ragnarok M - Eternal Love. Así que, mi primera prueba real consistia en descargar el archivo APK de su sitio web e instalarlo. Así que descargué el apk de su sitio web, y tras completarse los 1.3 GB lo instalé a través de adb:

$ adb install 155603_20190.1563284609.apk
Gracias a la potencia del SSD, unos segundos después de instalar el juego, pinche en el icono y el juego se inició, no solo quedé impresionado para ser la primera aplicación que probé, sino que de hecho me gusto bastante (más aún)

Figure 4 - Ragnarok M starting on Anbox and installing updates
Figura 4: Ragnarok M iniciado desde Anbox e instalando actualizaciones

El juego se inició y, como es habitual en este tipo de juegos online, empezó a descargar e instalar las actualizaciones, las cuales se completaron correctamente, así que me senté y esperé, contento de ver que el juego era mucho más rápido que en mi tablet (lo cual no me sorprendió demasiado). Tras las actualizaciones, fui redirigido a la pantalla de inicio de sesión y aquí es donde empezaron los problemas.

Figure 5 - Only thing left to do is sign in and start playing right?
Figura 5 - Lo único que queda por hacer es iniciar sesión y empezar a jugar ¿verdad?

Figure 6 - Google Play services? Ah yes, I knew there was something different
Figura 6 - ¿Servicios de Google Play? Ah sí, sabía que había algo diferente

Aquí es donde empezó mi terrible experiencia y donde desperdicié un día entero para descubrir que el problema estaba en los paquetes snap. Pero antes de entrar en detalles y de cómo resolver el problema, unas cuantas observaciones generales sobre las cuestiones que vamos a tratar.

Instalar aplicaciones parte 2 - Gapps y otros paquetes

Si has visitado APKMirror, probablemente abras observado que la mayoría de las aplicaciones y juegos solo están disponibles para arm o arm64 (armeabi-v7a, armeabi, arm64-v8a), muy pocos hay disponibles para x86.

Esto es cierto, ya que la mayoría de los juegos y aplicaciones están escritos para smartphones y tablet y esos dispositivos normalmente tienen un procesador ARM. Por lo tanto, la selección de aplicaciones que se ejecutan directamente en Android x86 es muy limitada.

Aparte de esto, tendrás dificultades para encontrar tus juegos favoritos en APKMirror, de hecho, yo tuve dificultades para encontrar aplicaciones que funcionasen adecuadamente.

La mayoría de los juegos solo estarán disponibles una vez que hayas instalado Gapps y Play Store de Google, pero incluso con x86 la selección continúa siendo muy pequeña. Muchas aplicaciones dependen de los servicios de Google Play, incluso si cuentas con el archivo apk para la instalación, los programas requieren servicios de Google Play para funcionar, por lo tanto, instalar Gapps es muy importante.

Instalar Gapps y Houdini

Existen varias formas de instalar Gapps para Anbox, pero no son muy fáciles que digamos y, por eso, es mejor confiar en otras personas que ya han hecho todo el trabajo por nosotros y han escrito un script para ello. Actualmente hay dos que son muy importantes para nosotros:

https://github.com/geeks-r-us/Anbox-playstore-installer/raw/master/install-playstore.sh que es un script para instalar gapps y houdin, si has decidió usar el paquete snap por alguna razón. Creará un Overlay FS y extraerá los archivos allí. Esto quizás funciones en tu caso, en el mío dejó Anbox inutilizable tras la ejecución.

El otro es:

https://github.com/Arucard1983/Anbox-playstore-installer/raw/debian/install-playstore.sh Este último está destinado específicamente a la instalación deb y funciona directamente con Android.img en lugar de Overlay FS. Así que vamos a intentarlo:

$ wget https://github.com/Arucard1983/Anbox-playstore-installer/raw/debian/install-playstore.sh
$ chmod +x install-playstore.sh
$ sudo apt install lzip curl
$ sudo ./install-playstore.sh
Para los que están interesados en lo que hacemos hacemos aquí: Se descargará open-gapps de sourceforge, así como houdini_y y houdini_z del proyecto Android-x86. Se extraerán y se agregarán a la imagen. Houdini son librerias que te permiten ejecutar binarios de Android arm y arm64 en un entorno x86. El script alterará Android.img para que ya no solo actué como una imagen x86 y x86_64 sino también como una imagen arm y arm64. Lo que significa que después de esto puede instalar y ejecutar el resto de aplicaciones que antes no estaban disponibles para arm y arm64 en el sistema, añadirá algo de optimización y configuración para que todo funcione correctamente.

Luego, crea un nuevo archivo Android.img y reemplaza el original con el nuevo que tiene gapps y soporte para arm y arm64.

Todo el proceso sólo requiere unos minutos para descargar, extraer y volver a empaquetar la imagen.

El comando sudo solo es necesario para ubicar el nuevo archivo de imagen en /var/lib/Anbox, donde solo root tiene acceso; si lo ejecutas sin sudo, seguirá creando el archivo Android.img y luego podrás copiarlo manualmente.

$ sudo install-playstore.sh --clean
Se eliminará el directorio de trabajo de Anbox que se creó durante el proceso, pero también puede eliminar esa ruta manualmente, ya que no es necesaria.

Configurar los servicios de Google Play

Después de reiniciar si iniciamos Anbox, tenemos un icono adicional para Google Play Store que nos permitirá instalar aplicaciones y juegos directamente desde la tienda, pero antes de que podamos hacer esto, necesitamos configurar los permisos para los Servicios de Google Play y la Tienda.

Figure 7 - Starting Anbox after installing Gapps
Figura 7: Iniciando Anbox después de instalar Gapps

Figure 8 - Setup permissions for Google Play Services and Google Play Store
Figura 8: Configurando permisos para Google Play Service y Google Play Store

Para esto, abre tu Configuración, dirígete a Aplicaciones, busca y haz clic en Google Play Services

Debajo de los botones verá Storage, y luego verás Permissions, que están vacíos o incluye una lista muy corta. Haz clic en los permisos y en Google Play Services, activa todos los permisos de la lista (consulta la figura 8). Haz lo mismo con Google Play Store.

Figure 9 - Google Play Store on Anbox – we just need to login
Figura 9: Google Play Store en Anbox: solo necesitamos iniciar sesión

Figure 10 - After the login we have the Play Store to install Games
Figura 10: Tras iniciar sesión, dispondremos de Play Store para instalar juegos

Si lo has hecho todo bien, deberías poder iniciar Google Play Store y ver aparecer un botón SIGN IN. Una vez que hayas iniciado sesión con tu cuenta de Google, podrá ver Play Store y empezar a instalar software. Y simplemente para demostrar que funciona:

Figure 11 - Downloading and installing a game in Anbox
Figura 11 – Descargando e instalando un juego en Anbox

Figure 12 - Guess what? We can even PLAY games on Anbox
Figura 12 - ¿Adivina qué? Incluso podemos JUGAR a juegos en Anbox

Llegar a escuchar y ser capaz de hacer lo mismo debería ser bastante fácil y no debería implicar demasiados conocimientos. Me llevó un tiempo resolver este tema, pero supongo que mi información debería acelerar el proceso si quieres probarlo tú mismo.

Aunque llegado a este punto podía usar y explorar Anbox, mi peregrinación aún no había terminado, ya que mi objetivo original era ejecutar Ragnarok M en el PC en lugar de hacerlo en mi tablet. Lo cual aún no había logrado.

Soporte Táctil

Cuando inicié Ragnarok por primera vez después de añadir Google Play Services y finalmente pude iniciar sesión en el juego, esperaba que pudiera jugar, pero tuve problemas para iniciar sesión con mi personaje. De hecho, tuve problemas para hacer cualquier cosa. Si hacia clic en algo, no hacía nada. Tras investigar un poco, quedó patente donde estaba el problema.

Como he dicho antes, la mayoría de los juegos se desarrollan para teléfonos y tabletas. Estos dispositivos normalmente no tienen un ratón conectado y, por lo tanto, muchos juegos se escriben para admitir únicamente la entrada táctil. La versión de Anbox que viene con Ubuntu 19.04 y Debian Stretch/Buster admite entrada de ratón y táctil. Esto significa que, si tiene un ratón conectado, reaccionará como un ratón, si tienes una pantalla con entrada táctil, usará el sistema táctil. Como no todo el mundo tenemos una pantalla táctil con ratón, lo más probable es que sea este último la entrada por defecto en su caso, como lo es en el mío.

Como el juego al que quería jugar no tenía soporte para ratón, investigué un poco y terminé con un parche que permite que la entrada del ratón actúase a modo de táctil. Llegados a este punto tenemos dos opciones, te las voy a explicar:

Parchear el paquete Debian

Una forma es crear nuestro propio paquete deb basado en uno de los SO con un parche que nos permitirá usar el ratón como entrada táctil.

Ten en cuenta que esta opción requiere que vuelvas a compilar el software y que instales las cabeceras de desarrollo y el compilador en tu sistema. Si no quieres hacer esto, puedes recurrir a mis versiones ya parcheadas de estos paquetes: https://oph.mdrjr.net/meveric/other/Anbox/ donde puedes descargar el paquete para tu sistema operativo.

También he incluido un paquete para Ubuntu 18.04 en caso de que esté utilizando esta versión LTS, como lo hago yo en mi ordenador portátil.

Si te decantas por esta opción, asegúrate de haber activado las listas de origen para el repositorio de tu sistema operativo.

Dirígete a Software and Updates, dentro de tu Control Center, por ejemplo, y asegúrate de que la casilla " Source Code" esta marcada.

Para aquellos que desean compilar el Software ellos mismos, aquí teneis los pasos que debeis seguir:

$ mkdir -p ~/sources
$ cd ~/sources
$ apt source Anbox
$ cd Anbox-0.0~git20190124
$ sudo apt build-dep Anbox
$ wget https://oph.mdrjr.net/meveric/other/patches/Anbox/touch-support.diff
$ patch -p1 < touch-support.diff
$ dpkg-buildpackage -b
$ sudo dpkg -i ../Anbox_0.0~git20190124-1_amd64deb
Ten en cuenta que la versión real (Anbox_0.0 ~ git20190124) puede diferir dependiendo del sistema operativo que utilices, por lo tanto, ajusta esta parte en consecuencia.

Esto compilará e instalará Anbox con soporte táctil. Una vez que reinicies Anbox y uses el nuevo binario para iniciar los juegos, el soporte táctil funcionará.

Compilar la última versión de Anbox desde Github

En lugar de parchear una versión anterior de Anbox, también puede optar por compilar la última versión disponible en Github de Anbox. No necesitarás el parche para soporte táctil puesto que éste ya está incluido en la última versión.

$ mkdir -p ~/sources
$ cd ~/sources
$ sudo apt install git libdw-dev libdwarf-dev binutils-dev libboost-serialization-dev libboost-thread-dev libboost-test-dev
$ git clone https://github.com/Anbox/Anbox
$ cd Anbox
$ sudo apt build-dep Anbox
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j4
$ sudo make install
Esto generará e instalará la última versión de Anbox. Dado que esta versión se instalará en /usr/local/bin y no en /usr/bin, puedes instalar el paquete deb desde tu sistema operativo y la versión desde github a la vez y puede alternar entre ellos.

Es por ello que instalamos la versión deb de Anbox, ya que nos permite cambiar fácilmente de una versión a otra simplemente editando un archivo, que es /etc/systemd/system/multi-user.target.wants/Anbox-container-manager.service (deberías recordar esto de antes)

Cuando edites el archivo con sudo y tu editor de texto favorito, encontrarás la línea:

ExecStart=/usr/bin/Anbox container-manager --daemon --privileged –data-path=/var/lib/Anbox
Simplemente necesitas cambiarla por:
ExecStart=/usr/local/bin/Anbox container-manager --daemon --privileged –data-path=/var/lib/Anbox
Entonces se inicia el binario que acaba de compilar. Luego simplemente reinicia el sistema.

Después de ello, se usará tu nueva versión de Anbox compilada.

Si en algún momento más adelante (un par de semanas despues) desea volver a compilar la última versión de Anbox, simplemente haz lo siguiente:

$ cd ~/sources/Anbox/build
$ git pull
$ make -j4
$ sudo make install
Eso es todo y siempre tendrás la última versión. ¿Eso significa que funciona ahora? ¡Con esto finalmente logré jugar Ragnarok M en mi ordenador portátil (o ODROID-H2) y déjame decirte que funciona estupendamente! Es sorprendentemente estable, lo cual no me esperaba.

Figure 13 - Playing Ragnarok M – Eternal Love on my Laptop this is so much easier than the tablet and doesn’t need charging all the time!
Figura 13 - Jugando a Ragnarok M - Eternal Love en mi ordenador portátil, ¡Es mucho más fácil que en la tablet y no necesita estar cargando todo el tiempo!

Con esto, ahora estás preparado para probar Anbox y jugar a juegos de Android directamente en Linux, y sí, esto es lo mejor que puedo ofrecerte de Anbox, no tengo nada más que aportar, por ahora. Pero no todo es tan bonito y brilla por ausencia.

Seamos honestos, aunque impresiona, no significa que ya puedes deshacerte de tu tablet Android. ¿Recuerdas lo que dije antes sobre el hecho de que tuve mucha suerte con el primer juego que probé (Ragnarok M), el cual se ejecutaba sin problemas?

Lamentablemente es algo que debes tener en cuenta. El número de aplicaciones y juegos que SI funcionan es MUY limitado. Si consigues que uno de cada diez funcione, vas por el buen camino. Tengo alrededor de 75 juegos de Android en mi humilde biblioteca a modo de archivos .apk descargables. De los cuales menos de 10 funcionan. Esto no está relacionado con el tema de los gráficos, sino que los juegos ni siquiera se inician. Los que tiene un problema con los "gráficos" están en una categoría aparte.

Cuando pruebas aplicaciones y no se abre una nueva ventana, el juego simplemente no funcionará, puede dejar de intentarlo.

A menudo, los juegos se cuelgan en este punto, incluso aunque escuches sonidos, música o lo que sea, no llegan a funcionar. A veces es mejor reiniciar el servicio Anbox-container-manager en lugar de esperar a que la aplicación agote el tiempo para poder hacer clic en otra aplicación.

Si no me equivoco, esto está relacionado principalmente con la forma en la que funciona Anbox. Utiliza llamadas EGL para crear una ventana en la cual se ejecuta la aplicación. Para esto, la aplicación debe ser compatible con el "Modo de ventana", imagínate algo similar a la aplicación de YouTube, cuando la inicias y luego vuelves atrás, aparece una pequeña ventana en tu dispositivo móvil que se puede arrastrar. Si una aplicación admite algo similar a esto, probablemente funcione. Si no es así, entonces estás perdiendo el tiempo.

Básicamente, esto significa que la mayoría de las aplicaciones "antiguas" no funcionarán ya que el modo de ventana era desconocido en su día. De hecho, cuanto más nueva sea una aplicación, es más probable que funcione. Algunas aplicaciones están escritas para ser compatibles con emuladores, como mi Ragnarok M que quería que funcionara, con este sporte del modo ventana de una forma u otra. De hecho, encontré muchos juegos MMORPG online y otros que funcionan bastante bien.

También está limitado a las aplicaciones OpenGL ES 2.0. De forma que, si una aplicación requiere OpenGL ES 3.x, no funcionará.

También existe un problema con el sonido, todos los sonidos tienen un retardo de aproximadamente 1 segundo. De manera que ves cosas en la pantalla, pero las escucha un segundo después, lo cual puede llegar a ser un poco molesto. He visto un parche que reduce este retraso del audio significativamente, pero cuando los probé, los juegos dejaron de funcionar por completo al activarse el sonido.

Pero supongo esto se solucionará en algún momento.

¿Qué PUEDES ejecutar?

Por terrible que parezca, aun puedes ejecutar algunos juegos realmente buenos en Anbox.

Ya has visto Ragnarok M, que se ve bastante bien y tiene gráficos de alta resolución. Es un MMORPG realmente agradable y yo, como fanático de los MMORPG originales de Ragnarok Online, he disfrutado de este juego durante meses. También he mostrado fotos de Pixel Starships, otro juego con el que estoy disfrutando desde hace algún tiempo, aunque es más informal.

Anodyne es un buscador de mazmorras de la vieja escuela donde tu arma principal resulta ser una escoba.

Figure 14 - With a broomstick against monsters… Anodyne
Figura 14 - Con una escoba atacas a los monstruos ... Anodyne

Figure 15 - Another Lost Phone: Laura's Story
Figura 15 - Another Lost Phone: Laura's Story

Es bastante divertido y se puede controlar perfectamente con el teclado, lo que significa que no necesitas navegar con el raton por la pantalla. Realmente es bastante entretenido a pesar de sus gráficos minimalistas. Another Lost Phone: Laura's Story es un juego en el que encuentras el teléfono de alguien llamado Laura y parece que algo malo le ha sucedido. Intentas averiguar más sobre ella revisando su teléfono, revisando fotos, mensajes, etc. A medida que avanzas en el juego, tienes que adivinar las contraseñas combinando pistas, averiguando quiénes son las personas que aparecen en las imágenes y cómo se relacionan con Laura. Puede que no impresione demasiado, pero realmente se está ejecutando sobre Unity Engine. Es interesante ir resolviendo los pequeños acertijos y descubrir quiénes son las diferentes personas que se ponen en contacto contigo y quién miente y sobre qué.

Figure 16 - Incredipede, colorful organic graphics for a nice puzzler
Figura 16 - Incredipede, coloridos gráficos orgánicos para un buen rompecabezas

Figure 17 - Space Arena, build your own ships and fight against others
Figura 17: Space Arena, construye tus propias naves y lucha contra otras

Incredipede es un buen juego de rompecabezas, tienes dos botones que hacen que tu Quozzle mueva sus músculos y piernas y necesite recolectar elementos y empujarlos hacia la luz que le sigue. Puede ser bastante difícil ya que su movimiento es un tanto extraño. En los modos más difíciles, puedes construir tu propio Quozzle para lograr tu objetivo.

Space Arena es un juego en el que construyes tu propia nave espacial, bueno, más bien las partes internas.

Compras un plan de distribución y lo llena con armas, reactores, escudos, sistema de propulsión, etc. luego lo envía contra un oponente. Si ganas, consigues experiencia y dinero que te permite comprar más cosas. No es muy original, pero puede resultar divertido durante un rato.

Figure 18 - If it doesn’t fit, fix it! Splitter Critter
Figura 18: si no encaja, ¡arréglalo! Splitter Critter

En Splitter Critter puedes cortar el mundo en rodajas y luego mover las piezas para volver a unirlas como las necesites. Para esto, puede abrir nuevos caminos o no mover a tus pequeños sujetos a la cornisa, sino la cornisa hacía los sujetos.

Este juego es un juego de rompecabezas muy divertido, agradable y colorido. Necesitas encontrar el camino hacia tu nave espacial, para llegar al siguiente nivel, pero no solo necesitas crear un camino hacia tu nave, a menudo también tienes que evitar criaturas peligrosas o usar las habilidades de tus pequeños alienígenas a tu favor (saltando, por ejemplo). Es un juego muy divertido y lo recomiendo encarecidamente.

Figure 19 - Galaxy of Pen and Paper, a new level of RPG
Figura 19 - Galaxy of Pen and Paper, un nuevo nivel de RPG

Figure 20 - The Junkyard is where everything starts
Figura 20 - El desguace es el lugar donde todo comienza

Figure 21 - Increase the number of enemies while you can in order to get a bonus!
Figura 21 - ¡Aumenta el número de enemigos mientras puedas para conseguir una bonificación!

Galaxy of Pen and Paper es en realidad un nuevo tipo de juego de rol al mismo tiempo que juegas a un juego de rol en este juego de rol. ¿Confuso? En el juego empiezas creando un director de juego (G.M.) y algunos personajes, y éste contará la historia en la que juegas como cualquier juego de rol.

Este juego es gracioso y muy divertido de jugar. Ya lo había jugado en mi smartphone durante mis últimas vacaciones y es muy divertido. Puedes crear tus propias misiones seleccionando los monstruos con los que quieres luchar y con cuántos. Recibes tareas de los NPC y puedes viajar entre estrellas. Se burla de Star Wars, Star Trek y todo lo relacionado con los RPG y el espacio. Tuve algunos problemas gráficos con Anbox, pero nada serio, solo algunos fallos aquí y allá, pero el juego en general es muy divertido. También hay un juego llamado Knights of Pen and Paper que es más o menos lo mismo en un entorno de fantasía, no lo he probado, pero imagino que también funcionará.

Otro juego en 2D es Space Life, donde cazas monstruos, recoges objetos, compras armas y barcos. Te diviertes un rato, pero no impresiona demasiado.

Te estarás preguntando, ¿esto significa que únicamente estámos limitado a juegos 2D como los anteriores?

¡Por supuesto que no! Ragnarok M ya es un juego en 3D, aunque es posible que no lo veas a primera vista, pero todos los personajes y la mayor parte del mundo están en 3D, puedes mover la cámara alrededor de tu personaje o volar sobre el mapa con una ballena voladora o algo así. Créeme, es autentico 3D.

Pero hay más: Raid: Shadow Legends es un impresionante juego 3D que funciona bien en Anbox. Tiene increíbles gráficos y cientos de personajes jugables, armas y actualizaciones, hay mucho por explorar.

Figure 22 - Raid: Shadow Legends has impressive graphics for a mobile game with lots of effects and detailed characters
Figura 22: Raid: Shadow Legends tiene gráficos muy buenos para ser un juego móvil con muchos efectos y personajes muy detallados.

Tiene una bonita historia de fondo que ayuda con los combates del juego. El juego también cuenta con muchos anuncios comerciales para compras en la aplicación, asi que probablemente no será muy apropiado para personas que se ven fácilmente influenciadas por este tipo de compras dentro de las aplicaciones. Existe otro juego que no he tenido tiempo de explorar con detalle, se llama Tales of the Wind y es un MMORPG de la serie Tales.

Este MMORPG de estilo anime es muy bueno, sólo con la pantalla de inicio ya quedas impresionado donde se observan personajes grandes y detallados. Lo mismo ocurre con la pantalla de creación de personajes. Ambas muestran los tipos de gráficos que te puedes esperar.

En el juego hay bastantes escenas de video dentro de "Gráficos del juego" que se ven bastante bien y son divertidas. Solo lo he jugado durante un par de minutos, ya que me temo que me enganchare demasiado llegado el momento.

Anbox parece funcionar bastante bien con grandes títulos o MMORPG, ya que probablemente están desarrollados teniendo en mente los emuladores para permitir usar el ratón y el teclado. Tales of Wind también te permite caminar con ASWD, que muestra como planearon de antemano este juego.

Figure 23 - Tales of Wind a beautiful anime style MMORGP
Figura 23 - Tales of Wind, un manifico MMORPG con estilo anime

Figure 24 - Character select screen of Tales of the Wind
Figura 24 - Pantalla de selección del personaje en Tales of the Wind

Figure 25 - The in game graphics are really colorful and full of details
Figura 25: los gráficos del juego son muy coloridos y están llenos de detalles

En general, el software se creó teniendo en cuenta las CPU x86. Depende de SSE para algunas características que solo está disponible en sistemas x86. Sin embargo, dado que técnicamente no hay mucho detrás que pueda evitar que se ejecute en armhf o arm64, también debería ser posible ejecutarlo en otros ODROID.

Si revisas Debian Stretch y Buster, incluso encontrará paquetes de instalación fácilmente disponibles en los repositorios de Debian para armhf y arm64. Si profundizamos más, incluso encontraremos una imagen de Android_armhf y Android_arm64 en la página de descarga que te mostré anteriormente:

https://build.Anbox.io/Android-images/2017/08/04/Android_1_arm64.img https://build.Anbox.io/Android-images/2017/06/12/Android_1_armhf.img

Incluso han sido probadas con armhf y arm64 en algún momento. Puedo decirte de antemando que, si fuera tan fácil, el artículo no hubiera estado relacionado con el ODROID-H2, sino como ejecutarlas en el XU4 o C2. Aun así, hay indicios que indican que podría funcionar.

Mientras investigaba encontré los siguientes enlaces:

https://github.com/Anbox/Anbox/issues/1214 https://skmp.dev/blog/Anbox-rpi4/

Esto indica que debería ser posible. He intentado seguir esta guía, pero no he logrado hacerlo funcionar (todavía). La imagen armhf del sitio de descargas de Anbox tiene algunos problemas y no funciona de este modo. skmp menciona en su guía que recompiló la imagen armhf, y yo también, pero es muy diferente a la que comenta. En su guía, indica que necesitas descargar aproximadamente unos 40 GB para el entorno de compilación de Android, y un total de aproximadamente 100 GB para compilar el software.

En su blog no explica cómo hace esto, solo te remite a otro enlace y dice que siguió esa guía, pero siguiendo el enlace no hay una guía real, sino solo otro enlace que debes seguir para descargar el entorno de compilación.

Hice esto y digamos que no se descargaron 40 GB, sino más de 130 GB, pero al final pude crear también una imagen armhf y es muy similar a la creada por skmp.

Pero cuando intenté usarla en lugar de una directamente de Anbox, no llegué muy lejos. Por lo que puedo comprobar, parece tener problemas con los gráficos y, para ser sincero, los gráficos de la GPU Mali son un poco especiales. Tampoco he logrago compilar aún una nueva imagen arm64.

También es algo complicado hacer que /dev/binder y /dev/ashmem se ejecuten en ODROID. Aunque el módulo DKMS debería funcionar, no funciona con cada versión de Kernel, así que terminé activando ambas por defecto en las imágenes normales de Kernel para ODROID, ya que son específicas para cada versión del Kernel. De esta forma, debería estar disponible en los Kernels más recientes de todas mis imágenes, incluso sin compilar los módulos DKMS.

Tal vez alguien tenga más suerte en hacer que Anbox funcione en ODROID armhf o arm64. Lo agradecería mucho.

Reflexiones finales

Anbox es un proyecto muy bueno, desearía que el soporte arm y arm64 fuera mejor y pudiéramos ejecutarlo en ODROID ya que nos abriría más posibilidades.

Anbox ofrece muchas opciones para trabajar, por ejemplo, ejecutar Anbox en modo de ventana única, lo que podría ayudar a ejecutar ciertas aplicaciones que no permiten abrir ventanas.

En general, estoy muy entusiasmado con este proyecto, ya que podría permitirnos ejecutar muchas más aplicaciones directamente bajo Linux en el futuro y con un poco de suerte incluso en dispositivos arm y arm64.

Be the first to comment

Leave a Reply