Android app crashes with std::bad_cast on mavsdkServer.run("udp://:14550")
josephm28 opened this issue · 9 comments
Hi!
I'm using mavsdk:2.0.1
and mavsdk-server:2.0.0
in my Android app. I finally have everything compiling, but when I call mavsdkServer.run("udp://:14550")
, I get an app crash with
libc++abi E terminating with uncaught exception of type std::bad_cast: std::bad_cast
libc A Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 16094 (mavsdk-event-qu), pid 15871
I've also been intermittently dealing with
java_vm_ext.cc:591] JNI DETECTED ERROR IN APPLICATION: field operation on NULL object: 0x0
java_vm_ext.cc:591] in call to GetObjectField
java_vm_ext.cc:591] from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.Class)
but right now the first error is where I'm stuck.
I did see #70 which looks like a similar error at the end of the thread, but no resolution there.
Do you have any suggestions?
Hmm... could you maybe try the latest version 2.1.0? https://central.sonatype.com/search?q=mavsdk
Updated and I get the same two errors.
I can get the sample android app working correctly, but the mavsdk version is pretty old. I'm trying to update that as well to 2.1.0 to narrow down issues.
Here's a PR to update several pieces of the android-client, including the mavsdk 2.1.0 - #170 seems to build and run okay (at least drone connection).
So now I'm wondering if there's some dependency issue in my app... but not sure what that would be.
@Sefibrah: Does 2.1.0 work for you? Just to have another data point
I'm also occasionally seeing this error, again pointing to some weird dependency issue?
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNKSt6__ndk14__fs10filesystem4path10__filenameEv" referenced by "/data/app/~~8GsfdN9bL2Pf58nQvs0l8g==/com.dronedeploy.beta-tXNIZA4nw3M4Efvp3NFflw==/lib/arm64/libmavsdk_server.so"...
at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
at java.lang.System.loadLibrary(System.java:1661)
at io.mavsdk.mavsdkserver.MavsdkServer.<clinit>(MavsdkServer.java:6)
Are you getting mavsdk from Maven or compiling it yourself?
I'm using Maven.
We also use the DJI SDK in the same app and I think I've traced the issue to com.secneo.sdk
. To set up that SDK, you configure (e.g. setup)
class MyApplication : Application() {
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
// before installation, please don't use MSDK
com.secneo.sdk.Helper.install(this)
}
...
}
If you remove com.secneo.sdk.Helper.install(this)
there are no issues with the JNI or the MAVSDK and I get a connection to the drone. Of course, that means that the DJI SDK doesn't work... So at least I know a bit more about what's causing it, but still not sure why it's causing the JNI crashes.