Haftpflicht Blogger
Virtual Server von Host Europe

Google Maps Android API 2 – Authorization error

| 16. Dezember 2013 | Keine Kommentare

Android and android robot are trademarks of GoogleAn manchen Tagen läuft es einfach nicht rund, da ist der Wurm drin.

Ich mußte die Festplatte meines Entwicklungsrechners formatieren und diesen mit einem neuen Betriebssystem wieder aufsetzen. Nach dem Zurückspielen der Datensicherung (hier ist vorrangig die Eclipse-IDE und der workspace mit den Projekten gemeint), lief die Google Maps Anwendung, an der ich gerade arbeitete, nicht mehr. Der Google-MAPs-Anzeigebildschirm auf einem Tablet und einem Smartphone blieb einfach (bis auf das Plus/Minus Icons) leer.

Im Eclipse LogCat wurde die folgende Meldung angezeigt:

"Authorization failure. Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map."

Ursachenforschung

  • Da die Maps-Anwendung ja vor dem Neuaufsetzen des Rechners lief und ich an den Sourcen seitdem nichts geändert hatte, konnte es nicht am Programmcode liegen.
  • Google Maps Anwendungen sind nun nicht gerade debug-freundlich, da man diese auf dem Emulator nicht testen kann und man einen Online-Zugriff auf den Google-Server braucht.
    • War also etwas mit dem neu aufgespielten Hardware-ADB-USB-Treiber nicht in Ordnung?
    • War die WiFi Empfangsstärke zu gering (und dann ein Timeout-Problem)?
    • War der Zugriff auf den Google-Server z.Zt. nicht gegeben?
  • Am Google-Maps API Key hatte ich nichts geändert, der API-Eintrag in der Manifest-Datei war vorhanden und unverändert.
  • Eine Meldung nach Internetrecherche lies mich hoffen.  Die Google Maps API Version 2 sei deprecated und wäre seit drei Wochen (19. November 2013) nun deaktiviert. Eine Umstellung auf die Version 3 sei erforderlich.
    Nun, die Meldung bezieht sich auf die "Google Maps (Javascript) API 2"  und nicht auf die "Google Maps Android API 2". Also war dies eine falsche Fährte.

Ich bin allen obigen Fehlerursachenansätzen nachgegangen, aber die Google-MAP-Anzeige auf dem Tablet/Smartphone blieb leer. 

Fehlerursache und Lösung

Nun, letztendlich hat mich die am Anfang dieses Beitrags erwähnte LogCat Fehlermeldung dann auf den richtigen Pfad gebracht. Der Rat in der Dokumentation nachzulesen, wie eine Map aufzusetzen ist, half nicht. Die Anwendung lief ja schon zuvor und war soweit richtig aufgesetzt.

Aber in Richtung "Authorization failure" habe ich weiter nachgeforscht.  Neben den oben genannten externen Faktoren (ADB-Treiber, WiFi Empfangsstärke und Google-Server-Zugriff, gehört auch, dass der API-Key und der Packagename richtig ist. Das war mir bisher bewusst, an beiden hatte sich nichts geändert.  Was mir nicht bewusst war und worauf man so auch nicht sensibilisiert ist, der SHA1-Schlüssel, der in der debug.keystore Datei steht, wird auch beim Compiliervorgang eingebunden, für die Signierung der Android-Application.  Und dieser SHA1-Key ist neben dem API-Key auch auf der "Google APIs Console" für die Authorisierung hinterlegt!

Was war also geschehen?

Durch das Neuaufsetzen des Rechners gab es eine neue debug.keystore Datei mit einem anderem SHA1-Key als bisher.  Da dieser SHA1-Key aber Bestandteil der Authorisierung ist,  bingo …

Mit diesem Hintergrundwissen fällt die Fehlerbehebung dann leicht.

Lessons learned

Wenn man selbst auf mehreren Rechners entwickelt (Desktoprechner, Laptop) oder auch bei einer Teamentwicklung, sollte man sicherstellen, dass alle auf Ihren Entwicklungsrechnern den gleichen Entwicklungs- bzw. Produktions-Key haben. 
Ich würde dies als Best-Practice Vorgabe (nicht nur für Google-Maps Anwendungen) in das Entwicklerhandbuch schreiben.

 

 

 

 

 

 

Stichworte: , ,

Kategorie: Android

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.