Android en ligne de commandes

 

Android en ligne de commandes signifie que vous voulez taper des commandes pour effectuer des tâches d'administration sur votre appareil.

Ces commandes seront des commandes Unix (et oui, si vous ne le saviez pas encore, Android est basé sur un système d'exploitation: Unix).

Cependant, il y a peu de commandes accessibles à la base sous Android. Si vous voulez enrichir votre système avec d'autres commandes standards, il faudra installer busybox (ce qui requière que votre appareil soit rooté).

 

Il existe deux solutions pour passer en mode "ligne de commandes":

  • Soit vous voulez tout faire depuis votre appareil. Dans ce cas, installez terminal emulator. Il s'agit d'une application émulant une console et qui vous permettra donc de lancer les commandes unix.
  • Soit vous voulez travailler depuis votre PC. Dans ce cas, il faudra installer adb.

 

Dans tous les cas, il faudra avoir des connaissances du monde Unix et surtout des shell !

Image non trouvée !Vous pouvez très facilement briquer votre appareil suite à une opération inappropriée ! Faites des sauvegardes de votre système, données (répertoire efs entre autre sur certains modèles !!!).

Si vous voulez jouer aux apprentis sorciers pour mieux connaître le monde unix, ce n'est franchement pas la meilleure solution ! Créez plutôt une machine virtuelle sur laquelle vous installerez un Linux quelconque, c'est bien moins dangereux !

Sinon, avant de vous lancez sur un vrai appareil, faîtes vos preuves sur un émulateur Android Google !

La commande rm est à éviter autant que possible. Préférez le renommage, le déplacement, ... Vous pourrez toujours espérer récupérer votre système en cas d'erreur ! Sous Unix, les partitions peuvent être montées en lecture seule (la commande mount vous aidera à savoir quelle partition est ou non accessible en écriture. un mount -o remount,rw sur le répertoire pour le rendre accessible en lecture/écriture si nécessaire. Si vous ne comprenez rien à ce que je viens d'écrire, n'insistez pas, vous n'êtes pas au point ! Très gros risque de briquer votre appareil !).

S'il s'agit juste d'explorer les fichiers, utilisez une application Android comme ES Explorer, c'est bien plus simple (mais pas forcement moins dangereux, sutout si l'option root est activée !). Si vous avez un environnement de développement sous eclipse, DDMS permet aussi de naviguer dans le système de fichiers de votre appareil et ce depuis un PC. Vous pourrez de même copier des fichiers vers ou depuis votre PC. C'est plus simple à l'usage ! Pour y accéder, soit vous avez déjà présent un bouton DDMS, soit, vous passez par le menu "Window", option "Open perspective/Other..." et choisissez DDMS et allez dans l'onglet File Explorer, puis push ou pull pour transférer des fichiers dans un sens ou dans l'autre. Sinon, un windows explorer peut aussi vous suffir...

 

Terminal Emulator

Toutes les commandes unix ne seront pas disponibles, même en installant busybox.

Voici des explications sur quelques commandes:

 

Voici des exemples courants de commandes que vous pourriez utiliser:

  • df : Vous pourrez connaître le montage, l'état d'occupation des partitions et la taille d'un bloc sur une partition avec la commande df, la taille en bloc occupée par répertoires et fichiers.
  • mount pour avoir la liste des partitions et le type de montage (lecture/écriture ou lecture seule). Cf. mount pour monter un file system en écriture.
  • rm : Pour effacer des fichiers (suivants les permissions que vous aurez): le plus fréquent sera rm nomfichier ou rm nomRépertoire -r (pour effacer un répertoire et toute l'arborescence dans ce répertoire -- ATTENTION DANGEREUX, faîtes attention à l'endroit où vous êtes lors de l'effacement, vous risquez d'effacer tout votre portable (suivant le niveau de sécurité) ! --).
  • mv source destination : permet de déplacer un fichier, c'est aussi en déplaçant un fichier que vous pourrez le renommer !
  • cp source destination ou cp source répertoire ou cp source1 source2 sourcen répertoire. L'option -r existe aussi pour faire une copie de répertoires en récursif !
  • su: pour passer en root !
  • chmod et chown pour modifier les droits, propriétaires sur un fichier, répertoires.

 

Pour rappel, sous Unix, la commande man (pour manuel) permet d'avoir de l'aide sur une commande. Evidemment, le manuel n'est pas installé sur votre mobile même si la commande man existe, cela occuperait beaucoup trop de place. Par contre, tapez man cmd (où cmd est la commande pour laquelle vous désirez de l'aide) dans un moteur de recherche Web quelconque et vous retrouverez cette aide !

Vous pouvez aussi généralement taper une commande avec --help en paramètre pour avoir un minimum d'aide (voire sans le --help mais attention, certaines commandes n'attendent pas du tout de paramètres sous Android et peuvent donc s'exécuter).

