dji-sdk / Mobile-UXSDK-Android

DJI Mobile UXSDK is a suite of product agnostic UI objects that fast tracks the development of Android applications using the DJI Mobile SDK.
Other
154 stars 110 forks source link

VisionWidget Throws Exception #90

Open luoyexk opened 4 years ago

luoyexk commented 4 years ago

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference at dji.sdk.mission.tapfly.TapFlyMissionOperator.getTapFlyMode(Unknown Source:2) at dji.ux.widget.VisionWidget.isVisionSystemEnabled(Unknown Source:14) 没有使用TabFly,但突然就奔溃了

manufacture:samsung
product:dreamqltesq
model:SM-G950U
version:R16NW.G950USQU5CRK1
android version:8.0.0
build num:
build name:
sdk version:26
=====   App Info    =====
versionCode:202008061
versionName:1.0.0
=====   Crash   =====
java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
    at dji.thirdparty.rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:60)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: dji.thirdparty.rx.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference
    at dji.thirdparty.rx.Observable$26.onError(Observable.java:8524)
    at dji.thirdparty.rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157)
    at dji.thirdparty.rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
    at dji.thirdparty.rx.observers.SerializedObserver.onError(SerializedObserver.java:158)
    at dji.thirdparty.rx.observers.SerializedSubscriber.onError(SerializedSubscriber.java:79)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerError(OnSubscribeConcatMap.java:192)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onError(OnSubscribeConcatMap.java:340)
    at dji.thirdparty.rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:264)
    at dji.thirdparty.rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:207)
    at dji.thirdparty.rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
    ... 7 more
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference
    at dji.sdk.mission.tapfly.TapFlyMissionOperator.getTapFlyMode(Unknown Source:2)
    at dji.ux.widget.VisionWidget.isVisionSystemEnabled(Unknown Source:14)
    at dji.ux.widget.VisionWidget.getSingleVisionSystemStatus(Unknown Source:4)
    at dji.ux.widget.VisionWidget.transformValue(Unknown Source:16)
    at dji.ux.base.n.a(Unknown Source:6)
    at dji.ux.base.n.call(Unknown Source:2)
    at dji.thirdparty.rx.internal.util.ScalarSynchronousObservable$4.call(ScalarSynchronousObservable.java:223)
    at dji.thirdparty.rx.internal.util.ScalarSynchronousObservable$4.call(ScalarSynchronousObservable.java:220)
    at dji.thirdparty.rx.Observable$2.call(Observable.java:233)
    at dji.thirdparty.rx.Observable$2.call(Observable.java:225)
    at dji.thirdparty.rx.Observable.unsafeSubscribe(Observable.java:8741)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.slowPath(OnSubscribeFromArray.java:100)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.request(OnSubscribeFromArray.java:63)
    at dji.thirdparty.rx.Subscriber.setProducer(Subscriber.java:211)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:32)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:24)
    at dji.thirdparty.rx.Observable.unsafeSubscribe(Observable.java:8741)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8834)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8801)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8515)
    at dji.ux.d.s.onValueChange(Unknown Source:34)
    at dji.internal.dgh.ssf.run(Unknown Source:6)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.os.HandlerThread.run(HandlerThread.java:65)
