Process: cn.androidstar.BloodPressure, PID: 21082
java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/cn.androidstar.BloodPressure-1/lib/arm/libiconv.so: has text relocations
at java.lang.Runtime.loadLibrary(Runtime.java:384)
at java.lang.System.loadLibrary(System.java:1086)
at cn.androidstar.butler.bloodpressure.activity.CameraScanActivity.(CameraScanActivity.java:65)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1070)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2342)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504)
at android.app.ActivityThread.access$900(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:5546)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:682)
解決辦法
隨着今年國產手機ROM都逐漸升級到了Android6.0系統,我相信肯定會有很多開發者會遇到此類問題,今天我就分享一個解決辦法,其實非常簡單,這個libiconv.so(xx.so)文件使用了較低版本的SDK,當時我的targetSdkVersion為23,所以我就降低到了22,就不會再報錯了,而且能夠正常使用了。 這是libiconv.so文件的解決辦法,如果你用的那個xx.so文件降低到22還報錯的話,建議繼續降低版本嘗試。
例子:
compileSdkVersion 23
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.loonggg.xxxx.xxxx"
minSdkVersion 11
targetSdkVersion 22
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
versionCode 55
versionName "5.2.4"
// dex突破65535的限制
multiDexEnabled true
// 默認是umeng的渠道
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "loonggg"]
}