解组时找不到类:com.google.android.gms.location.LocationResult

Posted

技术标签:

【中文标题】解组时找不到类:com.google.android.gms.location.LocationResult【英文标题】:Class not found when unmarshalling: com.google.android.gms.location.LocationResult 【发布时间】:2017-06-21 02:31:12 【问题描述】:

我有这样的错误:

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

我的毕业生: build.gradle。 我的清单:manifest。 我正在开发与 Location 一起使用并出现此错误的应用程序。我配置了一个multidex,但没有帮助。有什么问题?

【问题讨论】:

BadParcelableException in google maps code的可能重复 不,这不是我的问题(( 你能在你打包和解包你传递的 LocationResult 对象的地方发布代码吗? 关于这个问题的任何更新......我面临同样的问题:( 【参考方案1】:

在我的情况下,我已经解决了这个问题,添加到 build.gradle:

implementation 'com.google.android.gms:play-services-location:17.0.0'

【讨论】:

【参考方案2】:

我有同样的问题。经过大量调试后,我意识到这是因为我将自己的额外内容添加到意图包中。

我正在创建一个位置请求并指定在后台接收到位置更新时要触发的待定意图。

意图 myIntent = new Intent(context, MyIntentServiceClass.class); myIntent.putExtra("someString", "someValue");

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

LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, request, pendingIntent);

接收到位置时会触发 Intent 服务。我自己的额外内容在意图之内。但是没有位置。我在日志中遇到了与此完全相同的错误。

一旦我从 Intent 中删除了自己的额外内容,我就会收到位置信息并且错误消失了。

我从使用 google map api 了解到,当您想要使用地图对象并在保存和从状态恢复时保存自己的项目时,会遇到类似的挑战。我现在找不到该文档的链接,但这是因为 Bundle 本身被打包(因此丢失了其附加的类加载器)。为了解决这个问题,您必须创建自己的包并将内部对象存储在新包中。然后将 bundle 添加到 out 状态。

我将尝试看看如何仍然可以将自己的附加功能添加到位置请求包中,而不会像这里发生的那样影响它。

【讨论】:

以上是关于解组时找不到类:com.google.android.gms.location.LocationResult的主要内容,如果未能解决你的问题,请参考以下文章

解组时找不到类:com.google.android.gms.location.LocationResult

错误:解组时找不到类:com.facebook.login.Login 客户端请求

Android E/Parcel:解组时找不到类(仅在三星 Tab3 上)

解组 Android Intent Parcelable 时找不到类

ClassNotFoundException 解组时真的不知道为啥

Jaxb:如何在解组时替换给定对象树中的类/绑定