在Android Studio中加载运行时库时出错

Tar*_*riq 5 android runtimeexception android-studio

在我的android项目中,我使用的是外部jar库,它使用运行时库libiconv.so.我的库包含在项目的lib目录中.该库包含在以下目录hirarcy中的所有三种体系结构中.

libs>
armeabi>libiconv.so
armeabi-v7a>libiconv.so
x86>libiconv.so
Run Code Online (Sandbox Code Playgroud)

但我得到了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)
Run Code Online (Sandbox Code Playgroud)

在CameraActivity.java:30的位置是:

static { System.loadLibrary("libiconv.so"); }
Run Code Online (Sandbox Code Playgroud)

我也试过了

static { System.loadLibrary("iconv"); }
Run Code Online (Sandbox Code Playgroud)

是否与gradle配置有关,因为我是Android Studio新手,或者错误来源是其他什么?

Mic*_*rie 5

尝试使用ZBar SDK时遇到同样的问题.您很可能需要编辑build.gradle以确保APK中包含本机库.这就是我解决问题的方法:https://stackoverflow.com/a/16993006/2221876

  • 在最新版本的Android Studio上,你只需要`src/main/jniLibs`中的本地库,gradle将完成剩下的工作. (7认同)