Boire ou coder ... Pourquoi choisir?
Publié le 10 mai 2010 22:00

Déployer une application Android

Cet article est la suite de l'article Premiers pas en programmation Android. Dans cet article, nous allons reprendre l'application que nous avions développé précédemment et construire le package approprié afin de l'installer sur le SDK (afin de la tester) et sur un vrai téléphone (afin de l'utiliser).

Si vous n'avez pas suivi l'article précédent, vous pouvez toujours récupérer l'application directement construite sur github.
Cependant ce n'est pas la méthode la plus didactique d'y arriver ;)

Signer vos applications

Android requiert de signer numériquement chaque application que vous désirez installer sur une machine. Le système utilise cette signature afin de vérifier qui est l'auteur de l'application et ainsi d'établir des liens de confiance entre vos diverses application. La signature n'est pas utilisée pour vérifier quelles applications l'utilisateur peut installer. Il est inutile de certifier cette signature par une autorité qualifiée. Il est parfaitement autorisé et très typique pour des applications d'utiliser des certificats auto signés.

Certains aspects des signatures pourront influencer sur la stratégie que vous adopter à ce niveau. Principalement si vous prévoyez de développer de multiples applications. La stratégie recommandée par Android est d'avoir une signature pour toutes vos applications, pour les raisons suivantes :

  • Mises à jour - Toutes les versions d'une même application doivent être signées avec le même certificat. Si le certificat est le même, le système mettra à jour l'application. Sinon, l'utilisateur installera une nouvelle application lorsqu'il tentera en fait simplement de faire une mise à jour.
  • Modularité - Le système vous permet de partager le même processus entre diverses applications utilisant la même signature si vous le désirez, de manière à ce qu'elles soient considérées comme une seule application. De cette manière vous pouvez créer des applications modulaires ou chaque utilisateur pourra installer uniquement la ou les parties qu'il désire.

Une autre chose importante lorsque vous créerez votre signature est la période de validité de celle-ci. En effet, dès que la clé arrive à expiration, vos utilisateurs ne seront plus en mesure de mettre à jour leur application vers de nouvelles versions.

Par ailleurs si vous prévoyez de publier votre application sur Android Market, la clé que vous donnerez devra expirer après le 22 octobre 2033.

Construction en développement et exécution dans le SDK

Si vous avez construit votre projet de manière "normale", en utilisant la commande android create project alors, un fichier local.properties existe à la base de celui-ci. Si vous avez fait un git clone de mon projet sur GitHub alors ce fichier n'existe pas, vous devez le créer.

Ce fichier doit contenir le chemin vers le SDK android sur votre disque. Sur ma machine actuelle (Gentoo), le contenu de ce fichier est donc :

sdk.dir=/home/damien/android-sdk-linux
Si il n'existe pas, créez ce fichier avec le chemin approprié.

Puis construisons le package de l'application. Pour cela, nous allons utiliser ant. Ce projet, soutenu par la fondation Apache est un utilitaire permettant de construire des paquets java.

Construisons le paquet pour un environnement de dev. En console, tapez :

ant debug

Le rendu console devrait finir de la manière suivante.

(master) damien@pcdamien ~/projects/translator $ ant debug</p>

<p>BUILD SUCCESSFUL
Total time: 3 seconds
Si vous avez BUILD SUCCESSFUL à la fin, c'est que votre projet a correctement été construit.

Maintenant exécutons la machine virtuelle et installons l'application sur le téléphone. Dans l'article précédent, nous avons installé la SDK android. Créons un nouveau téléphone virtuel.

android create avd -n translator -t android-7
Nous créons une nouvelle machine virtuelle que nous nommons "translator" et qui va tourner sous le "target" android-7, ce qui équivant à Android 2.1.

Puis exécutons cette machine virtuelle.

emulator -avd translator &

Vous devez maintenant voir une fenêtre contenant un téléphone se lancer. Laissez le s'exécuter, cela peut prendre une à deux minutes. Une fois que cela est fait, débloquez le. La machine virtuelle est lancée !

Et elle est reliée virtuellement en USB à votre machine. Vous pouvez donc y accéder à distance. C'est ce que nous allons faire pour installer l'application.

adb install bin/translator-debug.apk

Cette commande se connectera au téléphone virtuel et installera votre application dessus. Le rendu console doit être le suivant :

2216 KB/s (34777 bytes in 0.015s)
	pkg: /data/local/tmp/translator-debug.apk
Success

Si, en revanche, vous avez le rendu suivant :

error: device offline
Essayez de manipuler un petit peu le téléphone (ouvrez le menu par exemple). Il n'a pas été détecté comme étant actif.

Votre application est maintenant installée. Rendez-vous dans le menu du téléphone, vous verrez son icone apparaitre.

Construction en production et installation sur un téléphone

