mardi 21 octobre 2014

#Android: Le cauchemar de la page blanche avec Google Maps V2

Google Maps V2 sur Android est un sérieux casse tête pour plus d'un en tout cas pour moi ça l'a été plus d'une fois avec cette fameuse page blanche qui s'affiche sans carte alors que vous êtes sûr d'avoir suivi toutes les étapes pour la création de votre MapsActivity mais rien est fait vous avez toujours cette maudite page blanche qui s'affiche et pas une jolie carte à la Google Maps.
Je vais vous dire pour moi ce qui a toujours été mon erreur et qui peut être bien aussi la votre.

Quelques conseils fisrt:

De préference utilisez Android Studio. Créer une Maps Acitvity n'a jamais été plus simple. Il vous suffit de créer une nouvelle activité ensuite vous sélectionner MapsActivity et Android Studio va se charger de tout générer pour vous.
Bon je vais vous demander de suivre ce lien (in English) il vous explique comment créer une activité GMpas V2 sous Android Studio.

En résumé pour créer une Activité avec GMaps vous avez besoin de renseigner une clé qu'on appelle souvent la API_KEY de GMaps sans cette clé votre activité ne fonctionnera pas. Vous devez renseigner cette clé dans les deux dossiers debug et release qui ont été générés par Android Studio sous le répertoire src. Vous devez aussi renseigner cette clé dans le manifest comme suit



Ce qui est hachuré en rouge c'est ma API_KEY pour utiliser GMaps. Comme vous le voyez elle commence toujours par AIza..... TOUJOURS!!! 

Ok si vous êtes toujours là c'est que vous voulez toujours savoir comment régler le problème de la page blanche. Alors je vais vous le dire. Si vous avez suivis toute la procédure correctement tout devrais fonctionner à merveille mais l'erreur que moi j'ai souvent commise est au niveau du nom de package.
En effet lors de la génération de la API_KEY on vous demande de renseigner le nom du package mais ne vous trompez pas il ne s'agit pas du package ou sous-package dans le quel se trouve votre MapsActivity mais plutôt de votre package de base celui de votre projet, celui là même qui vous servira pour Google Play Store.

Ainsi si vous ne vous trompez pas avec ce fameux package name et que vous faites tout dans les règles comme dans les tutos, vous devriez avoir une magnifique GMaps dans votre activité du style:


Bonus: Explication d'un ami à moi, Souleymane Sidibé (développeur Android)

Chaque app est identifié par son packagaName et quelques autres infos et Google Maps fait un binding entre ce packageName et la API_KEY que vous générez. S'il n'y a pas correspondance ça ne marchera pas.
En général le package name de l'app est identique au package de base de votre application mais ce n'est pas toujours le cas.
Avec gradle vous pouvez avoir un package name différent en fonction que vous soyez en mode de debug ou en mode release c'est d'ailleurs ce qui est conseillé.