JNI检测到应用程序错误:Mapbox android SDK中的空指针

时间:2019-04-29 12:42:45

标签: android mapbox mapbox-android

我正在使用Mapbox SDK 6.3.0。我可以在地图上添加多边形,并允许用户通过更改要素并将其拖动的方式进行拖动,如下所示:

features.set(features.indexOf(oldFeature), newFeature);
symbolsSource.setGeoJson(symbolsCollection);

一切正常。

然后我尝试将SDK从6.3.0更新到7.3.0 然后突然在拖动时我遇到以下崩溃(它是间歇性的,但很频繁)

  

2019-04-29 17:58:03.119 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542] JNI检测到应用程序错误:无法调用java.lang。空对象上的字符串com.mapbox.geojson.Feature.id()   2019-04-29 17:58:03.119 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542]调用CallObjectMethodV   2019-04-29 17:58:03.119 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542]“ Thread-2368” prio = 10 tid = 65可运行   2019-04-29 17:58:03.119 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542] | group =“ main” sCount = 0 dsCount = 0标志= 0 obj = 0x1b740000 self = 0x763d1b6800   2019-04-29 17:58:03.119 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542] | sysTid = 24204 nice = -10 cgrp =默认sched = 0/0句柄= 0x76385da4f0   2019-04-29 17:58:03.120 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542] |状态= R schedstat =(1253639661 195250540 1454)utm = 117 stm = 8核心= 7 HZ = 100   2019-04-29 17:58:03.120 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542] |堆栈= 0x76384df000-0x76384e1000堆栈大小= 1009KB   2019-04-29 17:58:03.120 24115-24204 / com.app.fr.dev A / stresponder.de:java_vm_ext.cc:542] |保持互斥锁=“ mutator锁定”(共享保持)。...

在我的代码中没有指向任何地方的日志。 我希望这可能是Mapbox SDK的问题,因为当我恢复到6.3.0时,它可以正常工作。我无法查明实际问题。有人可以告诉我如何实际调试此类崩溃吗?

如果要提供更多信息,请告诉我。

谢谢。

编辑:这不是nullpointer的重复,因为这在我的代码中没有发生。正如您从日志中看到的那样,它正在Mapbox SDK内部发生。另外请注意,抛出的错误是JNI错误。

1 个答案:

答案 0 :(得分:1)

我在Mapbox SDK中提出了一个问题,他们给了我解决该问题的方法。

拖动时,而不是像这样直接设置geojson

symbolsSource.setGeoJson(symbolsCollection);

我们应该这样设置:

symbolsSource.setGeoJson(FeatureCollection.fromFeatures(new ArrayList<>(symbolsCollection.features())));

他们还更新了SDK。在here中查找问题。