Afin de construire notre application de manière à pouvoir la releaser sur un téléphone ou sur l'Android Market, nous devons créer la signature numérique donc nous avons parlé dans la première partie. Pour cela, java nous propose un outil en ligne de commande permettant de gérer ces signatures. Il s'agit de keytool.

Voici comment j'ai généré ma propre clé :

keytool -genkey -v -keystore dmathieu.keystore -alias dmathieu -keyalg RSA -validity 10000

Les paramètres passés sont les suivants :

  • -genkey - Indique qu'il faut générer une paire de clés (privées et publiques).
  • -v - Active le rendu console complet lors de la génération de la clé
  • -keystore dmathieu.keystore -
  • -storepass <password> - Le mot de passe du "keystore". Evitez de le transmettre de cette manière. Si vous ne renseignez rien ici, le mot de passe vous sera demandé lors de la génération de la clé.
  • -alias dmathieu - Un alias pour la clé. Seuls les 8 premiers caractères sont pris en compte.
  • -keyalg RSA - L'algorithme d'encryption de la clé. Les algorithmes disponibles sont RSA et DSA.
  • -dname <dname> - Un nom décrivant qui a créé la clé.
  • -validity 10000 - Le nombre de jours de validité de la clé.
  • -keypass <password> - Le mot de passe de votre clé. Evitez de le transmettre de cette manière. Si vous ne renseignez rien ici, le mot de passe vous sera demandé lors de la génération de la clé.
En exécutant cette commande, un fichier dmathieu.keystore est créé. Il contient votre clé. Sauvegardez la dans un endroit ou vous êtes sur qu'elle ne sera pas perdue mais ou elle restera en sécurité (personnelement, je l'ai stockée dans Google Docs).

Dans votre projet, ouvrez maintenant le fichier build.properties. Dans ce fichier, nous devons préciser le chemin vers votre keystore ainsi que l'alias de la clé.

key.store=/home/damien/projects/dmathieu.keystore
key.alias=dmathieu
Nous pouvons maintenant construire notre application pour une release avec la clé que nous venons de créer.

En ligne de commande, utilisons ant pour construire notre application en release.

ant release

Ceci fait plusieurs choses :

  • Votre application est construite, comme lors d'un ant debug.
  • Votre certificat est ajouté à l'application, de manière à l'authentifier.
  • Le package est optimisé, afin d'en optimiser les performances.

Votre projet a correctement été construit et est prêt à être installé sur votre téléphone. Il est disponible en bin/translator-release.apk. Vous n'avez plus qu'à brancher votre téléphone en USB et installer l'application dessus. Ou encore publier celle-ci sur l'Android Market !

Essayez par vous même vous rendant sur l'Android Market puis en cherchant l'application Translator et en l'installant. C'est l'application que nous avons développé lors de ces articles.

Conclusion

Nous avons, dans ces deux premiers articles sur Android, vu comment développer une application, la tester et l'installer sur un téléphone. Nous sommes cependant très loin d'avoir fait le tour du développement d'applications Android. Nous pourrions par exemple ajouter un widget à notre application. Et de multiples autres choses !

Si vous désirez aller plus loin, je ne peux que vous conseiller trois ressources :

  • l'Android Developer Guide - La documentation officielle en ligne.
  • Hello, Android chez PragProg - Un livre disponible au format PDF (la version finale papier devrait arriver en juillet). Uniquement en Anglais. Je l'ai acheté et vous le recommande vivement.
  • Programmation Android chez Eyrolles - sorti il y a une semaine.

A vous de jouer maintenant ! Quelles applications ces deux articles vous ont-ils poussé à développer ?

Commentaires

creatix
creatix dit: 10 mai 2010 22:00

Il existe aussi un dvd de formation assez bien fait pour android : http://www.video2brain.com/fr/products-149.htm Sinon pour ma part j'ai bien aimer les deux articles et le dev android m'intéresse de plus en plus. Le sdk laisse beaucoup de liberté, plus que l'iPhone par exemple.

®om
®om dit: 01 septembre 2011 20:33 Site web

2 petites questions.

Tout d'abord, à quoi sert précisément l'alias (pourquoi le keystore ne suffit-il pas) ? Car du coup il y a 2 mots de passe à donner.

Ensuite, quand on a généré le keystore et ajouté son chemin dans build.properties, quand on exécute ant release il demande les mots de passe. Le problème, c'est que quand on le renseigne, il s'écrit en clair dans la console :

-release-prompt-for-password:
    [input] Please enter keystore password (store:~/rom.keystore):
monmotdepasse
    [input] Please enter password for alias 'rom':
monmotdepasse

Une idée pour éviter ça ?

Débutant
Débutant dit: 05 octobre 2011 08:03

Bonjour et merci pour ce tuto.

Est-il possible de distribuer un ".exe" sans passer par le android Market?

Je crois que chez Mac ce n'est pas possible.

Postez un commentaire

Markdown activé