Emulador de /e/OS
Editar
Instalar Java
Las herramientas de línea de comandos del SDK de Android requieren Java. Instala un entorno de ejecución de Java antes de ejecutar sdkmanager o avdmanager.
En Ubuntu:
sudo apt install openjdk-17-jre-headless
En Fedora:
sudo dnf install java-17-openjdk
Comprueba que Java está disponible:
java -version
Instalar las herramientas del SDK de Android
Esta guía usa las herramientas de línea de comandos del SDK de Android, de modo que todos los comandos se ejecuten contra el mismo directorio del SDK. No se requiere Android Studio.
Descarga el ZIP de las herramientas de línea de comandos para Linux desde la página de descargas de Android Studio, e instálalo en cmdline-tools/latest dentro de tu directorio del SDK de Android:
export ANDROID_HOME="${HOME}/Android/Sdk"
mkdir -p "${ANDROID_HOME}/cmdline-tools"
SDK_TOOLS_TMP="$(mktemp -d)"
unzip /ruta/a/commandlinetools-linux-….zip -d "${SDK_TOOLS_TMP}"
mv "${SDK_TOOLS_TMP}/cmdline-tools" "${ANDROID_HOME}/cmdline/latest"
Añade las herramientas del SDK a tu PATH:
export PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/emulator:${ANDROID_HOME}/platform-tools:${PATH}"
Instala el emulador de Android y las Platform-Tools en el mismo directorio del SDK:
sdkmanager --sdk_root="${ANDROID_HOME}" --install "emulator" "platform-tools"
Acepta las solicitudes de licencia del SDK de Android si sdkmanager pide confirmación.
Comprueba que los comandos necesarios están disponibles:
command -v sdkmanager avdmanager emulator adb
java -version
emulator -accel-check
Descargar y verificar la imagen
Descarga una imagen de emulador y su archivo .sha256sum desde el servidor de imágenes de /e/OS, o compila una imagen con IS_EMULATOR=true.
Mantén el archivo ZIP y el archivo de suma de verificación en un directorio temporal de descargas. El archivo se extraerá en tu SDK de Android en el paso siguiente.
Verifica el archivo desde el directorio donde lo descargaste:
sha256sum --check IMG-e-….zip.sha256sum
La suma de verificación detecta una descarga dañada. Como la suma y el archivo provienen del mismo servidor, esta comprobación no establece la identidad del editor.
Aún desde el directorio de descargas, inspecciona el archivo source.properties almacenado dentro del ZIP antes de extraerlo:
unzip -p IMG-e….zip '*/source.properties'
Este comando imprime el archivo de metadatos sin descomprimir el archivo. El patrón */source.properties coincide con el archivo de metadatos dentro del directorio ABI contenido en el ZIP. Usa los valores reportados para elegir la ruta de instalación en el paso siguiente. Por ejemplo, una imagen de Android 16 x86_64 reporta nivel de API 36, etiqueta lineage y ABI x86_64.
Instalar la imagen del sistema
Extrae la imagen del directorio de descargas al árbol de imágenes del sistema del SDK de Android. El destino está dentro de ANDROID_HOME, no dentro del directorio temporal de descargas:
cd /ruta/a/descargas
mkdir -p "${ANDROID_HOME}/system-images/android-36/lineage"
unzip IMG-e….zip -d "${ANDROID_HOME}/system/images/android-36/lineage"
El ZIP ya contiene el directorio ABI. Tras la extracción, la imagen instalada debe poder escribirse por tu usuario y tener esta estructura:
${ANDROID_HOME}/system/images/android-36/lineage/x86_64/
No enlaces directamente a una salida de compilación propiedad de root u otro usuario.
Crea el archivo de metadatos del paquete del SDK de Android:
cat > "${ANDROID_HOME}/system/images/android-36/lineage/x86_64/package.xml" <<'EOF'
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:repository xmlns:ns2="http://schemas.android.com/repository/android/common/02" xmlns:ns12="http://schemas.android.com/repo/android/sdk/sys-img2/03">
<localPackage path="system-images;android-36;lineage;x86_64" obsolete="false">
<type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns12:sysImgDetailsType">
<api-level>36</api-level>
<base-extension>true</base-extension>
<tag>
<id>lineage</id>
<display>LineageOS</display>
</tag>
<abi>x86_64</abi>
</type-details>
<revision>
<major>1</major>
</revision>
<display-name>LineageOS x86_64 System Image</display-name>
</localPackage>
</ns2:repository>
EOF
Confirma que la imagen se detecta:
sdkmanager --sdk_root="${ANDROID_HOME}" --list_installed
El directorio de la imagen contiene archivos como:
ls "${ANDROID_HOME}/system/images/android-36/lineage/x86_64"
advancedFeatures.ini build.prop data encryptionkey.img kernel-ranchu NOTICE.txt package.xml ramdisk.img source.properties system.img vendor.img VerifiedBootParams.textproto
El emulador crea la imagen de datos de usuario escribible cuando arranca el dispositivo virtual; no forma parte del archivo descargado de la imagen del sistema.
Crear e iniciar un dispositivo virtual
Para usar Android Studio:
- Abre «More Actions > Virtual Device Manager» desde la pantalla de bienvenida, o «View > Tool Windows > Device Manager» desde un proyecto.
- Haz clic en «Create Virtual Device».
- Selecciona un perfil de hardware de teléfono y haz clic en «Next».
- Selecciona la imagen x86_64 de LineageOS para la API 36 y haz clic en «Next».
- Nombra el dispositivo virtual y haz clic en «Finish».
- Inícialo desde el Device Manager.
También puedes crear el dispositivo virtual desde un terminal. La respuesta echo "no" mantiene el perfil de hardware por defecto en lugar de abrir un prompt interactivo:
echo "no" | avdmanager create avd \
--name eos_a16 \
--package 'system-images;android-36;lineage;x86_64'
emulator -list-avds
Inicia el dispositivo virtual:
emulator -avd eos_a16 -no-snapshot-load
Para una prueba de arranque en frío sin ventana:
emulator -avd eos_a16 \
-no-window -no-audio -no-snapshot -wipe-data \
-gpu host -feature -Vulkan &
adb wait-for-device
adb shell getprop sys.boot_completed
Un arranque completado imprime 1.
Eliminar un dispositivo virtual existente
Lista los dispositivos virtuales y borra el que se llame eos_a16:
emulator -list-avds
avdmanager delete avd -n eos_a16
Valida si el dispositivo virtual se ha borrado:
emulator -list-avds
Solucionar fallos gráficos
Si el proceso del emulador se cierra inesperadamente en un RenderThread dentro de SwiftShader o SwANGLE, o si un arranque sin ventana se queda atascado antes de sys.boot_completed=1, primero actualiza el emulador de Android. En un host con GPU compatible, reintenta desactivando OpenGL y Vulkan por hardware:
emulator -avd eos_a16 \
-gpu host -feature -Vulkan
Esta combinación evita el renderizador por software. El renderizado por hardware depende de la GPU y del driver del host; es una opción de diagnóstico, no un valor por defecto portable. Los modos de GPU swiftshader_indirect y guest de guías antiguas están obsoletos.