5

Ich habe eine App, bei der die Startseite eine Karte ist.Die Klasse 'com.google.android.gms.location.internal.ParcelableGeofence konnte nicht gefunden werden, auf die von der Methode glt.a verwiesen wird.

Sie wissen nicht, warum ich diese Störung erhalten und zusammen mit diesem Fehler Could not find class 'gpr', referenced from method gps.a

ich Eclipse aktualisiert habe, so habe ich versucht, mit neuem SHA1-Fingerabdruck-API-Schlüssel zu ändern. Aber das funktioniert nicht.

Meine App soll den aktuellen Standort anzeigen, wenn Sie die App öffnen. Es ist gerade in der ganzen Map gelandet, aber in LOG cat bekomme ich diesen Fehler. Hier ist meine Logcat

`07-08 12:54:39.897: I/Google Maps Android API(25749): Google Play services client version: 5077000 

07-08 12:54:39.907: I/dalvikvm(25749): Could not find method guj.a, referenced from method gqi.a 

07-08 12:54:39.907: W/dalvikvm(25749): VFY: unable to resolve static method 24936: Lguj;.a (Landroid/content/Context;)Lgri; 

07-08 12:54:39.907: D/dalvikvm(25749): VFY: replacing opcode 0x71 at 0x0003 

07-08 12:54:39.917: E/dalvikvm(25749): Could not find class 'gpr', referenced from method gps.a 

07-08 12:54:39.917: W/dalvikvm(25749): VFY: unable to resolve new-instance 4090 (Lgpr;) in Lgps; 

07-08 12:54:39.917: D/dalvikvm(25749): VFY: replacing opcode 0x22 at 0x0000 

07-08 12:54:39.927: E/dalvikvm(25749): Could not find class 'gpr', referenced from method gps.a 

07-08 12:54:39.927: W/dalvikvm(25749): VFY: unable to resolve new-instance 4090 (Lgpr;) in Lgps; 

07-08 12:54:39.927: D/dalvikvm(25749): VFY: replacing opcode 0x22 at 0x0000 

07-08 12:54:39.927: E/dalvikvm(25749): Could not find class 'gpr', referenced from method gps.a 

07-08 12:54:39.927: W/dalvikvm(25749): VFY: unable to resolve new-instance 4090 (Lgpr;) in Lgps; 

07-08 12:54:39.927: D/dalvikvm(25749): VFY: replacing opcode 0x22 at 0x0000 

07-08 12:54:39.937: D/dalvikvm(25749): DexOpt: unable to opt direct call 0x5ea3 at 0x0a in Lgps;.a 

07-08 12:54:39.937: D/dalvikvm(25749): DexOpt: unable to opt direct call 0x5ea3 at 0x0c in Lgps;.a 

07-08 12:54:39.937: D/dalvikvm(25749): DexOpt: unable to opt direct call 0x5ea3 at 0x0a in Lgps;.a 

07-08 12:54:39.957: I/Google Maps Android API(25749): Google Play services package version: 5084034 

07-08 12:54:39.977: W/dalvikvm(25749): VFY: unable to resolve static field 20873 (t) in Lyp; 

07-08 12:54:39.977: D/dalvikvm(25749): VFY: replacing opcode 0x62 at 0x000e 
07-08 12:54:39.977: W/dalvikvm(25749): VFY: unable to resolve static field 20873 (t) in Lyp; 

07-08 12:54:39.977: D/dalvikvm(25749): VFY: replacing opcode 0x62 at 0x000d 

07-08 12:54:40.888: I/dalvikvm(25749): Failed resolving Lcom/google/android/gms/location/internal/ParcelableGeofence; interface 4023 'Lgln;' 

07-08 12:54:40.888: W/dalvikvm(25749): Link of class 'Lcom/google/android/gms/location/internal/ParcelableGeofence;' failed 

07-08 12:54:40.898: E/dalvikvm(25749): Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method glt.a 

07-08 12:54:40.898: W/dalvikvm(25749): VFY: unable to resolve check-cast 2086 (Lcom/google/android/gms/location/internal/ParcelableGeofence;) in Lglt; 

07-08 12:54:40.898: D/dalvikvm(25749): VFY: replacing opcode 0x1f at 0x0019 

07-08 12:54:41.589: W/ActivityThread(25749): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());` 