dji.thirdparty.rx.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference
    at dji.thirdparty.rx.Observable$26.onError(Observable.java:8524)
    at dji.thirdparty.rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157)
    at dji.thirdparty.rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
    at dji.thirdparty.rx.observers.SerializedObserver.onError(SerializedObserver.java:158)
    at dji.thirdparty.rx.observers.SerializedSubscriber.onError(SerializedSubscriber.java:79)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerError(OnSubscribeConcatMap.java:192)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onError(OnSubscribeConcatMap.java:340)
    at dji.thirdparty.rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:264)
    at dji.thirdparty.rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:207)
    at dji.thirdparty.rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference
    at dji.sdk.mission.tapfly.TapFlyMissionOperator.getTapFlyMode(Unknown Source:2)
    at dji.ux.widget.VisionWidget.isVisionSystemEnabled(Unknown Source:14)
    at dji.ux.widget.VisionWidget.getSingleVisionSystemStatus(Unknown Source:4)
    at dji.ux.widget.VisionWidget.transformValue(Unknown Source:16)
    at dji.ux.base.n.a(Unknown Source:6)
    at dji.ux.base.n.call(Unknown Source:2)
    at dji.thirdparty.rx.internal.util.ScalarSynchronousObservable$4.call(ScalarSynchronousObservable.java:223)
    at dji.thirdparty.rx.internal.util.ScalarSynchronousObservable$4.call(ScalarSynchronousObservable.java:220)
    at dji.thirdparty.rx.Observable$2.call(Observable.java:233)
    at dji.thirdparty.rx.Observable$2.call(Observable.java:225)
    at dji.thirdparty.rx.Observable.unsafeSubscribe(Observable.java:8741)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.slowPath(OnSubscribeFromArray.java:100)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.request(OnSubscribeFromArray.java:63)
    at dji.thirdparty.rx.Subscriber.setProducer(Subscriber.java:211)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:32)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:24)
    at dji.thirdparty.rx.Observable.unsafeSubscribe(Observable.java:8741)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8834)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8801)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8515)
    at dji.ux.d.s.onValueChange(Unknown Source:34)
    at dji.internal.dgh.ssf.run(Unknown Source:6)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.os.HandlerThread.run(HandlerThread.java:65)
java.lang.NullPointerException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference
    at dji.sdk.mission.tapfly.TapFlyMissionOperator.getTapFlyMode(Unknown Source:2)
    at dji.ux.widget.VisionWidget.isVisionSystemEnabled(Unknown Source:14)
    at dji.ux.widget.VisionWidget.getSingleVisionSystemStatus(Unknown Source:4)
    at dji.ux.widget.VisionWidget.transformValue(Unknown Source:16)
    at dji.ux.base.n.a(Unknown Source:6)
    at dji.ux.base.n.call(Unknown Source:2)
    at dji.thirdparty.rx.internal.util.ScalarSynchronousObservable$4.call(ScalarSynchronousObservable.java:223)
    at dji.thirdparty.rx.internal.util.ScalarSynchronousObservable$4.call(ScalarSynchronousObservable.java:220)
    at dji.thirdparty.rx.Observable$2.call(Observable.java:233)
    at dji.thirdparty.rx.Observable$2.call(Observable.java:225)
    at dji.thirdparty.rx.Observable.unsafeSubscribe(Observable.java:8741)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.slowPath(OnSubscribeFromArray.java:100)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.request(OnSubscribeFromArray.java:63)
    at dji.thirdparty.rx.Subscriber.setProducer(Subscriber.java:211)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:32)
    at dji.thirdparty.rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:24)
    at dji.thirdparty.rx.Observable.unsafeSubscribe(Observable.java:8741)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
    at dji.thirdparty.rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8834)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8801)
    at dji.thirdparty.rx.Observable.subscribe(Observable.java:8515)
    at dji.ux.d.s.onValueChange(Unknown Source:34)
    at dji.internal.dgh.ssf.run(Unknown Source:6)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.os.HandlerThread.run(HandlerThread.java:65)

=======Thread info======Crash name:java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
 Cause is:dji.thirdparty.rx.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'dji.common.mission.tapfly.TapFlyMode dji.internal.ddf.fdd.koy.ddd.uio()' on a null object reference
 Thread name is:main 2
 Thread count is:145
 Fd count is:278

Name:   m.MyPackageName
State:  R (running)
Tgid:   23805
Pid:    23805
PPid:   949
TracerPid:  0
Uid:    10480   10480   10480   10480
Gid:    10480   10480   10480   10480
Ngid:   0
FDSize: 512
Groups: 3001 3002 3003 9997 20480 50480 
VmPeak:  3226956 kB
VmSize:  3148492 kB
VmLck:        44 kB
VmPin:         0 kB
VmHWM:    515896 kB
VmRSS:    425240 kB
VmData:   751656 kB
VmStk:      8192 kB
VmExe:        20 kB
VmLib:    170668 kB
VmPTE:      2844 kB
VmPMD:        32 kB
VmSwap:    58988 kB
Threads:    218
SigQ:   1/12522
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000001204
SigIgn: 0000000000000000
SigCgt: 20000006400086f8
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000000000000000
CapAmb: 0000000000000000
Seccomp:    2
Cpus_allowed:   ff
Cpus_allowed_list:  0-7
Mems_allowed:   1
Mems_allowed_list:  0
voluntary_ctxt_switches:    103566
nonvoluntary_ctxt_switches: 11020

