致命异常:Android Studio库中的主要java.lang.UnsatisfiedLinkError

Ram*_*sad 8 android android-library android-studio

我在android studio中的项目的libs文件夹中添加了FDxSDKProAndroid.jar文件.还在build.gradle文件中添加了依赖项.

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile files('libs/FDxSDKProAndroid.jar')
}
Run Code Online (Sandbox Code Playgroud)

项目正确构建没有任何错误,但onRuntime我得到以下错误,如何解决此错误?

以下行发生错误,

sgfplib=new JSGFPLib((UsbManager)getSystemService(Context.USB_SERVICE));
Run Code Online (Sandbox Code Playgroud)

错误:

12-04 13:35:13.022  12345-12345/? E/AndroidRuntime? FATAL EXCEPTION: main
    java.lang.UnsatisfiedLinkError: Couldn't load jnisgfplib from loader dalvik.system.PathClassLoader[DexPathList[dexElements=[zip file "/data/app/com.mycompany.mytrack-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.mycompany.mytrack-1, /vendor/lib, /system/lib]]]: findLibrary returned null
            at java.lang.Runtime.loadLibrary(Runtime.java:359)
            at java.lang.System.loadLibrary(System.java:514)
            at SecuGen.FDxSDKPro.JSGFPLib.<clinit>(JSGFPLib.java:150)
            at com.mycompany.mytrack.FingerPrintActivity.onCreate(FingerPrintActivity.java:105)
            at android.app.Activity.performCreate(Activity.java:5122)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
            at android.app.ActivityThread.access$600(ActivityThread.java:156)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            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:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
12-04 13:35:13.033      511-529/? E/AppErrorDialog? Failed to get ILowStorageHandle instance
Run Code Online (Sandbox Code Playgroud)

Avi*_*h R 23

您可以将.so文件放入jniLibs文件夹中src/main.这是在AS 0.7.2 1中引入的

作为一个样本,看到这个@CommonsWare,或看到这个页面的官样(滚动到页面底部)


小智 6

这是我在尝试将 .so 文件导入 Android Studio 1.5 时与指纹设备的同一库集成时的最后一次 hack 此行中发生错误

sgfplib=new JSGFPLib((UsbManager)getSystemService(Context.USB_SERVICE));
Run Code Online (Sandbox Code Playgroud)

解决方案是在 src/main/jniLibs 中创建一个名为 armeabi-v7a 的文件夹,因此层次结构应与附加的屏幕截图相同。

在此处输入图片说明

希望这可以帮助:) 使用最新的 Android Studio 1.5


Sco*_*rta 4

看起来它正在尝试加载本机库,并且 Android Gradle 尚不支持本机代码。您应该仔细检查您的图书馆的文档以进行确认;我试图查找它,但它看起来像是一个商业图书馆,没有可公开访问的文档。

  • 是的,Android gradle 中仍然不支持本机库。只是我遵循了简单的 hack。效果很好。https://groups.google.com/d/msg/adt-dev/nQobKd2Gl_8/Z5yWAvCh4h4J (2认同)
  • @Ramprasad,我认为这可能不再是正确的答案。 (2认同)