2012-12-07 11 views
11

Ich habe versucht, ein Tutorial auf Android Maps V2 Quick Start zu folgen, aber wenn ich die App ausführen, wird ein leerer Kartenbildschirm angezeigt. Mein Telefon benutzt Android 2.2.1.Google Maps V2 zeigt leeren Bildschirm auf Android 2.2

enter image description here

Dies ist, was in logcat zeigt:

12-07 18:07:52.479: W/dalvikvm(1654): VFY: unable to resolve instance field 24 
12-07 18:07:53.129: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/a/du; (411) 
12-07 18:07:53.129: W/dalvikvm(1654): Link of class 'Lmaps/a/du;' failed 
12-07 18:07:53.139: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/a/ej; (2363) 
12-07 18:07:53.139: W/dalvikvm(1654): Link of class 'Lmaps/a/ej;' failed 
12-07 18:07:53.139: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/j/k; (2379) 
12-07 18:07:53.139: W/dalvikvm(1654): Link of class 'Lmaps/j/k;' failed 
12-07 18:07:53.149: E/dalvikvm(1654): Could not find class 'maps.j.k', referenced from method maps.y.ae.a 
12-07 18:07:53.149: W/dalvikvm(1654): VFY: unable to resolve new-instance 3571 (Lmaps/j/k;) in Lmaps/y/ae; 
12-07 18:07:53.389: W/dalvikvm(1654): VFY: unable to resolve direct method 14965: Ljava/io/IOException;.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V 

Edit: Dies ist die Datei manifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.eunice.mapstry" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/> 
    <permission android:name="com.eunice.mapstry.permission.MAPS_RECEIVE" 
       android:protectionLevel="signature"/> 
    <uses-permission android:name="com.eunice.mapstry.permission.MAPS_RECEIVE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 


    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <uses-library android:name="com.google.android.maps" /> 

     <activity 
      android:name="com.eunice.mapstry.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyBt_JE6_XIVR8-t0HrbhskeLrAVxSJst6c"/> 
    </application> 

</manifest> 

Edit: Ich habe ein Bild von meinem Google hinzugefügt api-Konsole:

enter image description here

+0

Haben Sie einen API-Key Ihrer eigenen Schöpfung hinzugefügt? –

+0

Ja habe ich. Ich habe zuerst einen mit dem Debug Keystore erstellt. Als das nicht funktionierte, habe ich einen anderen Keystore erstellt und einen Api-Schlüssel erstellt, aber es funktioniert immer noch nicht – euniceadu

+0

Die Kartenansicht ist da, also sind die einzigen 2 Dinge, die ich kenne, um die Karte zu stoppen, ein schlechter Schlüssel oder Sie haben nicht die Berechtigung hinzugefügt, um im Manifest auf das Internet zuzugreifen. –

Antwort

7

Ich endlich herausgefunden, was das Problem war. Ich habe den falschen Debug-Keystore ausgewählt. Ich arbeite mit einer Ubuntu-Maschine. Seit ich Eclipse als root geöffnet habe, befand sich der Standard-Keystore in Eclipse in meinem Root-Ordner (/root/.android/.android/debug.keystore), während ich den API-Schlüssel mit dem Debug-Keystore aus meinem Benutzerordner erstellte. Ich habe einen neuen API-Schlüssel mit dem Debug-Schlüsselspeicher im Stammordner erstellt und er funktioniert jetzt.

2

stellen Sie sicher, dass Sie die Google Maps Android API v2 Dienst in der https://code.google.com/apis/console

  1. Gehen Sie https://code.google.com/apis/console-> Registerkarte Dienste
  2. Stellen Sie sicher, Google Maps Android API v2 ist ON
  3. Zum API aktivieren Registerkarte Zugriff
  4. wieder Erstelle ein neues Android Schlüssel

Dann bist du gut zu gehen :)

+0

Das habe ich schon gemacht. Ich habe gerade meine Frage bearbeitet, um ein Bild von meiner Google Apis-Konsole aufzunehmen. – euniceadu

1

Ich habe mit diesem Zeug seit Ewigkeiten auch herumgespuckt (Zertifikate, Paketnamen, API-Konsole usw.) und nichts funktionierte, bis ich versuchte, die App von meinem Gerät zu deinstallieren, dann neu zu installieren und plötzlich war es in Ordnung.

0

Ich hatte das gleiche Problem und die Lösung bestand darin, den debug.keystore zu löschen. Dann habe ich eine adb uninstall com.example.myapp Dann sauber und führen Sie die Anwendung erneut.

Ich denke, das Problem lag an der Tatsache, dass ich in meinem Manifest einen Dummy-API-Schlüssel kopiert und eingefügt habe, und ich habe zuerst die Anwendung damit bereitgestellt.

1

Ich hatte das gleiche Problem, aber löste es so. Könnte hilfreich sein, wenn die obige Antwort für Sie nicht funktioniert. Nachdem ich den Paketnamen meiner App geändert habe, wird die Karte nicht mehr angezeigt. (es passiert ist, nachdem ich meine Paketnamen geändert)

  1. die Schlüsselspeicherdatei löscht, die Sie für vorheriges Paket
  2. eine neue Schlüsselspeicher-Datei
  3. Get SHA1-Fingerabdruck
  4. Zum API Console erstellen verwendet
  5. Erstellen Sie eine neue Android App.
  6. Fügen Sie Ihren Fingerabdruck
  7. Verwenden Sie die angegebenen API-Schlüssel in Ihrem Manifest Datei

die für mich gearbeitet

Verwandte Themen