Outils pour utilisateurs

Outils du site


cours_sur_l_utilitaire_android_adb

Cours sur l'utilitaire Android ADB

Dans ce cours nous allons voir comment se servir d'un outil très puissant, mais aussi très complexe, et très moche : la ligne de commande.

Note de l'auteur principal (nounours)

Rappel : Nous ne sommes pas responsable si vous avez des problèmes avec votre téléphone.
Rooter un téléphone est une modification, donc vous perdez la garantie.

Le but de ce cours est de vous donner les bases nécessaires pour réaliser diverses taches telles que :

  • Accéder au cœur d'android, pour l'explorer, le modifier, l'optimiser (et le briquer si vous faites n'importe quoi)
  • Accéder aux partitions, paramètres, options, etc .. du système

Si un des termes employés dans ce cours vous est inconnu, je vous conseille de faire une recherche sur le wiki

Prérequis

Avant d'entamer ce cours, il est mieux d'avoir compris Comment flasher son terminal (les techniques de flashage étant en constante évolution, le lien concerne le samsung spica)

Vous devez également connaitre un minimum de choses concernant

Pour ce cours, nous allons avoir besoin :

  • du (fonctionne sous Windows, Linux, Mac)
  • d'un téléphone rooté, avec busybox installé ( Si vous êtes sous Android 1.5, suivez

De plus:

  • Si vous êtes sous Android 2.1, lisez le post de
  • Si vous avez la ROM de fabricez, alors pas de problème, elle est déjà rootée.

1 - ADB

