2017-02-03 3 views
2

J'ai une erreur comme ceci:classe non trouvée lorsque unmarshalling: com.google.android.gms.location.LocationResult

02-03 16:41:18.294 994-1830/? E/Parcel: Class not found when unmarshalling: com.google.android.gms.location.LocationResult 
            java.lang.ClassNotFoundException: com.google.android.gms.location.LocationResult 
             at java.lang.Class.classForName(Native Method) 
             at java.lang.Class.forName(Class.java:309) 
             at java.lang.Class.forName(Class.java:273) 
             at android.os.Parcel.readParcelableCreator(Parcel.java:2281) 
             at android.os.Parcel.readParcelable(Parcel.java:2245) 
             at android.os.Parcel.readValue(Parcel.java:2152) 
             at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) 
             at android.os.BaseBundle.unparcel(BaseBundle.java:221) 
             at android.os.BaseBundle.containsKey(BaseBundle.java:269) 
             at android.content.Intent.hasExtra(Intent.java:4924) 
             at com.android.server.am.ActiveServices.startServiceLocked(ActiveServices.java:398) 
             at com.android.server.am.a.startServiceLocked(Unknown Source) 
             at com.android.server.am.ActivityManagerService.startServiceInPackage(ActivityManagerService.java:15737) 
             at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:324) 
             at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:219) 
             at android.content.IIntentSender$Stub.onTransact(IIntentSender.java:64) 
             at android.os.Binder.execTransact(Binder.java:463) 
            Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.location.LocationResult" on path: DexPathList[[zip file "/system/framework/XposedBridge.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
             at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
             at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
             at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
             at java.lang.Class.classForName(Native Method)  
             at java.lang.Class.forName(Class.java:309)  
             at java.lang.Class.forName(Class.java:273)  
             at android.os.Parcel.readParcelableCreator(Parcel.java:2281)  
             at android.os.Parcel.readParcelable(Parcel.java:2245)  
             at android.os.Parcel.readValue(Parcel.java:2152)  
             at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)  
             at android.os.BaseBundle.unparcel(BaseBundle.java:221)  
             at android.os.BaseBundle.containsKey(BaseBundle.java:269)  
             at android.content.Intent.hasExtra(Intent.java:4924)  
             at com.android.server.am.ActiveServices.startServiceLocked(ActiveServices.java:398)  
             at com.android.server.am.a.startServiceLocked(Unknown Source)  
             at com.android.server.am.ActivityManagerService.startServiceInPackage(ActivityManagerService.java:15737)  
             at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:324)  
             at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:219)  
             at android.content.IIntentSender$Stub.onTransact(IIntentSender.java:64)  
             at android.os.Binder.execTransact(Binder.java:463)  
             Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.location.LocationResult 
             at java.lang.Class.classForName(Native Method) 
             at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
             at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
             at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
               ... 18 more 
            Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

Mon gradle: build.gradle. Mon manifeste: manifest. Je travaille sur une application qui fonctionne avec Location et j'ai cette erreur. Je configure un multidex, mais ce n'est pas utile. Qu'est-ce qui peut être mauvais?

+0

Copie possible de [Exception BadParcelableException dans le code google maps] (http://stackoverflow.com/questions/13900322/badparcelableexception-in-google-maps-code) –

+0

Non, ce n'est pas mon problème (( – Kl0nLutiy

+0

Pouvez-vous poster le code où vous collez et décompactez l'objet LocationResult que vous passez? –

Répondre

1

J'ai eu le même problème. Après beaucoup de débogage, je me suis rendu compte que c'était parce que j'ajoutais mes propres bonus au paquet d'intention.

Je crée une demande d'emplacement et spécifie une intention en attente à déclencher lorsqu'une mise à jour d'emplacement est reçue en arrière-plan.

Intention myIntent = nouvelle intention (context, MyIntentServiceClass.class); myIntent.putExtra ("someString", "someValue");

PendingIntent pendingIntent = PendingIntent.getService (contexte, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

LocationServices.FusedLocationApi.requestLocationMises à jour (apiClient, request, pendingIntent);

Le service d'intention est déclenché lorsque l'emplacement est reçu. Mon propre extra est dans l'intention. Mais il n'y a pas de lieu. J'ai eu exactement la même erreur dans les journaux.

Dès que je retire mon propre extra de l'intention, je reçois l'emplacement et l'erreur est partie.

Je sais de travailler avec l'API Google map qu'il existe des défis similaires lorsque vous souhaitez utiliser un objet carte et également enregistrer vos propres éléments lors de l'enregistrement et la restauration de l'état. Je ne peux pas trouver le lien vers la documentation pour l'instant, mais c'était quelque chose à l'effet que le paquet lui-même était morcelé (perdant ainsi son chargeur de classe attaché). Pour contourner ce problème, vous devez créer votre propre bundle et stocker vos objets internes dans le nouveau bundle. Ensuite, ajoutez le paquet à l'état sortant.

Je vais jouer pour voir comment je peux encore ajouter mes propres extras à l'offre de localisation sans l'affecter comme cela se passe ici.