============Start dump thread info============
total =145
线程号:9507 = ReferenceQueueDaemon
线程号:9508 = FinalizerDaemon
线程号:9509 = FinalizerWatchdogDaemon
线程号:9510 = HeapTaskDaemon
线程号:32257 = process reaper
线程号:2 = main
线程号:9523 = queued-work-looper
线程号:9526 = Crashlytics Exception Handler1
线程号:9530 = pool-5-thread-1
线程号:9531 = awaitEvenIfOnMainThread task continuation executor1
线程号:9532 = com.google.firebase.crashlytics.startup1
线程号:9533 = FirebaseInstanceId
线程号:9534 = pool-9-thread-1
线程号:9541 = pool-9-thread-2
线程号:9543 = RxCachedWorkerPoolEvictor-1
线程号:9544 = RxComputationThreadPool-1
线程号:9545 = RxComputationThreadPool-2
线程号:9547 = LogHandlerThread
线程号:9548 = SingleBackgroundLooper
线程号:9549 = DJIExecutor Urgent #1
线程号:9550 = dji_sdk_callback_thread
线程号:9557 = dji_background_thread
线程号:9558 = midware_background_thread
线程号:9559 = DataBaseProcessor
线程号:9560 = Okio Watchdog
线程号:9564 = DJIExecutor:handlerThread
线程号:9565 = DJIVideoPackManager-data-parser
线程号:9566 = hgf-data-parser
线程号:9569 = parse_package
线程号:9570 = file_download_thread
线程号:9571 = DJIExecutor Urgent #2
线程号:9572 = DJIExecutor Urgent #3
线程号:9573 = parse_package
线程号:9575 = file_download_thread
线程号:9588 = nbb-data-parser
线程号:9600 = RxComputationThreadPool-3
线程号:9601 = RxComputationThreadPool-4
线程号:9602 = RxComputationThreadPool-5
线程号:9603 = RxComputationThreadPool-6
线程号:9604 = RxComputationThreadPool-7
线程号:9605 = RxComputationThreadPool-8
线程号:9606 = RxSchedulerPurge-1
线程号:9607 = RxCachedWorkerPoolEvictor-1
线程号:9608 = RxComputationThreadPool-1
线程号:9609 = RxComputationThreadPool-2
线程号:9610 = RxComputationThreadPool-3
线程号:9611 = RxComputationThreadPool-4
线程号:9612 = RxComputationThreadPool-5
线程号:9613 = RxComputationThreadPool-6
线程号:9614 = RxComputationThreadPool-7
线程号:9615 = RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@465b1f8
线程号:9617 = FinalHttp #1
线程号:9618 = thread_link_mode
线程号:9621 = DJIExecutor IO #1
线程号:9625 = DJIExecutor IO #2
线程号:9627 = FinalHttp #2
线程号:9629 = RxCachedThreadScheduler-1
线程号:9630 = RxCachedThreadScheduler-2
线程号:9631 = RxCachedThreadScheduler-3
线程号:9636 = battery validating thread
线程号:9638 = FinalHttp #3
线程号:9644 = DJI Log #1
线程号:9645 = MessengerIpcClient
线程号:9648 = geo-sync-file
线程号:9649 = DJIExecutor Urgent #4
线程号:9650 = recvBufferThread
线程号:9651 = parseVideoFromCamThread
线程号:9652 = async_parser
线程号:9653 = parseVideoFromFpvThread
线程号:9658 = AreaCodeWorker
线程号:9715 = DJI Log #2
线程号:9722 = DJIExecutor IO #3
线程号:9727 = SDKAgentManager
线程号:9732 = DJIExecutor IO #4
线程号:9741 = DJIExecutor Urgent #5
线程号:9742 = DJIExecutor Urgent #6
线程号:9743 = DJIExecutor Urgent #7
线程号:9744 = DJIExecutor Urgent #8
线程号:9746 = DJIExecutor Urgent #9
线程号:9769 = DJI Log #3
线程号:9773 = FinalHttp #4
线程号:9775 = DJI Log #4
线程号:9776 = FinalHttp #5
线程号:9866 = RxComputationThreadPool-8
线程号:9867 = FinalHttp #6
线程号:9868 = Thread-215
线程号:9869 = Thread-216
线程号:9870 = Thread-217
线程号:9871 = Thread-218
线程号:9872 = Thread-219
线程号:9876 = GoogleApiHandler
线程号:9880 = androidmapsapi-vts_com.MyPackageName_default
线程号:9881 = androidmapsapi-vts_no_pois_com.MyPackageName_default
线程号:9882 = androidmapsapi-its
线程号:9883 = androidmapsapi-vts_traf_com.MyPackageName_default
线程号:9884 = androidmapsapi-its_ter
线程号:9885 = androidmapsapi-vts_labl_com.MyPackageName_default
线程号:9886 = androidmapsapi-vts_inaka_com.MyPackageName_default
线程号:9887 = androidmapsapi-ibs
线程号:9889 = GLThread 9889
线程号:9893 = arch_disk_io_0
线程号:9895 = glide-active-resources
线程号:9897 = androidmapsapi-vts_com.MyPackageName_f6f0f70b809810f3
线程号:9898 = RxCachedThreadScheduler-4
线程号:9899 = androidmapsapi-appenvironment-1
线程号:9901 = androidmapsapi-scpm-1
线程号:9906 = DJI Log #5
线程号:9916 = glide-disk-cache-thread-0
线程号:9917 = glide-source-thread-0
线程号:9918 = glide-source-thread-1
线程号:9919 = glide-animation-thread-0
线程号:9920 = glide-animation-thread-1
线程号:9924 = arch_disk_io_1
线程号:9925 = arch_disk_io_2
线程号:9926 = arch_disk_io_3
线程号:9927 = glide-source-thread-2
线程号:9929 = pool-23-thread-1
线程号:9930 = pool-23-thread-2
线程号:9941 = DJI Log #6
线程号:9942 = GoogleApiHandler
线程号:9959 = glide-source-thread-3
线程号:9989 = DJI Log #7
线程号:9993 = CameraX-scheduler
线程号:9994 = CameraX-core_camera_0
线程号:9995 = CameraX-core_camera_1
线程号:10003 = DJI Log #8
线程号:10104 = CameraX-camerax_io_0
线程号:10109 = CameraX-camerax_io_1
线程号:10124 = androidmapsapi-ulcs-1
线程号:10128 = GLThread 10128
线程号:10129 = androidmapsapi-ula-1
线程号:10132 = RenderDrive
线程号:10134 = GLYUVSurfaceThread
线程号:10135 = stream data observing thread
线程号:10136 = DJIDecodeInoutHandlerThread
线程号:10387 = DefaultDispatcher-worker-1
线程号:10388 = DefaultDispatcher-worker-2
线程号:10663 = parse_package
线程号:10664 = file_download_thread
线程号:10666 = fetch_media_task_scheduler_thread
线程号:10667 = MediaManager
线程号:10676 = pool-11-thread-4
线程号:10679 = diagnostics check compass thread
线程号:14408 = pool-11-thread-7
线程号:21443 = pool-11-thread-8
============end of dump ==========
dji-dev commented 4 years ago

Agent comment from Luce Luo in Zendesk ticket #37769:

尊敬的用户,

您好!感谢您联系DJI 大疆创新。 为了快速收集问题细节,麻烦您详细填写如下表格。 https://formcrafts.com/a/dji-developer-feedback-cn

在收到您的详细细节信息后,我们将会进行快速处理。

非常感谢您的理解与配合,祝您生活愉快!

Best Regards,

DJI 大疆创新SDK技术支持

luoyexk commented 3 years ago

更新到4.14后,该问题还是偶发。 我的操作是:SDK从4.13升级到4.14后,马上覆盖安装手机上的版本,普通飞行拍了几张照片没问题;第一次使用missionControl进行任务点飞行然后就奔溃了,之后多次开关机重试都无法复现