有一种非常奇怪的情况。我在我的Android应用程序中使用this项目。要使用它,我必须在我的项目中包含JNA
。我从here下载了JNA的jar
文件。一切都很好。但是当我运行项目时,它为UnsatisfiedLinkError
文件提供了libjnidispatch.so
。我从this link下载了我想要的架构并重新运行了该项目。这个错误消失了,这是新的错误。
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'iengine_ansi_iso': Native library (android-arm/libiengine_ansi_iso.so) not found in resource path (.)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:303)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)
at com.sun.jna.Library$Handler.<init>(Library.java:179)
at com.sun.jna.Native.loadLibrary(Native.java:569)
at com.sun.jna.Native.loadLibrary(Native.java:544)
at com.foreepay.fingerprintextraction.ansiiso.AnsiIso$AnsiIsoNative.<clinit>(AnsiIso.java:55)
at com.foreepay.fingerprintextraction.ansiiso.AnsiIso.isoCreateTemplate(AnsiIso.java:500)
at com.foreepay.fingerprintextraction.fingerprint.core.ProcessImage.doInBackground(ProcessImage.java:163)
at com.foreepay.fingerprintextraction.fingerprint.core.ProcessImage.doInBackground(ProcessImage.java:39)
at android.os.AsyncTask$2.call(AsyncTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
在这种情况下,我试图做同样的事情。从here下载所需文件,将其放在文件夹(src/main/jniLibs/armeabi-v7a
)中,但没有运气。从那以后,我尝试了在Android Studio Project中添加*.so
文件的所有方法,但每次都失败了。
这些是我尝试添加.so
文件的链接,但每个人都有几乎相同的解决方案,这在我的情况下不起作用或者我的情况可能不是他们的情况。
还有一些。
我仍然无法找到原因。这是导致问题的代码块。
final AnsiIsoNative INSTANCE = (AnsiIsoNative) Native.loadLibrary("iengine_ansi_iso", AnsiIsoNative.class);
其中Native
是JNA
类。
感谢任何帮助。