5

Ho un'app in cui la home page è la mappa.Impossibile trovare la classe 'com.google.android.gms.location.internal.ParcelableGeofence a cui si fa riferimento dal metodo glt.a

Non so perché sto ottenendo questo errore e con questo errore Could not find class 'gpr', referenced from method gps.a

Ho aggiornato eclissi così ho cercato di cambiare a chiave API con la nuova impronta digitale SHA1. Ma questo non funziona.

L'app mostra la posizione corrente all'apertura dell'app. È appena atterrato in una mappa intera ma nel gatto LOG ho ricevuto questo errore. Ecco il mio 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());` 

ho provato a Google in giro e sembra che non v'è alcuna soluzione adeguata eppure così sarebbe utile se qualcuno mi potrebbe aiutare con questo.

+0

Non ha niente a che fare con Eclipse, sto usando AS e sto ricevendo lo stesso problema. Sembra un problema relativo all'ultimo aggiornamento di Google Play Services. – Imanol

+0

Hanno deprecato alcune API dare un'occhiata qui: http://developer.android.com/reference/com/google/android/gms/location/package-summary.html – Imanol

+1

possibile duplicato di [Could not find class 'com. google.android.gms.location.internal.ParcelableGeofence ', a cui si fa riferimento dal metodo glt.a] (http://stackoverflow.com/questions/24549846/could-not-find-class-com-google-android-gms-location -Internal-parcelablegeofenc) –

risposta

4

Ti mostro come ho risolto lo stesso problema che hai.

Prima di tutto, ho pulito tutto sdk e ho scaricato di nuovo la lib di Google Play Services. Quindi ho rimosso la cartella .android del mio computer e ho rigenerato il mio debug.keystore.

Dopodiché, ho appena ricevuto il mio nuovo SHA1 per ottenere la chiave Api di Google Maps V2.

Dopo aver aggiornato il mio apikey, vediamo come cambio il mio codice.

Ora utilizzo il frammento con MapFragment insted di MapView nel layout xml.

<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> 

E utilizzare FragmentManager per individuarlo:

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(); 
     } 
    } 

Spero che sia disponibile e scusa se il mio inglese è così male, saluti

0

Potrebbe pubblicare il tuo manifesta? Chiave API Sans, ovviamente.

Il registro sembra quasi identico al mio per un problema che ho avuto di recente, che è stato fissato aggiungendo quanto segue al manifesto:

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

Sto lavorando a un'applicazione che è stata accede mappe solo bene, poi si fermò di punto in bianco. Non riuscivo a vedere nulla che indicasse effettivamente un permesso mancante; L'ho rilevato solo quando ho confrontato il manifest con un'altra applicazione che utilizzava le mappe api v2.

Sono ancora confuso sul motivo per cui in precedenza ha funzionato senza di esso (Google dice che è necessario il per le mappe per funzionare). Forse una volta l'ho messo lì e ho cancellato accidentalmente la linea, ma in entrambi i casi è stato risolto.

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

1

Ho avuto lo stesso problema dopo l'aggiornamento a API livello 23 nel mese di luglio (con il cliente google-play-service_lib 5.0.77).

Il problema è stato risolto dopo l'aggiornamento del servizio Google Play al più recente (6.1.09) sul dispositivo di prova.

Quindi, sembra essere stato (un problema specifico del dispositivo) a causa dell'incompatibilità tra la versione del servizio Google Play sul dispositivo/emulatore e l'API della libreria client (google-play-service_lib) nel progetto.

Secondo la documentazione di Google, quando il client è più recente del servizio, l'API della libreria client deve risolvere i problemi degli apk del servizio non aggiornato; (e lo fa in questo caso dal momento che il problema non ha alcun effetto sugli apk rilasciati) https://developer.android.com/google/play-services/index.html.

I miei tentativi precedenti di risolvere questo problema utilizzando la nuova chiave API e le nuove installazioni di Eclipse/ADT/SDK/google-play-service_lib, come suggerito in questa e altre domande simili, non hanno funzionato.