Implementación de emuladores de Android en AWS EC2 [1/3] | Arquitectura ARM y Genmony | Soluciones para un desarrollador en solitario | de Uddeshya Singh | Noviembre de 2020

Pero usaremos específicamente imágenes del sistema; android-25; google_apis; armeabi-v7a versión. Ahora déjeme justificar esta elección.

¿Por qué Android-25? 🤔

¿Por qué la versión google_api? 🙇🏽‍♂️

¿Por qué la arquitectura armeabi-v7a? 💁🏾‍♂️️

$ sudo apt install cpu-checker -y
$ kvm-ok

Esto le dará la bienvenida con el siguiente mensaje.

INFO: Your CPU does not support KVM extensions
INFO: For more detailed results, you should run this as root
HINT: sudo /usr/sbin/kvm-ok

¿Por qué los emuladores de Intel no funcionan en estas instancias EC2? 😭

Intel HAXM (Hardware Acceleration Execution Manager) es un componente de hipervisor para Windows y macOS. Existe KVM (máquina virtual basada en kernel) para Linux. Con la aceleración de hardware, el emulador de Android puede ejecutar dispositivos virtuales a velocidades similares a las de la CPU de su estación de trabajo.

Virtualización de 2 niveles

Cuando elegimos imágenes del sistema; android-25; defecto; x86 estamos intentando ejecutar una máquina virtual dentro una máquina virtual. ¿Es un segundo nivel o virtualización anidada que estamos tratando de lograr y que, lamentablemente, aún no se apoya. El hardware de Intel solo admite una capa única de virtualización asistida por hardware, y agregar soporte para un anidamiento eficiente (es decir, no dolorosamente lento) requiere mucha ingeniería de software inteligente en los hipervisores.

$ sdkmanager "system-images;android-25;google_apis;armeabi-v7a"
$ echo "no" | avdmanager create avd --name "testDevice" -k "system-images;android-25;google_apis;armeabi-v7a"

Entonces, acabas de crear un AVD, ¿cómo verificarlo? puedes usar avdmanager para controlar sus dispositivos Android virtuales.

$ avdmanager list avd
dispositivos virtuales

¡Ahora ejecutemos este dispositivo virtual!

$ emulator -ports 5554,5555 -avd testDevice -writable-system -no-window -no-audio -gpu swiftshader_indirect -show-kernel &

-ports 5554,5555 Defina los puertos de conexión en los que el puente de depuración de Android se conectará a este emulador (en este caso, 5554) y deben ser consecutivos.

-writable-system le daría acceso para editar cualquier archivo o enviar cualquier archivo como desee en la configuración de la raíz.

-no-window simplemente ejecutará el emulador sin cabeza (sin esta bandera, no funcionará porque no tenemos ninguna configuración de gráficos basada en OpenGL en una CLI)

-no-audio eliminaría el soporte de audio (algo que le sugiero que haga)

-gpu swiftshader_indirect para evitar un ciclo de arranque.

-show-kernel algo para mantener la cordura y comprobar el progreso del kernel en el arranque, porque tardará una eternidad (60–90 minutos) en arrancar correctamente.

Estos son los testimonios de por qué debería no elija algo tan lento como sería contraproducente, puede probar en sus dispositivos locales en lugar de en un dispositivo que tardará 1 hora en funcionar correctamente y aún así le dará un promedio de 2.5 minutos para instalar un APK normal.

Campeón de Genmony

Genmony sigue siendo un emulador de referencia para muchas organizaciones y el increíble soporte y velocidad que brindan sus emuladores son lo suficientemente buenos para el propósito que queremos resolver, si y solo si, su bolsillo le permite tanta libertad.

Sin embargo, $ 0.7 / h por emulador es un poco demasiado caro, al menos si desea realizar pruebas a gran escala.

En el siguiente, exploraremos cómo configurar múltiples emuladores en una sola instancia y exploraremos el puente de depuración de Android en profundidad personalizando nuestro dispositivo y ejecutando aplicaciones simples con emuladores Intel (que son al menos 10 veces más rápidos que estos).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *