我有这样的错误:
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
我的gradle:
build.gradle。
我的清单:manifest。
我正在处理与Location一起使用的应用程序,并且出现此错误。我配置了一个multidex,但这没有帮助。有什么事吗
最佳答案
我遇到过同样的问题。经过大量调试后,我意识到这是因为我将自己的额外功能添加到了意图包中。
我正在创建一个位置请求,并指定在后台接收到位置更新时要触发的待处理意图。
意图myIntent =新意图(context,MyIntentServiceClass.class);
myIntent.putExtra(“ someString”,“ someValue”);
PendingIntentendingIntent = PendingIntent.getService(context,0,myIntent,PendingIntent.FLAG_UPDATE_CURRENT);
LocationServices.FusedLocationApi.requestLocationUpdates(apiClient,request,endingIntent);
收到位置信息后,将触发Intent服务。我自己的额外目的就是意图。但是没有位置。我在日志中有与此完全相同的错误。
一旦我从Intent中删除自己的多余内容,就会收到位置信息,并且错误消失了。
通过与Google Map API的合作,我知道在使用地图对象时也存在类似的挑战,并且在从状态保存和还原时还需要保存自己的项目。我现在找不到指向文档的链接,但这是将Bundle本身打包的结果(因此丢失了其附加的类加载器)。为了解决该问题,您必须创建自己的捆绑软件并将内部对象存储在新捆绑软件中。然后将捆绑软件添加到out状态。
我将四处逛逛,看看如何仍然可以将自己的附加功能添加到位置请求包中,而不会像在这里发生的那样影响它。