Error Loading Runtime library in Android Studio

Tariq picture Tariq · May 23, 2013 · Viewed 19.6k times · Source

In my android project I am using an external jar library which utilizes a runtime library libiconv.so. I have the library included in my project's lib directory. The library is included for all three architectures in the following directory hirarcy.

libs>
armeabi>libiconv.so
armeabi-v7a>libiconv.so
x86>libiconv.so

But I am getting Exceptions as logged by log cat:

05-23 12:18:58.857    3081-3081/?                              E/AndroidRuntime: FATAL EXCEPTION: main
        java.lang.ExceptionInInitializerError
        at java.lang.Class.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1319)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.UnsatisfiedLinkError: Couldn't load libiconv.so from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.tariq.buynow-1.apk,libraryPath=/data/app-lib/com.tariq.buynow-1]: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:365)
        at java.lang.System.loadLibrary(System.java:535)
        at com.tariq.buynow.CameraActivity.<clinit>(CameraActivity.java:30)

Where at CameraActivity.java:30 is:

static { System.loadLibrary("libiconv.so"); }

I have also tried

static { System.loadLibrary("iconv"); }

Is it some thing to do with gradle configuration, as I am new to Android Studio, or the error source is something else?

Answer

Michael Lawrie picture Michael Lawrie · Jun 7, 2013

I had this same problem trying to use ZBar SDK. You most likely need to edit your build.gradle to make sure that the native libraries are included in your APK. This is how I fixed your problem: https://stackoverflow.com/a/16993006/2221876