ADB signifie Android Debug Bridge. C'est un outil qui permet l'accès a la console du téléphone (car vous n'êtes pas sans savoir que android est basé sur un kernel linux, et que la base de linux est de proposer des consoles pour avoir accès au système). Pour ceux qui veulent plus d'info sur ADB et le SDK en général, voir

1.1 - ADB, installation et conseils

ADB fait partit des outils du SDK d'android.

Pour installer le SDK d'android, rien de plus simple, vous n'avez qu'a extraire le .zip dans un répertoire de votre choix. Pour faciliter l'utilisation d'ADB, je vous conseille de créer un répertoire a la racine de votre disque dur.

Dans ce dossier, copiez les fichiers suivants, que vous trouverez dans le dossier tools de votre dossier android-sdk :

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

Pour les autres systèmes (Mac, Linux) il vous suffira de remplacer adb par ./adb dans toutes les commandes décrites cu-dessous.

Ce sera votre répertoire de travail, dans lequel vous mettrez et récupèrerez les fichiers en transit entre votre pc et votre téléphone. Cette technique que j'utilise permet de simplifier au maximum les commandes, on n'a plus besoin de taper les chemins des fichiers qui peuvent être très longs.

1.2 - ADB, Connexion du téléphone

Dans une fenêtre DOS (=invite de commande, CMD) allez dans votre dossier de travail et tapez : adb devices

Cette commande est surement la première a effectuer, elle permet de vérifier que le téléphone est bien connecté.

Elle devrait vous envoyer le résultat suivant :

* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
5700XXXXXXXX device

Les deux premiers messages concernent le lancement du processus nécessaire a ADB pour communiquer avec votre téléphone. Si vous n'utilisez pas ADB pendant un moment, le processus se lance ou se relance automatiquement.

La dernière ligne indique qu'un téléphone est connecté (fin du numéro masquée).

Si vous ne voyez pas d'inscription sous la ligne “List of devices attached”, c'est que votre téléphone n'est pas reconnu. Vérifiez les paramètres du téléphone (mode débogage USB) et vos drivers.

1.3 - ADB, les commandes les plus utilisées

Voici les commandes principales:

adb install c:\Spica\fichier.apk

Envoie l'application située dans c:\Spica\fichier.apk et l'installe sur le téléphone.

Cette commande est particulièrement utile pour installer des applications genre Astro ou même l'appli market, quand vous n'avez pas d'autre connexion a disposition.

adb push c:\Spica\fichier /sdcard/

Envoie le fichier c:\Spica\fichier vers le dossier /sdcard du téléphone. A noter que le dossier /sdcard est en fait la carte SD.

adb pull /sdcard/fichier c:\Spica\

Récupère le fichier /sdcard/fichier depuis le téléphone et le met dans le dossier c:\Spica<br /> A noter : avec ces deux commandes (push et pull), notez que le fichier peut être renommé au passage.<br /> Par exemple :

adb push c:\Spica\souris /sdcard/clavier

envoie le fichier “souris” et le renomme en “clavier” sur le téléphone. Le contenu du fichier reste inchangé.

Si vous ne précisez pas le nom du fichier de destination, vous devez impérativement finir le chemin avec un / dans le cas du push et un \ dans le cas du pull.<br /> Si vous tapez :

adb push c:\Spica\fichier /sdcard

alors votre fichier sera envoyé a la racine du téléphone (le /) sous le nom sdcard.

adb shell

Ouvre le shell du téléphone. Vous devez alors voir un $ suivit du curseur clignotant. Ce $ est ce qu'on appelle l'invite ou prompt.

Toutes les commandes que vous entrerez dès lors seront envoyées au téléphone.

Pour quitter le shell, vous pouvez taper

exit

vous revenez alors sur la ligne de commande DOS.

adb shell 'commande'

Exécute la 'commande', affiche le résultat et quitte le shell. Utile si vous n'avez qu'une commande a effectuer.

Il existe d'autres commandes pour adb, vous pouvez les consulter Il existe même des commandes pour bidouiller les databases SQL présentes dans le téléphone, déclencher des évènements, etc !

2 - Busybox

BusyBox est un logiciel qui implémente un grand nombre des commandes du standard Unix

Les androphones disposent generalement d'une version de busybox compilée spécialement pour l'architecture du processeur présent.

Nous allons voir les commandes les plus utiles, pour les autres, je vous conseille de suivre une initiation au shell linux/unix, que vous trouverez surement en cherchant un peu sur google.

Veuillez noter que la syntaxe de la ligne de commande linux est complexe, et qu'il existe de multiples façon de les utiliser.

Notez également que certaines commandes doivent être exécutées en root, sinon elles renvoient une erreur.

Passons a la description des commandes les plus utiles :

cd

La commande 'cd' (Change Directory) fonctionne de la même manière sous linux, android, et l'invite de commande de windows.<br />

A noter que taper 'cd' sans indiquer de dossier va renvoyer une erreur “cd: HOME not set”.<br /> L'explication est simple : la commande 'cd' utilisée est issue de linux, l'entrer sans préciser de dossier vous envoie (sous linux) dans votre dossier 'home'. Hors dans android, ce dossier n'existe pas.

cp

Permet de copier un fichier.

La syntaxe exacte est :

cp fichier-origine fichier-destination

Vous pouvez changer de dossier et/ou renommer le fichier avec cette commande.

Quelques exemples :

cp toto /sdcard/

copie le fichier toto (depuis le dossier ou vous êtes) dans le dossier sdcard.<br />

cp /system/toto toto2

copie le fichier toto du dossier system vers le dossier ou vous êtes, et le renomme en toto2.<br />

cp /system/toto /sdcard/toto2

copie le fichier toto du dossier system vers le dossier sdcard, et le renomme en toto2.

Les trois commandes qui suivent ont leur utilisation détaillée uniquement pour les éléments se trouvant dans le dossier ou vous êtes.

rm

Supprime un fichier.

Utilisation :

rm fichier

mkdir

Crée un dossier.

Utilisation :

mkdir dossier

rmdir

Supprime un dossier. Utilisation :

rmdir dossier

df

Indique l'espace total, utilisé et disponible sur chaque partition montée sur le système.

ls

Liste le contenu d'un dossier.<br /> Utilisée seule, elle affiche juste la liste des fichiers et dossiers contenus dans le dossier ou vous vous trouvez lorsque vous lancez la commande.

ls -l

Liste le contenu d'un dossier, et affiche les attributs des fichiers :<br />

  • Permissions,
  • propriétaire,
  • date et heure de la dernière modification.

Regardons cela en détails :

-rw-r–r– root root 2375 2010-03-16 13:56 build
drwxr-xr-x root root 2010-03-16 13:56 etc
drwxr-xr-x root root 2010-03-16 15:56 lib
drwxr-xr-x root shell 2010-03-16 15:56 bin
  • La première colonne affiche les permissions du fichier, et précise si il s'agit d'un dossier, d'un lien, ou d'un fichier.
  • La deuxième affiche le groupe d'utilisateurs propriétaire du fichier.
  • La troisième affiche l'utilisateur propriétaire du fichier.
  • Ensuite on a la date et l'heure de la dernière modification, puis le nom du fichier.

Quelques explications sur les permissions :<br /> Le code que vous voyez pour chaque fichier représente les permissions attribuées. Je vais vous montrer comment ca marche avec cet exemple :

drwxrwxrwx

Ceci est le code d'un dossier ou toutes les permissions sont accordées.

La première lettre indique le type de l'élément :

  • - (le tiret) : indique que c'est un fichier.
  • d : indique que c'est un dossier
  • l : indique que c'est un lien vers un élément.

Le reste du code est composé de 3 séries de 3 caractères : rwx<br /> Ces caractères sont toujours dans cet ordre.

  • Le 'r' (Read) indique le droit de lecture,
  • le 'w' (Write) indique le droit d'écriture,
  • le 'x' (eXecute) indique le droit d'exécution.
  • La première série concerne les droits pour l'utilisateur propriétaire du fichier.
  • La deuxième série concerne les droits pour le groupe de l'utilisateur du fichier.
  • La troisième série concerne les droits des autres utilisateurs.

Deux exemples :

-rw-r–r– root root 2375 2010-03-16 13:56 build

* Le premier caractère ' - ' indique que c'est un fichier.

  • Le premier groupe de permissions 'rw-' indique que l'utilisateur, ici 'root' a les droits de lecture et d'écriture, mais pas d'exécution.
  • Le deuxième groupe de permissions 'r–' indique le groupe 'root' a uniquement le droit de lecture.
  • Le troisième groupe de permissions 'r–' indique que les autres utilisateurs on uniquement le droit de lecture.

drwxr-xr-x root shell 2010-03-16 15:56 bin

  • Le premier caractère ' d ' indique que c'est un dossier.
  • Le premier groupe de permissions 'rwx' indique que l'utilisateur, ici 'shell' a les droits de lecture, d'écriture, et d'exécution.
  • Le deuxième groupe de permissions 'r-x' indique le groupe 'root' a les droits de lecture, d'exécution, mais pas d'écriture.
  • Le troisième groupe de permissions 'r-x' indique que les autres utilisateurs on les droits de lecture, d'exécution, mais pas d'écriture.

Pour résumer :

  • premier caractère = fichier (-), dossier (d), lien (l)
  • rwx = Read : lecture; Write : écriture; eXecution : exécution
  • 3 séries dans l'ordre : utilisateur, groupe, les autres.

chmod

Change les permissions d'un fichier ou d'un dossier.

Pour cela on lance des commandes du type

chmod 644 fichier

On code les groupes de permissions avec un code hexadécimal, chaque groupe représentant un chiffre.<br /> En détails, pour chaque groupe, on calcule le chiffre correspondant aux permissions :

  • R = 4
  • W = 2
  • X = 1

Donc si on veut donner les permissions rwxrw-wx a un fichier, on code comme suit :

  • rwx : 4+2+1=7
  • rw- : 4+2+0=6
  • -wx : 0+2+1=3

donc on tape

chmod 763 fichier

Un autre exemple :

  • rw-w-r-x :
  • rw- : 4+2+0=6
  • -w- : 0+2+0=2
  • r-x : 4+0+1=5

donc on tape

chmod 625 fichier

chown

Change le propriétaire et/ou le groupe a qui appartient le fichier.

Utilisation :

chown user:group fichier

Par exemple :

chown shell:root /system/toto

change l'utilisateur et le groupe du fichier toto en shell et root.

cat

La commande cat affiche le contenu du fichier indiqué.

Utilisation :

cat /sdcard/toto.txt

La commande 'cat', avec Android, est principalement utilisée avec une redirection.

Une redirection permet tout simplement de rediriger la sortie de la commande précédente vers un fichier ou un périphérique.<br /> La redirection la plus utilisée avec Android est symbolisée par le signe >

La combinaison de la cat et de la redirection permet d'effectuer des opérations très intéressantes, telles que la copie d'un fichier vers un autre.<br /> Vous aurez deviné qu'avec cette combinaison, on peut copier des fichiers systèmes protégés, ou même le contenu d'une partition.

L'utilisation de cette combinaison est :

cat fichier > fichier2

On effectue alors la copie de 'fichier' vers 'fichier2'.<br /> A noter que si le 'fichier2' n'existe pas, il sera crée, et que si il existe déjà, il sera remplacé.

Aucune confirmation ne sera demandée, alors faites attention a ce que vous faites !

3 - Le Root

Assurez vous d'avoir bien compris les principes du super-utilisateur : Etre root, téléphones rootés

Lorsque vous êtes sur la console du téléphone, pour gagner les privilèges de l'utilisateur ROOT, vous devez taper :

su

L'invite (le caractère qui est avant le curseur, la ou vous entrez une commande) va changer.

  • Quand vous n'etes pas root, le $ s'affiche.
  • Quand vous êtes root, le # s'affiche.

4 - Modifier les fichiers systèmes

Exemple La plupart des procédures permettant de 'rooter' le Spica incluent un petit utilitaire :

remount

remount permet de changer le type d'accès au système de fichier, soit en lecture seule, soit en lecture-écriture.

Par défaut, au démarrage du téléphone, le système Android est en lecture seule, cela permet d'éviter qu'une application ou un utilisateur malveillant modifie le contenu du système.

Pour faire des modification, on doit activer le mode lecture-écriture en tapant :

remount rw

(rw signifie : Read Write)

Quand vous avez terminé les modifications, vous devez remettre le système en lecture seule :

remount ro

(ro signifie : Read Only)

Si vous avez fait des modifications sur des fichiers systèmes importants, le mieux et encore de redémarrer le téléphone en tapant :

reboot
cours_sur_l_utilitaire_android_adb.txt · Dernière modification: 2013/07/31 09:18 par admin