1. Construire et déployer votre application

La construction et le déploiement de l'application peuvent se faire en ligne de commande, nous expliquons ici comment le faire en utilisant Eclipse.

Avant tout, il faut que vous définissiez l'emplacement d'un KeyStore dans votre espace de travail (votre ordinateur ou sur votre réseau). Ce KeyStore servira à centraliser l'ensemble de vos clefs pour signer vos applications. Vous devez vous assurer de la sécurisation de ce dossier et de sa persistance. En effet, un tiers ne doit pas pouvoir vous voler vos clefs car il serait en mesure d'utiliser la même signature que vous et pirater vos applications (pour mettre un malware par exemple). Ensuite, vous devez toujours être capable de resigner votre application, notamment dans le cas où celle-ci évolue. En effet, si la version 1 et la version 2 de votre application ne sont pas signées avec la même clef, l'utilisateur ne pourra pas faire d'update de la version 1 et sera obligé d'installer la version 2 comme si celle-ci était une nouvelle application.

Le KeyStore possède un mot de passe que vous devez conserver aussi précieusement que le KeyStore lui-même.

1-1. Signer son application

Au moyen d'Eclipse, rien de plus simple : Clic droit sur votre projet Android -> Android Tool -> Export Signed Application Package.

La première fenêtre du wizard vérifie que votre projet ne comporte pas d'erreur, cliquez sur next.

La seconde fenêtre, vous demande où se trouve votre KeyStore, si vous n'en avez pas encore, définissez le dossier qui vous servira à stocker vos clefs, sinon retrouvez votre KeyStore et remplissez le champ mot de passe.

La troisième fenêtre, elle vous permet de créer une clef. Une clef possède les informations suivantes :

  • Alias : un alias vers la clef, son petit nom. Seuls les huit premiers caractères sont utilisés ;
  • Password : le mot de passe associé à cette clef ;
  • Confirm : le mot de passe associé à cette clef ;
  • Validity (years): la validité (Android préconise au moins 25, vous pouvez mettre un siècle) ;
  • First and Last Name : votre nom et prénom (ou le nom de votre équipe) ;
  • Organizational Unit : le service de votre entreprise qui a développé l'application ;
  • Organization : le nom de votre entreprise ;
  • City or locality : votre ville ;
  • State or Province : votre état, votre région, votre département ;
  • Country code : le code de votre pays, celui-ci est le même que celui utilisé pour l'internationalisation (US pour USA, FR pour France, UK pour Angleterre).

La dernière fenêtre vous demande où le fichier apk doit être enregistré.

1-1-1. Créer son KeyStore en ligne de commande

Cette méthode est à utiliser uniquement si vous n'avez pas Eclipse sur votre machine.

Pour créer votre KeyStore en ligne de commande en utilisant la commande keytool (dans votre JAVA_HOME/bin) et la tâche genkeypair :

-genkeypair [-v] [-protected]

[-alias <alias>]

[-keyalg <keyalg>] [-keysize <taille_clé>]

[-sigalg <sigalg>] [-dname <nomd>]

[-validity <joursVal>] [-keypass <mot_passe_clé>]

[-keystore <keystore>] [-storepass <mot_passe_store>]

[-storetype <storetype>] [-providername <name>]

[-providerclass <provider_class_name> [-providerarg <arg>]] ...

[-providerpath <pathlist>]

Ce qui donne :

 
Sélectionnez
keytool -genkeypair -v  -keystore myReleaseKeystorePath.jks -storepass myKeystorePassword -alias myKey -keypass myKeyPassWord -keyalg RSA -validity 36500
 

Où :

  • myReleaseKeyStorePath est le chemin complet de votre KeyStore (/home/myStores/myKeyStore.jks) ;
  • myKeystorePassword est le mot de passe de votre KeyStore ;
  • myKey est le nom de votre clef et
  • myKeyPassWord est le mot de passe de cette clef.

Le système vous posera une suite de questions : nom, prénom, organisation...

1-2. Déployer son application

Pour déployer votre application, vous pouvez utiliser l'un des marchands suivants.

1-2-1. Android Market

http://market.android.com/publish/signup

Il vous suffira de payer 25 $ et vous pourrez déployer vos applications sur l'Android Market.

1-2-2. YAMM (Yet Another Android Market)

http://yaam.mobi/why.php

Pas de paiement pour le développeur, l'enregistrement est gratuit.

1-2-3. Slideme

http://slideme.org/developers

Leur credo : « Si l'Android Market a refusé votre application, venez chez nous ».

1-2-4. Appoke

http://appoke.com/info/developers

S'appuie sur la notion de réseau social pour que votre application soit visible le plus vite possible.

1-2-5. Déployer l'application au sein de l'entreprise

Cette dernière manière de déployer correspond à la problématique du déploiement au sein d'une entreprise sur un ensemble restreint d'appareils.

L'idée est simple, il faut pouvoir télécharger l'application puis l'installer. Pour télécharger l'application, il suffit de mettre en place une servlet sécurisée (user et password) qui permet de télécharger le fichier apk sur l'appareil cible. Pour installer l'application, vous trouverez sur l'Android Market une application nommée « Apps Installer » qui lance l'installation d'un fichier apk enregistré sur la carte SD. Il vous suffit d'utiliser cette application pour réaliser vos installations.

Pour autoriser ce genre d'installation, il faut que l'appareil cible autorise l'installation d'application non issue du marché. Pour modifier ce paramètre : Menu->Setting->Applications-> Sélectionnez « Unknown Sources ».

