Ludovic ROLAND - Le blog

Blog technique sur mes expériences de développeur

Intégrer et utiliser une carte google dans une application android (2/7) : création d'une clef google maps android api v2

| Comments

Grâce au chapitre précédent, vos outils de développement ont normalement été à jour, mais ce n’est pas pour autant que nous allons commencer à développer tout de suite. Il va falloir que vous soyez patients et attendre le prochain chapitre.

Dans ce chapitre, nous allons nous occuper de la partie “administrative” de notre projet. En effet, nous allons déclarer notre application auprès de Google afin que l’on ait l’autorisation d’afficher une carte Google au sein de notre application Android.

L’intégralité de ce chapitre se passe sur internet et plus précisément dans la console développeur de Google.

Plan

Création d’un projet Google

Comme je vous le disais dans l’introduction de ce chapitre, rendez-vous dans console développeur de Google. Cette interface d’administration vous permet de configurer l’utilisation des services proposés par Google au sein de vos applications, qu’il s’agisse d’une application web, Android ou iOS.

Les services proposés par Google sont nombreux, on peut par exemple citer :

  • Google Direction API qui permet le calcul d’itinéraires entre deux points.
  • Translate API qui permet d’intéragir avec Google Translate.
  • Gmail API qui permet d’accéder aux e-mails.
  • etc.

Au total, c’est plus de 50 APIs que Google propose, vous permettant d’intéragir et intégrer leurs services au sein de vos applications mobiles et sites web.

Pour intégrer une carte Google et utiliser le service Google Maps Android API v2 dans notre applications Android, nous allons devoir l’activer. Mais avant ça, il convient de créer un nouveau projet.

La création d’un nouveau projet est très simple puisque sur l’écran d’accueil de la console développeur Google, il suffit de cliquer sur le bouton “Créer un projet”.

Un formulaire s’ouvre alors vous demandant de renseigner le nom du projet ainsi qu’un identifiant (que Google peut générer aléatoirement). Une fois le formulaire rempli, cliquez sur le bouton “Créer”.

Après quelques secondes d’attente correspondant au temps nécessaire à Google pour créer ce nouveau projet, vous devriez automatiquement être redirigé sur le tableau de bord de votre projet. C’est à partir de celui-ci que nous allons pouvoir configurer les différents services sue notre application Android utilisera.

Activation du service Google Maps Android API v2

Pour afficher une carte Google dans une application Android, nous avons besoin d’activer un seul service : Google Maps Android API v2. Pour l’activer, rendez-vous dans la section du tableau de bord dédiée aux APIs en cliquant sur “Activer et gérer les API” au centre de l’écran.

Plusieurs APIs peuvent être activées par défaut. Malheureusement, celle qui nous intéresse ne l’est pas. Il convient donc de la chercher dans la liste puis de cliquer dessus.

Une fois dans le détail de l’API, il convient de l’activer en cliquant sur le bouton “Activer l’API”.

Une fois le service activé, un message devrait vous inviter à créer un identifiant comme en témoigne la capture d’écran ci-dessous. Cliquez sur “Accéder à “Identifiants” pour passer à la suite.

Configuration du service Google Maps Android API v2

Création de la clef

Maintenant que le service Google Maps Android API v2 est activé, nous allons le configurer pour qu’il soit utilisable dans nos applications. La configuration du service correspond en réalité à la création d’une clef, que l’on renseignera dans notre application Android, nous permettant alors d’associer l’application mobile au projet de la console développeur. Suite à cette association, nous serons alors en mesure, dans la suite de ce tutoriel d’afficher une carte Google dans notre application.

Pour lancer la création de la clef, depuis l’écran vers lequel nous avons été redirigé lors de la précédente étape, nous allons reconfirmer que c’est bien une l’API “Google Maps Android” que nous souhaitons utiliser et nous allons également préciser que c’est depuis une application Android que l’API va être utilisée (logique !).

Terminez cette étape en cliquant sur le bouton “De quels identifiants ai-je besoin ?”

Après avoir cliqué sur le bouton, un nouveau formulaire devrait s’afficher vous demandant :

  • de choisir un nom à votre clé d’API ;
  • d’ajouter un nom de package ainsi qu’une empreinte.

Cliquez sur le bouton “+ Ajouter nom du package et empreinte” pour afficher le reste du formulaire.

Récupération des informations nécessaires à la création de la clef

Comme c’est écrit juste au dessus, deux informations sont nécessaires :

  • l’empreinte de certificat SHA1 ;
  • le nom de package de l’application.

L’empreinte de certificat SHA1 ? C’est quoi ce truc barbare ?

Ne vous inquiétez pas, je vais tout vous expliquer… enfin Wikipedia va m’aider un peu !

SHA-1 (Secure Hash Algorithm) est une fonction de hachage cryptographique […]. Elle produit un résultat appelé « hash » […].

Une fonction de hachage cryptographique… Super…

