Home » Elève ingénieur, Logiciel libre

Dissection du gPhone : Android

14 novembre 2007 2 Comments

Nombreux sont les blogs qui ont parlé de la sortie d’Android, mais peu de blogs francophones ont réellement décrit en détail ce système.

Commençons par les généralités.

Android est un système d’exploitation édité par Google. Il s’agit en fait d’une distribution GNU/Linux spécialisée dans la téléphonie mobile. Ce produit répond à un profond manque dans le domaine des systèmes d’exploitations pour téléphones. En effet, aujourd’hui, le secteur compte 4 acteurs :

  • Windows CE, dont l’ergonomie est particulièrement désagréable (menu “démarrer” qui n’a pas sa place sur un téléphone)
  • Symbian, qui rame pour afficher un SMS …
  • Mac OS, réservé à l’iPhone
  • GNU/Linux, dont l’usage est anecdotique, plutôt brouillon et surtout dont il n’existe pas de distribution faisant l’unanimité

Google répond donc aux attentes du marché en proposant un système GNU/Linux fiable, rapide et ergonomique, tout en lui donnant dès le départ une image de marque qui va permettre à ce système de ne pas rentrer dans la catégorie “anecdotique”.

Ce système d’exploitation est livré avec un kit de développement et un framework qui permettent à n’importe quel développeur de créer facilement sa propre application (en Java) avec l’assurance de la voir fonctionner sur n’importe quel téléphone équipé d’Android.

Beaucoup de gens estiment que Google se repose du coup sur la communauté pour finir le travail. Ce n’est pas complètement faux, mais il ne faut pas oublier que Google donne aussi énormément à la communauté. En effet, l’intégralité d’Android est libre et peut donc être utilisé, modifié et redistribué librement.

L’ergonomie d’Android n’atteint pas le niveau de Mac Os sur l’iPhone, mais nous n’en sommes qu’à une version destinée aux développeurs. Il est donc fort possible que les premiers téléphones équipés d’Android ne ressemblent pas à l’interface actuelle que voici :

android gphone interface home

Et au téléphone :

android gphone interface téléphone

Passons maintenant aux caractéristiques techniques d’Android et de son kit de développement que je vais donner plus ou moins en vrac.

L’architecture du système :

android gphone architecture

La version du noyau est 2.6.23. L’émulateur proposé est un ARM9 (du grand classique …) de chez ARM.

Pour accéder à la console d’Android, il faut ouvrir un terminal, aller dans le répertoire du kit de développement, puis aller dans le dossier tools. Ensuite, lancer l’émulateur :

emulator -console

Puis dans un autre terminal :

adb shell

Si vous voulez télécharger des fichiers du ou vers le téléphone :

adb push <source> <dest>

et

adb pull <source> <dest>

Le système de fichier utilisé semble être yaffs et il y a apparamment de quoi faire un serveur NFS car Android embarque knfsd.

Liste des applications installées par défaut :

 -rw-rr root     root       418687 2007-11-11 20:59 Browser.apk -rw-rr root     root        68076 2007-11-11 20:59 Contacts.apk -rw-rr root     root        25518 2007-11-11 20:59 ContactsProvider.apk -rw-rr root     root        96286 2007-11-11 20:59 Development.apk -rw-rr root     root         8636 2007-11-11 20:59 Fallback.apk -rw-rr root     root        44789 2007-11-11 20:59 GoogleApps.apk -rw-rr root     root         7543 2007-11-11 20:59 GoogleAppsProvider.apk -rw-rr root     root        99430 2007-11-11 20:59 Home.apk -rw-rr root     root        16197 2007-11-11 20:59 ImProvider.apk -rw-rr root     root       171613 2007-11-11 20:59 Maps.apk -rw-rr root     root        20307 2007-11-11 20:59 MediaProvider.apk -rw-rr root     root       424600 2007-11-11 20:59 Phone.apk -rw-rr root     root        11808 2007-11-11 20:59 SettingsProvider.apk -rw-rr root     root        21271 2007-11-11 20:59 TelephonyProvider.apk -rw-rr root     root       192118 2007-11-11 20:59 XmppService.apk -rw-rr root     root         6613 2007-11-11 20:59 XmppSettings.apk

Liste des commandes (/system/bin) :

