Se servir du SDK Android

Nous allons voir ici comment utiliser le SDK Android qui permet de réaliser de nombreuses opérations comme des sauvegardes, des installations et des opérations via la ligne de commande Shell.

1.Installation du SDK Android sur Linux

1.1.Prérequis

1.1.1.Installation du JRE 1.6

Il faut installer le JRE 1.6, qui malheureusement n’est plus disponible par défaut sur Ubuntu, il faut donc le télécharger et l’installer manuellement :

sudo mkdir -p  /usr/lib/jvm/
cd Téléchargements
sudo cp jdk-6u29-linux-x64.bin  /usr/lib/jvm/
cd  /usr/lib/jvm/sudo
chmod +x jdk-6u29-linux-x64.bin
sudo ./jdk-6u29-linux-x64.bin

Il faut maintenant définir le JRE comme JVM par défaut.

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install update-java

Il faut maintenant lancer l’application et choisir la JVM d’Oracle.

sudo update-java

1.1.2.Téléchargement et installation du SDK Android

Il faut télécharger le SDK Android depuis le site google suivant : developer.android.com. Décompresser l’archive dans votre home directory et lancer l’outil android permettant de télécharger le SDK:

~/android-sdk-linux/tools/android

Cochez Tools et cliquez sur [Install 2 packages]

1.2.Post Installation du SDK Android

On va ajouter le répertoire contenantles outils adb et ddms au PATH

sudo gedit ~/.bashrc

Ajouter ces lignes à la fin de ce fichier :
export PATH=~/android-sdk-linux/tools:~/android-sdk-linux/platform-tools:$PATH

2.Les outils de SDK

Nous allons voir dans ce tuto deux outils essentiel ADB et ddms mais avant tout il faut paramétrer votre distribution Linux pour accéder à votre smartphone

2.1.Connexion de votre smartphone

Il faut dans un premier temps que votre smartphone ait le mode debug USB activé. Pour cela il faut se rendre dans le menu des paramètres systèmes -> Options pour les développeurs et cochez Débogage USB comme ci-dessous :

Ensuite il faut ajouter une ligne dans le fichier

sudo gedit /etc/udev/rules.d/51-android.rules

Ajoutez la ligne suivante en fonction du modèle de votre smartphone :

  • Google Nexus One
    SUBSYSTEM== »usb », SYSFS{idVendor}== »18d1″, SYSFS{idProduct}== »4e12″, MODE= »0666″
  • HTC Desire
    SUBSYSTEM== »usb », ATTRS{idVendor}== »0bb4″, ATTRS{idProduct}== »0c87″, MODE= »0666″
  • HTC Desire Z
    SUBSYSTEM== »usb », ATTRS{idVendor}== »0bb4″, ATTRS{idProduct}== »0c91″, MODE= »0666″
  • HTC Desire HD
    SUBSYSTEM== »usb », ATTRS{idVendor}== »0bb4″, ATTRS{idProduct}== »0c99″, MODE= »0666″
  • LG Optimus ONE (LG P500)
    SUBSYSTEM== »usb », SYSFS{idVendor}== »1004″, SYSFS{idProduct}== »618e », MODE= »0666″
  • Samsung Galaxy S (i9000)
    • Mode Kies : SUBSYSTEM== »usb », SYSFS{idVendor}== »04e8″, SYSFS{idProduct}== »6877″, MODE= »0666″
    • Mode Mass storage USB : SUBSYSTEM== »usb », SYSFS{idVendor}== »04e8″, SYSFS{idProduct}== »681d », MODE= »0666″
    • Dunno what this is but it is required for me : SUBSYSTEM== »usb », SYSFS{idVendor}== »04e8″, SYSFS{idProduct}== »681c », MODE= »0666″
    • Mode lecture Media (autodetecté par Linux comme mass storage par defaut) : SUBSYSTEM== »usb », SYSFS{idVendor}== »04e8″, SYSFS{idProduct}== »68a9″, MODE= »0666″
  • Sony Ericsson X10i
    SUBSYSTEMS== »usb », ATTRS{idVendor}== »0fce », ATTRS{idProduct}== »212e », MODE= »0666″
  • Sony Ericsson Kino/Neo (MT15i)
    SUBSYSTEMS== »usb », ATTRS{idVendor}== »0fce », ATTRS{idProduct}== »5156″, MODE= »0666″
  • Motorola Milestone ou Droid
    SUBSYSTEM== »usb », SYSFS{idVendor}== »22b8″, SYSFS{idProduct}== »41db », MODE= »0666″
  • Motorola Milestone XT720
  • SUBSYSTEM== »usb », SYSFS{idVendor}== »22b8″, SYSFS{idProduct}== »41da », MODE= »0666″
  • Pour les autres appareils Android il faut vous rendre sur cette liste  : www.linux-usb.org/usb.ids

