5

Mam aplikację, w której strona główna to mapa.Nie można znaleźć klasy "com.google.android.gms.location.internal.ParcelableGeofence, do której odwołuje się metoda glt.a

nie wiem, dlaczego otrzymuję ten błąd, a wraz z tym błędem Could not find class 'gpr', referenced from method gps.a

I zostały zaktualizowane zaćmienie więc próbowałem zmienić klucz API z nowym SHA1 odcisku palca. Ale to nie działa.

Moja aplikacja wyświetla aktualną lokalizację po otwarciu aplikacji. Po prostu wylądował na całej mapie, ale w LOG cat dostaję ten błąd. Oto moja 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());` 

Próbowałem google wokół i wydaje się, że nie jest właściwym rozwiązaniem jeszcze tak byłoby pomocne, jeśli ktoś może mi pomóc z tym.

+0

To nie ma nic wspólnego z Eclipse, używam AS i mam ten sam problem. Wygląda na to, że problem związany z ostatnią aktualizacją usług Google Play. – Imanol

+0

Mają wycofane niektóre interfejsy API: http://developer.android.com/reference/com/google/android/gms/location/package-summary.html – Imanol

+1

możliwy duplikat kodu [Nie można znaleźć klasy ". google.android.gms.location.internal.ParcelableGeofence ', odwołując się do metody glt.a] (http://stackoverflow.com/questions/24549846/could-not-find-class-com-google-android-gms-location -internal-parcelablegeofenc) –

Odpowiedz

4

Pokażę ci, jak rozwiązałem ten sam problem, który masz.

Po pierwsze, wyczyściłem wszystkie sdk i ponownie pobrałem pliki usług Google Play. Następnie usunąłem folder .android mojego komputera i zregenerowałem swój plik debug.keystore.

Po tym otrzymałem nowy SHA1, aby uzyskać mój klucz Google Maps V2 Api.

Po aktualizacji, apikey, zobaczmy, jak zmienię kod.

Teraz używam fragmentu z MapFragment wstawionego z MapView w twoim układzie 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> 

I używać FragmentManager go zlokalizować:

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

Mam nadzieję, że to pomocny i przepraszam, jeśli mój angielski jest tak źle, pozdrowienia

0

mógłbyś opublikować manifest? Oczywiście klucz Sans API.

Twój log wygląda prawie identyczne do kopalni na problem ja miałem ostatnio, która została ustalona przez dodanie następujących do manifestu:

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

pracuję nad aplikacji, która została właśnie korzystającego mapy dobrze, a potem zatrzymał się z nieba. Nie widziałem niczego, co wskazywałoby na brakujące pozwolenie; Podniosłem go tylko wtedy, gdy porównałem manifest z inną aplikacją, która korzystała z map api v2.

Nadal nie rozumiem, dlaczego wcześniej działało bez niego (Google mówi, że potrzebujesz zezwolenia na pracę map). Być może kiedyś ją tam umieściłem i przypadkowo usunąłem linię, ale tak czy inaczej to ją naprawiłem.

Źródło: https://developers.google.com/maps/documentation/business/mobile/android/config

1

miałem ten sam problem po uaktualnieniu do API poziom 23 lipca (z klientem Google play-service_lib 5.0.77).

Problem został rozwiązany po zaktualizowaniu usługi Google Play do najnowszej wersji (6.1.09) na urządzeniu testowym.

Wygląda na to, że (problem związany z urządzeniem) spowodowany jest niezgodnością wersji usługi Google Play na urządzeniu/emulatorze i interfejsem API biblioteki klienta (google-play-service_lib) w projekcie.

Zgodnie z dokumentacją Google, gdy klient jest nowszy od usługi, interfejs API biblioteki klienta powinien rozwiązywać nieaktualne problemy z pakietem usług; (i robi to w tym przypadku, ponieważ problem nie ma tak naprawdę wpływu na wydane apk) https://developer.android.com/google/play-services/index.html.

Moje wcześniejsze próby rozwiązania tego problemu za pomocą nowego klucza API i nowych instalacji Eclipse/ADT/SDK/google-play-service_lib, jak zasugerowano w tym i innych podobnych pytaniach, nie zadziałały.

Powiązane problemy