-rwxr-xr-x root     root         4280 2007-11-11 20:57 AudioHardwareRecord -rwxr-xr-x root     root         4152 2007-11-11 20:57 AudioInRecord -rwxr-xr-x root     root         4672 2007-11-11 20:57 RecursiveMutexTest -rwxr-xr-x root     root        20932 2007-11-11 20:57 SRecTest -rwxr-xr-x root     root        20408 2007-11-11 20:57 SRecTestAudio -rwxr-xr-x root     root         4860 2007-11-11 20:57 UAPI_PortabilityTest -rwxr-xr-x root     root        12420 2007-11-11 20:57 UAPI_SrecTest -rwxr-xr-x root     root        29560 2007-11-11 20:57 UAPI_test -rwxr-xr-x root     root          196 2007-11-11 20:46 am -rwxr-xr-x root     root         5124 2007-11-11 20:57 app_process lrwxr-xr-x root     root              2007-11-11 20:57 cat -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 chmod -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 cmp -> toolbox -rwxr-xr-x root     root         3912 2007-11-11 20:57 crasher -rwxr-xr-x root     root         4892 2007-11-11 20:57 dalvikvm lrwxr-xr-x root     root              2007-11-11 20:57 date -> toolbox -rwxr-xr-x root     root       118096 2007-11-11 20:57 dbus-daemon lrwxr-xr-x root     root              2007-11-11 20:57 dd -> toolbox -rwxr-xr-x root     root         9264 2007-11-11 20:57 debuggerd -rwxr-xr-x root     root        17416 2007-11-11 20:57 dexdump -rwxr-xr-x root     root         3944 2007-11-11 20:57 dexopt lrwxr-xr-x root     root              2007-11-11 20:57 df -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 dmesg -> toolbox -rwxr-xr-x root     root        73748 2007-11-11 20:57 drm1_unit_test -rwxr-xr-x root     root        85608 2007-11-11 20:57 drm2_unit_test -rwxr-xr-x root     root         1240 2007-11-11 20:46 dumpstate -rwxr-xr-x root     root         6808 2007-11-11 20:57 dumpsys lrwxr-xr-x root     root              2007-11-11 20:57 exists -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 getevent -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 getprop -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 hd -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 ifconfig -> toolbox -rwxr-xr-x root     root          208 2007-11-11 20:46 input lrwxr-xr-x root     root              2007-11-11 20:57 insmod -> toolbox -rwxr-xr-x root     root         6696 2007-11-11 20:57 install_boot_image lrwxr-xr-x root     root              2007-11-11 20:57 ioctl -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 kill -> toolbox -rwxr-xr-x root     root        81236 2007-11-11 20:57 linker lrwxr-xr-x root     root              2007-11-11 20:57 ln -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 log -> toolbox -rwxr-xr-x root     root         8772 2007-11-11 20:57 logcat lrwxr-xr-x root     root              2007-11-11 20:57 ls -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 lsmod -> toolbox -rwxr-xr-x root     root         7596 2007-11-11 20:57 mem_profiler lrwxr-xr-x root     root              2007-11-11 20:57 mkdir -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 mkdosfs -> toolbox -rwxr-xr-x root     root          212 2007-11-11 20:46 monkey lrwxr-xr-x root     root              2007-11-11 20:57 mount -> toolbox -rwxr-xr-x root     root         2888 2007-11-11 20:57 mtptest -rwxr-xr-x root     root         8640 2007-11-11 20:57 netcfg lrwxr-xr-x root     root              2007-11-11 20:57 netstat -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 notify -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 ping -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 powerd -> toolbox -rwxr-xr-x root     root       144356 2007-11-11 20:57 pppd lrwxr-xr-x root     root              2007-11-11 20:57 printenv -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 ps -> toolbox -rwxr-xr-x root     root         8724 2007-11-11 20:58 pv lrwxr-xr-x root     root              2007-11-11 20:57 r -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 readtty -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 reboot -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 renice -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 resetradio -> toolbox -rwxr-xr-x root     root         4116 2007-11-11 20:57 rild lrwxr-xr-x root     root              2007-11-11 20:57 rm -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 rmdir -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 rmmod -> toolbox -rwxr-xr-x root     root         1027 2007-11-11 20:47 ro.xml -rwxr-xr-x root     root         1782 2007-11-11 20:47 ro2.xml -rwxr-xr-x root     root           98 2007-11-11 20:47 roerror.xml lrwxr-xr-x root     root              2007-11-11 20:57 rotatefb -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 route -> toolbox -rwxr-xr-x root     root        45484 2007-11-11 20:57 runtime -rwxr-xr-x root     root         4572 2007-11-11 20:57 sdutil lrwxr-xr-x root     root              2007-11-11 20:57 sendevent -> toolbox -rwxr-xr-x root     root         6148 2007-11-11 20:57 service lrwxr-xr-x root     root              2007-11-11 20:57 setconsole -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 setkey -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 setprop -> toolbox -rwxr-xr-x root     root        90344 2007-11-11 20:57 sh -rwxr-xr-x root     root         5116 2007-11-11 20:57 showmap -rwxr-xr-x root     root         7524 2007-11-11 20:57 showslab lrwxr-xr-x root     root              2007-11-11 20:57 sleep -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 smd -> toolbox -rwxr-xr-x root     root        25944 2007-11-11 20:57 sqlite3 -rwxr-xr-x root     root          411 2007-11-11 20:47 ssltest lrwxr-xr-x root     root              2007-11-11 20:57 start -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 stop -> toolbox -rwsr-sr-x root     root        72436 2007-11-11 20:57 su lrwxr-xr-x root     root              2007-11-11 20:57 sync -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 syren -> toolbox -rwxr-xr-x root     root         2772 2007-11-11 20:57 system_server -rwxr-xr-x root     root        88052 2007-11-11 20:57 toolbox lrwxr-xr-x root     root              2007-11-11 20:57 umount -> toolbox -rwxr-xr-x root     root        16612 2007-11-11 20:57 usbd lrwxr-xr-x root     root              2007-11-11 20:57 watchprops -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 webgrab -> toolbox lrwxr-xr-x root     root              2007-11-11 20:57 wipe -> toolbox

2 Comments »

  • madprog said:

    Tu es sûr qu’il s’agit de la version 2.5.23 de Linux ? parce qu’il me semble que les versions impaires (deuxième chiffre) sont "en développement". Ça m’étonnerait que Google utilise une version de Linux en développement, quand même…

  • cr0vax said:

    Quelle erreur !

    C’est la version 2.6.23 bien sûr ! Je corrige tout de suite

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.