Appareil virtuel /e/OS en cours d'exécution dans l'émulateur Android
Installez une image système /e/OS et exécutez-la avec l'émulateur Android.

Installer Java

Les outils en ligne de commande du SDK Android nécessitent Java. Installez un environnement d’exécution Java avant de lancer sdkmanager ou avdmanager.

Sous Ubuntu :

sudo apt install openjdk-17-jre-headless

Sous Fedora :

sudo dnf install java-17-openjdk

Vérifiez que Java est disponible :

java -version

Installer les outils du SDK Android

Ce guide utilise les Android SDK Command-Line Tools afin que chaque commande s’exécute avec le même répertoire SDK. Android Studio n’est pas nécessaire.

Téléchargez le ZIP des outils en ligne de commande pour Linux depuis la page de téléchargement d’Android Studio, puis installez-le sous cmdline-tools/latest dans votre répertoire du SDK Android :

export ANDROID_HOME="${HOME}/Android/Sdk"
mkdir -p "${ANDROID_HOME}/cmdline-tools"
SDK_TOOLS_TMP="$(mktemp -d)"
unzip /path/to/commandlinetools-linux-….zip -d "${SDK_TOOLS_TMP}"
mv "${SDK_TOOLS_TMP}/cmdline-tools" "${ANDROID_HOME}/cmdline-tools/latest"

Ajoutez les outils du SDK à votre PATH :

export PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/emulator:${ANDROID_HOME}/platform-tools:${PATH}"

Installez Android Emulator et les Platform-Tools dans le même répertoire SDK :

sdkmanager --sdk_root="${ANDROID_HOME}" --install "emulator" "platform-tools"

Acceptez les invites de licence du SDK Android si sdkmanager demande confirmation.

Vérifiez que les commandes nécessaires sont disponibles :

command -v sdkmanager avdmanager emulator adb
java -version
emulator -accel-check

Télécharger et vérifier l’image

Téléchargez une image d’émulateur et son fichier .sha256sum depuis le serveur d’images /e/OS, ou compilez une image avec IS_EMULATOR=true.

Conservez l’archive ZIP et le fichier de somme de contrôle dans un répertoire de téléchargement temporaire. L’archive sera extraite dans votre SDK Android à l’étape suivante.

Vérifiez l’archive depuis le répertoire où vous l’avez téléchargée :

sha256sum --check IMG-e-….zip.sha256sum

La somme de contrôle détecte un téléchargement endommagé. Comme la somme de contrôle et l’archive sont fournies par le même serveur, cette vérification n’établit pas l’identité de l’éditeur.

Toujours depuis le répertoire de téléchargement, examinez le fichier source.properties contenu dans le ZIP avant de l’extraire :

unzip -p IMG-e-….zip '*/source.properties'

Cette commande affiche le fichier de métadonnées sans décompresser l’archive. Le motif */source.properties correspond au fichier de métadonnées situé dans le répertoire ABI contenu dans le ZIP. Utilisez les valeurs indiquées pour choisir le chemin d’installation à l’étape suivante. Par exemple, une image Android 16 x86_64 indique le niveau d’API 36, le tag lineage et l’ABI x86_64.

Installer l’image système

Extrayez l’image depuis votre répertoire de téléchargement vers l’arborescence des images système du SDK Android. La destination se trouve dans ANDROID_HOME, pas dans le répertoire de téléchargement temporaire :

cd /path/to/downloads
mkdir -p "${ANDROID_HOME}/system-images/android-36/lineage"
unzip IMG-e-….zip \
  -d "${ANDROID_HOME}/system-images/android-36/lineage"

Le ZIP contient déjà le répertoire ABI. Après extraction, l’image installée doit être accessible en écriture par votre utilisateur et présenter cette disposition :

${ANDROID_HOME}/system-images/android-36/lineage/x86_64/

Ne créez pas de lien direct vers une sortie de build appartenant à root ou à un autre utilisateur.

Créez le fichier de métadonnées de paquet du SDK 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/sdk/android/repo/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

Confirmez que l’image est détectée :

sdkmanager --sdk_root="${ANDROID_HOME}" --list_installed

Le répertoire de l’image contient des fichiers tels que :

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

L’émulateur crée l’image de données utilisateur accessible en écriture au démarrage de l’appareil virtuel ; elle ne fait pas partie de l’archive d’image système téléchargée.

Créer et démarrer un appareil virtuel

Avec Android Studio :

  1. Ouvrez More Actions > Virtual Device Manager depuis l’écran d’accueil, ou View > Tool Windows > Device Manager depuis un projet.
  2. Cliquez sur Create Virtual Device.
  3. Sélectionnez un profil matériel de téléphone et cliquez sur Next.
  4. Sélectionnez l’image LineageOS x86_64 pour l’API 36 et cliquez sur Next.
  5. Nommez l’appareil virtuel et cliquez sur Finish.
  6. Lancez-le depuis le Device Manager.

Vous pouvez aussi créer l’appareil virtuel depuis un terminal. La réponse echo "no" conserve le profil matériel par défaut au lieu d’ouvrir une invite interactive :

echo "no" | avdmanager create avd \
  --name eos_a16 \
  --package 'system-images;android-36;lineage;x86_64'
emulator -list-avds

Démarrez l’appareil virtuel :

emulator -avd eos_a16 -no-snapshot-load

Pour un test de démarrage à froid sans interface graphique :

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 démarrage terminé affiche 1.

Supprimer un appareil virtuel existant

Avertissement: Veuillez procéder avec la plus grande prudence.

Listez les appareils virtuels et supprimez l’appareil virtuel nommé eos_a16

emulator -list-avds
avdmanager delete avd -n eos_a16

Vérifiez si l’appareil virtuel a bien été supprimé :

emulator -list-avds

Résoudre les plantages graphiques

Si le processus de l’émulateur plante dans un RenderThread au sein de SwiftShader ou de SwANGLE, ou si un démarrage sans interface graphique reste bloqué avant sys.boot_completed=1, commencez par mettre à jour Android Emulator. Sur un hôte disposant d’un GPU pris en charge, réessayez avec l’OpenGL matériel et Vulkan désactivé :

emulator -avd eos_a16 \
  -gpu host -feature -Vulkan

Cette combinaison évite le rendu logiciel. Le rendu matériel dépend du GPU de l’hôte et de son pilote ; c’est une option de dépannage, pas un réglage par défaut portable. Les modes GPU swiftshader_indirect et guest mentionnés dans les anciens guides sont dépréciés.

Avertissement: Ces images d’émulateur non officielles sont des builds userdebug signés avec des clés de test. N’utilisez pas de vrais comptes ni de données personnelles sensibles dans l’appareil virtuel.