Ich versuchte es, herum zu Google und es scheint, dass es keine richtige Lösung doch so, es wäre hilfreich, wenn jemand mir dabei helfen könnte.

+0

Es hat nichts mit Eclipse zu tun, ich benutze AS und ich bekomme das gleiche Problem. Es scheint sich um ein Problem im Zusammenhang mit dem letzten Update von Google Play Services zu handeln. – Imanol

+0

Sie haben einige APIs veraltet, werfen Sie einen Blick hier: http://developer.android.com/reference/com/google/android/gms/location/package-summary.html – Imanol

+1

mögliche Duplikate von [Konnte Klasse nicht finden 'com. google.android.gms.location.internal.ParcelableGeofence ', verwiesen von Methode glt.a] (http://stackoverflow.com/questions/24549846/could-not-find-class-com-google-android-gms-location -internal-parcelablegeofenc) –

Antwort

4

Ich zeige Ihnen, wie ich das gleiche Problem gelöst habe, das Sie haben.

Zuerst habe ich alle SDK gereinigt und ich habe erneut Google Play Services lib heruntergeladen. Dann habe ich den .android-Ordner meines Computers entfernt und meinen debug.keystore neu erstellt.

Danach bekomme ich nur meine neue SHA1, um meinen Google Maps V2 Api Key zu erhalten.

Nach dem Update meiner apikey, mal sehen, wie ich meinen Code ändern.

Jetzt verwende ich Fragment mit MapFragment anstelle von MapView in Ihrem XML-Layout.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MapsActivity" > 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.MapFragment" /> 

</RelativeLayout> 

Und verwenden FragmentManager es zu suchen:

public class MapsActivity extends Activity 
{ 
    private GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_map); 

     // Gets the MapView from the XML layout and creates it 
     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     map.getUiSettings().setMyLocationButtonEnabled(false); 
     //map.setMyLocationEnabled(true); 
     map.setOnMapClickListener(this); 
     map.setOnMapLongClickListener(this); 
     try 
     { 
      MapsInitializer.initialize(MapsActivity.this); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

Ich hoffe, das ist hilfreich und traurig, wenn mein Englisch so schlecht ist, Grüße

0

Könnten Sie Ihr Manifest veröffentlichen? Sans-API-Schlüssel natürlich.

Ihre log fast identisch für ein Problem zu Mine sieht ich vor kurzem gehabt haben, die durch Addieren der folgenden zum Manifest festgelegt wurde:

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

Ich arbeite an einer Anwendung, die Karten nur Zugriff wurde gut, dann aus heiterem Himmel gestoppt. Ich konnte nichts sehen, was auf eine fehlende Erlaubnis hinwies; Ich habe es nur aufgegriffen, als ich das Manifest mit einer anderen Anwendung verglichen habe, die Maps api v2 verwendet hat.

Ich bin immer noch verwirrt, warum es vorher ohne es funktionierte (Google sagt, Sie brauchen die Erlaubnis für Karten zu arbeiten). Vielleicht habe ich es einmal dort hingelegt und versehentlich die Zeile gelöscht, aber egal wie ich es einfüge, ist es, was es behoben hat.

Quelle: https://developers.google.com/maps/documentation/business/mobile/android/config

1

hatte ich das gleiche Problem nach dem im Juli auf API-Ebene 23 Upgrade (mit Client Google-Play-service_lib 5.0.77).

Das Problem wurde behoben, nachdem Google Play Service auf dem Testgerät auf den neuesten Stand (6.1.09) aktualisiert wurde.

Es scheint also (ein gerätespezifisches Problem) aufgrund der Inkompatibilität zwischen der Google Play Service-Version auf dem Gerät/Emulator und der Client-Bibliothek-API (google-play-service_lib) im Projekt gewesen zu sein.

Laut der Dokumentation von Google, wenn der Client neuer als der Dienst ist, soll die API der Client-Bibliothek veraltete apk-Probleme lösen; (und es tut dies in diesem Fall, da das Problem nicht wirklich Apk betrifft) https://developer.android.com/google/play-services/index.html.

Meine früheren Versuche, dieses Problem mithilfe eines neuen API-Schlüssels zu lösen, und neue Installationen von Eclipse/ADT/SDK/google-play-service_lib, wie in dieser und ähnlichen Fragen vorgeschlagen, funktionierten nicht.