Image non trouvée !Lors de son installation, busybox indique les commandes qu'il a installé. Vous serez ainsi celles qui sont disponibles sur votre appareil.

 

Image non trouvée !Terminal emulator propose quelques options:

  • Un appui long pourra afficher la possibilité d'utiliser des touches ctrl, fnct, tout copier, coller (Sélectionner le texte ne servira pas vraiment)
  • Possibilité d'ouvrir plusieurs terminaux
  • La touche volume + une touche du clavier virtuel permet aussi de faire des trucs.

 

ADB

ADB pour Android Debug Bridge. Cet outil de Google permet de travailler en ligne de commandes avec un Android.

 

Préparer ADB

Pour utiliser adb, il faut:

  • L'installer !

La meilleure solution est de récupérer le sdk Android. Puis récupérer uniquement adb si vous n'avez pas l'intention de développer sous Android:

Dans le zip, vous trouverez android-sdks\platform-tools, vous trouverez les fichiers suivant:

    • adb.exe
    • AdbWinApi.dll
    • AdbWinUsbApi.dll

qu'il faudra copier dans un répertoire quelconque. Vous pouvez maintenant supprimer le fichier d'installation.

  • Accepter une connexion d'adb sur votre appareil.

Pour cela, il faut vérifier dans les options de développement que le débogage usb soit autorisé.

 

Utiliser adb

Lancez une session DOS sous Windows:

Pour tester que tout fonctionne, tapez adb -version qui aura pour effet d'afficher la version d'adb !

Image non trouvée !Si adb n'est pas reconnu, vous pouvez toujours préciser le chemin d'accès ou ajouter plus simplement le répertoire d'accès à la variable d'environnement PATH sous Windows.

 

adb -devices permet de lister l'ensemble des appareils présents (y compris un émulateur). Si un appareil est noté offline, alors la communication est coupée entre adb et l'appareil.

 

Vous pourrez ensuite taper

adb -e cmd pour lancer un adb sur l'unique émulateur Android en cours d'exécution dans votre environnement de dev (si c'est pour bidouiller, c'est plus sûr avec cette option !)

ou

adb -d cmd pour lancer un adb sur l'unique terminal présent.

où cmd sera une commande adb à exécuter.

 

Si un seul appareil/émulateur est présent, vous pouvez taper directement adb cmd

 

Liste de commandes:

help (ou adb sans commande) donne la liste des commandes utilisables

usb permet de relancer le démon scannant les ports usb à la recherche d'appareil.

reboot permet de rebooter votre appareil. Vous pourrez aussi préciser bootloader ou recovery (pour lancer le recovery ou cwm si installé) pour lancer votre appareil dans l'un des deux modes. Equivalent à la commande unix reboot de l'appareil.

wait-for-device permet d'attendre l'arrivée d'un appareil. A utiliser dans un batch par exemple...

adb kill-server permet de relancer votre serveur adb. Peut-être utile pour le relancer en root.

adb root permet de lancer adb en root. Prévoir éventuellement un adb kill-server si adb déjà lancée.

adb remount permet de remonter le répertoire /system qui est read-only en read/write (prérequis: avoir fait un adb root !). Vous pourrez donc faire des majs dans ce répertoire. ATTENTION à ce que vous y ferez !!!

adb shell va lancer un shell Unix qui vous permttra ensuite d'exécuter des commandes Unix. Comme pour un shell standard:

  • vous devrez taper exit afin de quitter ce shell.
  • $ s'affiche si vous êtes un simple utilisateur, un # si vous êtes Root.

 

adb shell cmd unix pour lancer une commande unix et retourner ensuite dans la session DOS. Vous n'avez donc pas à taper exit pour sortir du shell.

adb push <fichier source> <fichier destination> copier un fichier/répertoire vers le device. Ex. : adb push c:\temp\toto.txt /mnt/sdcard/titi.txt pour copier le fichier toto.txt vers la carte SD en le renommant titi.txt

adb pull <fichier source> <fichier destination> copier un fichier/répertoire depuis le device vers votre PC.

 

Il y a d'autres commandes. Il s'agit ici de celles que vous utiliserez à priori le plus souvent. Vous trouverez ici un exemple d'installation de .apk via adb (Même si cette opération reste assez rare, il peut se produire des cas où vous pourriez en avoir besoin pour installer un explorateur de fichiers par exemple qui vous permettra ensuite de reprendre la main sur votre appareil).

Image non trouvée !adb fonctionne très bien sur un émulateur Google Android. Mais il sera plus capricieux sur un vrai terminal. J'ai personnellement pu constater des dysfonctionnements d'adb remount par exemple. Une seule solution dans ce cas, faire un adb shell puis utiliser mount remount, ou utiliser terminal emulator.