Ne baissons pas les bras et regardons la définition que nous propose Wikipedia.

On nomme fonction de hachage une fonction particulière qui, à partir d’une donnée fournie en entrée, calcule une empreinte servant à identifier rapidement, bien qu’incomplètement, la donnée initiale. Les fonctions de hachage sont utilisées en informatique et en cryptographie.

Pour faire très simple, une fonction de hachage est une fonction qui à partir d’une entrée va nous donner une sortie que l’on appelle une empreinte. Ces fonctions de hachage, bien que vous ne les utilisiez pas nécessairement, sont très utilisées par les sites internet que vous utilisez afin de par exemple stocker vos mots de passes.

Imaginons que sur un site internet quelconque, votre mot de passe soit “toto”. Votre mot de passe va être stocké dans une base de données pour que le site puisse vous identifier à chaque fois que vous vous connectez via la saisie de vos identifiants. La problème, c’est que si votre mot de passe est stocké en clair dans la base de données, c’est-à-dire sous la forme textuelle “toto”, cela pose un véritable problème de sécurité. Si demain des personnes mal attentionnées arrivent à récupérer les informations de la base de données, ils bénéficient d’un accès direct à vos identifiants qui seront peut-être utilisables sur d’autres sites internet. Pour ajouter une couche de sécurité, on ne stocke généralement pas le mot de passe en clair, mais une empreinte de celui-ci. Pour créer cette empreinte, il est possible d’utiliser plusieurs fonctions de hachage comme par exemple MD5, SHA1 ou encore SHA256.

Voyons les empreintes du mot de passe “toto” avec ces différentes fonctions de hachage :

MD5
f71dbe52628a3f83a77ab494817525c6
SHA1
0b9c2625dc21ef05f6ad4ddf47c5f203837aa32c
SHA256
31f7a65e315586ac198bd798b6629ce4903d0899476d5741a9f32e2e521b6a66

Bien que ces empreintes puissent vous sembler être une séquence aléatoire de nombres et de lettres, sachez que pour une entrée donnée, la sortie sera toujours la même.

Dans mon exemple, j’ai appliqué les fonctions de hachage à la chaine de caractères “toto”, mais le cadre de la génération de notre empreinte, nous allons appliquer la fonction de hachage SHA1 au certificat qui va signer votre application, c’est-à-dire votre keystore.

Pour connaître l’empreinte de certificat SHA1, il convient d’ouvrir un terminal ou l’invite de commandes en fonction de votre système d’exploitation et d’y saisir la commande suivante :

1
keytool -list -v -keystore "ma_clef.keystore" -alias mon_alias

Dans la commande ci-dessus, il convient bien évidemment de remplacer les valeurs “ma_clef.keystore” par le chemin complet vers votre certificat et “mon_alias” par l’alias utilisé par votre application.

Par exemple, dans le cas de la clef de debug fournie par le SDK Android, la commande est la suivante :

1
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey

Il vous sera alors demandé de saisir le mot de passe associé à votre certificat. Dans le cas de la clef de debug, le mot de passe est “android”. Plusieurs informations devrait alors s’afficher à l’écran, dont les fameuses empreintes de certificat :

Comme vous pouvez le constater, l’empreintes du certificat SHA1 figure bien dans la liste. Nous venons donc de trouver la première information nécessaire à la création de notre clef. La seconde information nécessaire à la création de la clef est le nom de package de l’application. Je ne vais malheureusement pas pouvoir vous aider puisque c’est vous qui avez décidé de son intitulé.

Si vous ne vous rappelez plus de votre package name, vous pouvez au niveau du champ “applicationId” du fichier “build.gradle” de votre application. Dans le cadre de cet exemple, le package name est fr.openclassrooms.geolocalisation.

Création de la clef, le retour

Maintenant que nous disposons de tous les éléments nécessaires à la création de notre clef, à savoir l’empreinte de certificat SHA1 et le nom de package de l’application, nous allons pouvoir pouvoir les renseigner au niveau de notre formulaire qui est resté en attente au niveau de la console développeur Google.

Dans le seul champ “Nom du package” saisissez fr.openclassrooms.geolocalisation et dans le champ “Empreinte du certificat SHA-1”, saisissez 42:64:95:BE:66:2D:3F:20C:FB:37D:E0:E4:FA:2D:91:79:4E:E1.

Une fois les informations saisies, appuyez sur le bouton “Créer la clé d’API”.

Vous devriez alors voir apparaître dans votre console développeur votre clef fraîchement générée comme en témoigne la capture d’écran ci-dessous :

Maintenant que tout est configuré du côté de la console développeur de Google, nous allons pouvoir attaquer le développement de notre application Android.

En résumé

Pour utiliser Google Maps dans une application Android il convient de :

  • Créer un projet dans la console dévelopeur de Google.
  • Activer le service Google Maps Android API v2.
  • Générer une clef autorisant l’utilisation du service.

A lire aussi…

Comments