Enfin, si vous souhaitez avoir un programme qui automatiquement télécharge et installe la nouvelle version de votre application sur les appareils, l'article suivant dresse les grandes lignes de la mise en place d'un tel service : http://blog.excilys.com/2009/12/07/android-pour-lentreprise-3-deploiement-hors-market/.

1-3. Retrouver sa clef pour MapView

Tout d'abord, vous devez avoir en tête que votre application possède deux clefs, l'une pour le développement, l'autre pour la production.

Nous avons vu pour la production où se trouve cette clef. Elle est contenue dans votre keystore.

Pour le développement, votre KeyStore se trouve :

  • Pour Windows Vista et 7 sous \Users\<user>\.android\debug.keystore ;
  • Pour Windows XP sous \Documents and Setting\<user>\.android\debug.keystore ;
  • Pour linux ou Mac sous ~/.android/debug.keystore.

Ensuite, il vous faut, à partir de cette clef, retrouver l'empreinte MD5 associée. Cela se fait par ligne de commande.

Dans le cas de votre clef de production, il faut taper :

 
Sélectionnez
$ keytool -list -alias alias_name -keystore my-release-key.keystore

alias_name est l'alias que vous avez donné pour signer votre application et my-release-key.keystore est le chemin vers votre KeyStore.

Dans le cas de votre clef de développement, il faut taper :

 
Sélectionnez
$keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android -keypass android

Il est important de savoir que l'outil keytool est un outil Java, s'il ne s'exécute pas en ligne de commande, il faut vous déplacer dans le répertoire <JDK>\bin et ré-exécuter la commande (le mien se trouve sous C:\Program Files\Java\jdk1.6.0_18\bin) où <JDK> est le répertoire où vous avez installé votre JDK.

Ce qui donne sur mon poste (eh oui je suis sous Seven) :

 
Sélectionnez
C:\Program Files\Java\jdk1.6.0_18\bin>keytool -list -alias androiddebugkey -keystore 
C:\Users\mathias1\.android\debug.keystore -storepass android -keypass android
androiddebugkey, 25 nov. 2010, PrivateKeyEntry,
Empreinte du certificat (MD5) : 5B:A4:EE:FD:D8:88:CC:98:83:88:B9:81:72:C3:F3:7B

Une fois muni de votre empreinte MD5, allez vous inscrire pour obtenir votre clef auprès de Google : http://code.google.com/intl/fr/android/maps-api-signup.html

Qui me donne une clef du type : 04Lug61_seB50108nRCRX1hjzGs95Pk86niGvow

Il ne vous reste plus qu'à mettre à jour votre layout.xml dans lequel vous déclarez votre objet MapView avec cette clef (à la place de myapikey) comme ci-dessous :

 
Sélectionnez
<com.google.android.maps.MapView
    android:id="@+id/map_view"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:enabled="true"
    android:clickable="true"
    android:apiKey="myapikey"
  />
 

2. Conclusion

Vous devez être capable de signer vos applications pour qu'elles soient acceptées sur les différents marchés Android. Avoir une clef qui marche pour vos applications déployées et avoir enfin compris pourquoi vos applications qui utilisent MapView marchent en mode développement mais pas en production (eh oui, c'était la clef de signature pour l'API).

3. Liens

4. Contact

Mathias Séguy

mathias.seguy@stinfoservices.net

Auteur Android2EE

Docteur en Mathématiques Fondamentales

Directeur Technique & Avant-vente

ST Informatique Services

Expert Technique de l'Agence Nationale de la Recherche

Rédacteur sur Developpez.com

Android2ee

Android 2EE la programmation sous Android

5. Android2EE vous présente l'Ebook de programmation Android

Le nouveau système d'exploitation de Google pour les téléphones portables et les nouvelles tablettes est là. Sa réputation est solide, il envahit le monde de la téléphonie, il est ouvert et offre des outils de développement Java au monde des programmeurs. Il ouvre les portes du développement mobile à tous les développeurs objets avec un coût minime pour la montée en compétence. Une seule question se pose :

Êtes-vous prêts ?

L'objectif de ces livres est très clair : vous permettre en un temps record d'être autonome en programmation Android. Si vous êtes un programmeur Java (débutant ou confirmé), le but est que vous soyez autonomes en moins de dix jours. C'est cet objectif qui est à l'origine de ce livre, permettre aux collaborateurs de mon entreprise de monter en compétence sur cette technologie avec rapidité et efficience. Vous serez alors à même de concevoir une application, de l'implémenter, de la tester, de l'internationaliser et de la livrer à votre client.

Lancez-vous dans la programmation Android et faites-vous plaisir !

Vous serez aussi capable de connaître et comprendre quelles sont les considérations à avoir lorsque l'on a à charge une application Android en tant que professionnel de l'informatique. Quelle est la stratégie de tests à utiliser ? Comment signer son application ? Comment la déployer ? Comment mettre en place la gestion du cycle de vie de l'application ? Comment implémenter l'intégration continue ?

Soyez efficient dans l'encadrement de vos projets Android d'entreprise.

6. Remerciements

J'adresse ici tous mes remerciements à Djug pour son aide et ses déploiements et à ClaudeLELOUP pour l'excellence de ses corrections orthographiques.

Je remercie spécialement Monsieur Adam Daniel, DRH de développez.com, pour ses mails nocturnes, ses encouragements et son aide qui m'est précieuse.

De même je remercie la société ST Informatique services pour m'avoir permis d'écrire les livres « Android A Complete Course, From Basics To Enterprise Edition(fr) », « Android, A Quick Course(fr) » et « Android, an Enterprise Vision (fr) ».

Je remercie le site android2ee.com de me publier.