Sauvegardez et relancez udev

sudo restart udev

Maintenant vous pouvez lancez la commande adb suivante qui permet de connectez votre smartphone au serveur ADB :

adb devices

Vous devriez voir appaitre ces lignes

* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
373415249B9600EC device

2.1.1. Votre smartphone n’est pas reconnu par ADB

Avec certains appareils, ll faut alors créer un fichier adb_usb.ini contenant l’identifiant USB du fabricant. Par exemple pour le Galaxy S, lancez la commande suivante :

echo "0x04e8" >> ~/.android/adb_usb.ini

Arrêter le serveur adb :

./adb kill-server

Enfin relancez la détection de l’appareil :

adb devices

Si vous ne voyez toujours pas 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 la configuration d’udev.

2.2 Les commandes ADB les plus utilisées

Après avoir vu adb devices permettant de connecter votre smartphone au serveur ADB et adb kill-server permettant de l’arrêter, nous allons voir les commandes les plus utiles :

2.2.1.Installation d’une application

Si vous possédez le fichier apk d’une application il est tout à fait possible de l’installer par la ligne de commande suivante :

adb install nom_du_fichier.apk

2.2.2.Envoie d’un fichier sur le smartphone

Pour pousser un fichier sur votre smartphone il faut simplement indiquer le nom du fichier source et destination. Si vous voulez poussez un fichier dans un répertoire il faut mettre un slash à la fin du nom du répertoire. En effet sous adb /sdcard est un fichier et /sdcard/ un répetoire.

adb push nom_du_fichier destination

2.2.3.Télécharger un fichier de votre smartphone

Pour récupérer un fichier de votre smartphone il faut au moins en connaître le nom via un gestionnaire de fichier sur votre smartphone, soit par le shell d’adb. par défaut si vous n’indiquez pas de destination le fichier est déposé dans le répertoire courant.

adb pull /sdcard/nom_du_fichier [destination]

2.2.4.Le mode Shell d’ADB

La commande shell permet soit de lancer des commandes systèmes unitaires directement à votre smartphone soit de rentrer dans le mode shell de celui-ci.

adb shell

Vous devriez voir ceci :
root@android:/ #

A partir de là vous pouvez lancer toutes les commandes qui se trouve dans le répertoire /system/bin/ de votre smartphone. Par défaut il exsite très peu de commandes il faut donc rooter son smartphone pour disposer de plus de commandes via la busybox. Busybox est le couteau suisse d’Android, car en un seul executable il contient un bonne partie des utilitaires Unix classiques. Son utilisation sera détaillé dans un prochain tuto.

Pour sortir de la console c’est simple :

exit

2.2.5.Modifier les droits d’écriture des filesystems

adb permet de modifier les droits d’écriture des Filsestems monté sur le smartphone :

adb remount

A partir de cet instant il est possible de réaliser des opérations sur les fichiers contenus sur les répertoires montés en lecture seul comme /system/

2.2.6.Backup et restore de votre smartphone

Apparu sur la dernière version d’Android, adb peut sauvegarder et de restaurer les données de votre smartphone.

adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] [<packages...>]

Pour backuper les données systèmes et les données des applications (donc pas les applications elles-mêmes) de votre smartphone il suffit de taper

adb backup -all

Vous pouvez indiquer un nom de fichier de backup ciblé, il suffit de taper :

adb backup -all -f data.ab

adb backup posséde d’autres modificateurs :

  • -apk – Sauvegarde de toutes les applications
  • -noapk – Ne sauvegarde aucune application
  • -shared – Sauvegarde le contenu de la carte SD
  • -noshared – Ne sauvegarde pas le contenu de la carte SD

Donc pour ajouter la sauvegarde de vos applications sans le contenu de la carte SD, il faut taper la commande suivante :

adb backup -apk -noshared -all -f backup201228.ab

Lorsque vous allez lancer cette commande sur votre smartphone l’écran suivant va apparaître qui permet de saisir un mot de passe pour protéger votre backup :

Attention ce backup est plutot long…. Donc pas de panique et paentitez !

Pour restorer votre backup il suffit de saisir la commande suivante :

adb restore  backup201228.ab

Comme pour la phase de backup un écran apparâit sur votre smartphone ou vous pouvez saisir votre mot de passe.