4416 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • Utiliser des applications mobiles Android sur un PC GNU/Linux sans émulateur avec Anbox

    J'veux jouer à un jeu vidéo uniquement disponible sur ordinateur de poche sans pour autant détenir un tel smartphone.

    Une simple recherche sur le web me dégote un article de Korben sur Anbox, un système libre (GPL et Apache) qui utilise les conteneurs Linux (LXC, Docker, etc.) afin de faire tourner un système d'exploitation Android complet sur un ordinateur (équipé d'un noyau Linux, donc). Il ne s'agit pas d'un émulateur (performances préservées, tout ça).

    Comme c'est un peu la galère à installer de bout en bout, voici mes notes d'installation / configuration sur un système Debian GNU/Linux Buster :

    • Anbox est empaqueté dans Debian, mais j'utilise snap, car le script d'automatisation de l'installation des bibliothèques de fonction permettant l'exécution d'applications pour l'architecture ARM (voir ci-dessous) ne fonctionne pas sans snap (et vu que c'est la galère à installer à la mano…), et aussi parce que le paquet Debian ne fournit pas d'image système Android (rootfs) (on peut néanmoins en récupérer une sur le site web officiel d'anbox) ;

    • Deux modules Linux sont nécessaires : ashmem_linux et binder_linux. Ils sont présents dans l'image Linux fournie par le projet Debian (pour s'en assurer : find /lib/modules/ -iname '*ashmem*') et ils seront chargés automatiquement au moment propice ;

    • Installer le gestionnaire de paquets snap : sudo apt install snapd ;

    • Installer anbox avec snap : sudo snap install --devmode --beta anbox. Le démon système qui gère le conteneur Android, container-manager, est automatiquement démarré à la fin de l'installation et au démarrage du système hôte ;

    • Récupérer le script qui automatise l'installation des bibliothèques de fonctions permettant l'exécution d'applications mobiles conçues pour l'architecture ARM (source). Sans ça, l'installation d'un logiciel mobile ARM se soldera par l'erreur suivante : adb: failed to install <nom_apk>: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]. wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-houdini-only.sh ;

      • Si l'on veut installer Google Play, la logithèque de Google pour Android, on préférera récupérer un autre script : wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh. Installer le Google Play après avoir déjà installé les bibliothèques ARM a aucun impact. Je rappelle que Google Play nécessite la possession d'un compte Google et que sa création nécessite la validation d'un numéro de téléphone mobile… ;
        • Attention : ce script pour installer Google Play ne fonctionne pas nativement : il se termine très rapidement sans rien afficher. Origine du problème ? La commande « which anbox » de la ligne 108 retourne rien quand anbox est installé via snap. Il faut remplacer cette ligne par ANBOX='/snap/bin/anbox' ;
    • Installer les logiciels nécessaires à l'exécution du script récupéré à l'étape précédente qui ne sont pas encore installés : sudo apt install curl lzip ;

    • Installer les bibliothèques de fonctions permettant l'exécution d'applications mobiles conçues pour l'architecture ARM : bash install-houdini-only.sh ;

    • Démarrer le gestionnaire de sessions anbox : snap run anbox session-manager. Il s'agit d'un processus utilisateur, pas système. Attention : cette commande ne rend pas la main, donc on peut la lancer en fond (nohup snap run anbox session-manager &) si l'on le souhaite, mais je préfère ne pas le faire afin de pouvoir la tuer avec un ctrl+c puis la relancer avec un flèche_haut+entrée ;

    • Sans Google Play, l'installation d'applications se fait avec la commande adb. Il faut donc récupérer le fichier apk kiVaBien ;

    • Installer adb : sudo apt install adb ;

    • Installer l'application dans le conteneur : adb install <appli>.apk ;

    • Se rendre dans le menu des applications mobiles installées : snap run anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity ;

    • Lancer l'application mobile. \o/



    Commandes utiles :

    • Redémarrer le démon système qui gère le conteneur Android : sudo snap restart anbox.container-manager. Cela permet parfois de terrasser un bug genre une application mobile qui ne démarre pas ou le réseau à l'intérieur du conteneur qui n'est pas configuré au démarrage du système hôte ;

    • Lister toutes les applications mobiles installées : adb shell su 0 pm list packages ;

    • Désinstaller une application mobile : adb uninstall <nom_unique>. Pour connaître le nom unique d'une application, on peut lister l'ensemble des applications installées (voir point précédent). Si l'on ne la trouve pas dans la liste, on peut exécuter la commande adb shell su 0 ps pendant que l'application est en cours d'exécution afin de tenter de l'identifier ;



    Notes utiles :

    • Modifier la date / heure à l'intérieur du conteneur Android, depuis le menu des paramètres ou avec adb shell + la commande date, ne fonctionne pas, même en désactivant la synchronisation par le réseau. C'est normal : il s'agit d'un conteneur LXC. ;) Solution : changer la date / heure sur le système hôte ;

    • Le trafic réseau du conteneur Android arrive sur l'hôte via l'interface réseau anbox0. Le transfert IPv4 est activé par défaut. Rien de plus. Si tu filtres tes accès sortant, il faut donc ajouter une règle Netfilter genre sudo nft add rule inet filter FORWARD iifname "anbox0" counter accept.
    Mon 10 Aug 2020 01:29:16 PM CEST - permalink -
    - http://shaarli.guiguishow.info/?w8wbPw
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community - Help/documentation