Android M crash java.lang.UnsatisfiedLinkError: dl

2020-01-29 08:24发布

My Android application is crashing and giving me the following error message:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate

标签: android
6条回答
看我几分像从前
2楼-- · 2020-01-29 08:33

I could get it work in more recent SdkVersions by adding the following line to the NDK in the gradle script

android.ndk {
     <...> //rest of lines
     cppFlags.add("-fPIC") //generate position independent code
     <...> 
}
查看更多
▲ chillily
3楼-- · 2020-01-29 08:35

Try to change targetSdkVersion in build.gradle to 22 and APP_PLATFORM := android-22 in application.mk. That worked in my environment.

查看更多
劳资没心,怎么记你
4楼-- · 2020-01-29 08:42

Crash is coming because of following fact that has been changed in Android M

"On previous versions of Android, if your app requested the system to load a shared library with text relocations, the system displayed a warning but still allowed the library to be loaded. Beginning in this release, the system rejects this library if your app's target SDK version is 23 or higher. To help you detect if a library failed to load, your app should log the dlopen(3) failure, and include the problem description text that the dlerror(3) call returns. To learn more about handling text relocations, see this guide"

for more details please refer to this link

查看更多
啃猪蹄的小仙女
5楼-- · 2020-01-29 08:44

as a simple answer, you just need to target android 22 sdk instead of android 23 in your build configuration. For example with gradle use:

defaultConfig {
  targetSdkVersion 22
}
查看更多
三岁会撩人
6楼-- · 2020-01-29 08:47

This is related to Android 6.0 (Marshmallow) switching from OpenSSL to BoringSSL.

Your exception is occurring in the referenced library code. Contact the vendor for a fix or manually include the OpenSSL libraries to avoid the issue.

Also see: https://sourcedna.com/blog/20150806/predicting-app-crashes-on-android-m.html

查看更多
\"骚年 ilove
7楼-- · 2020-01-29 08:52

Before anything I must say that I do not understand all the specifics behind that subject, but I'll try to guide you through the path that helped me.

I saw that that problem appeared only when using target version as 23. Reading other posts was easy to identify that that happened with libs compiled with older ndk tools (ndk-build, to be more specific, but I do not know exactly if that tool came later for fulfilling new needs).

It happened with me using libiconv, a dependency from ZBar project. So I thought that recompiling it would help, and helped. I used the ndk-build tool to recompile zbar and iconv libs.

I hope it suffices.

查看更多
登录 后发表回答