我在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')
}
项目正确构建没有任何错误,但onRuntime我遇到以下错误,如何解决此错误?
以下行发生错误,
sgfplib=new JSGFPLib((UsbManager)getSystemService(Context.USB_SERVICE));
错误:
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
答案 0 :(得分:23)
您可以将.so
个文件放入jniLibs
的{{1}}文件夹中。这是在AS 0.7.2 1
作为示例,请参阅this中的@CommonsWare,或查看此page了解官方样本(滚动到页面底部)
答案 1 :(得分:3)
看起来它正在尝试加载本机库,并且Android Gradle中还没有支持本机代码。您应该仔细检查您的图书馆的文档以确认;我试图查找它,但它看起来像是一个没有可公开访问的文档的商业图书馆。
答案 2 :(得分:3)
这是我在尝试将.so文件导入Android Studio 1.5时与同一个指纹库集成时的最后一次黑客攻击 此行发生错误
sgfplib=new JSGFPLib((UsbManager)getSystemService(Context.USB_SERVICE));
解决方法是在src / main / jniLibs中创建一个名为armeabi-v7a的文件夹,因此层次结构应该作为附加的屏幕截图。
希望这可以帮助:)使用最新的Android Studio 1.5
答案 3 :(得分:2)
有一种方法..但它是一个简单的黑客。 你可以绑定armeabi文件夹里面有XXXX.so文件。
这些是本机代码,而@Scott Barta表示Android Gradle中不支持本机代码。
所以让我们像普通的jar文件一样包装它。 第1步:创建一个文件夹并将其命名为'lib' 第2步:在lib文件夹中获取armeabi&gt; xxxx.so文件。 Setp 3:现在压缩lib文件并将压缩文件命名为XXXXX.zip。
现在项目结构将是XXXX.zip-lib-armeabi-xxxx.so
步骤4:将zip文件复制到android studio的Libs文件夹。 步骤5:将xxxx.zip重命名为xxxx.jar 第6步:将以下代码粘贴到gradle的依赖项中。
依赖{ 编译fileTree(dir:'libs',包括:'* .jar') }
现在同步gradle然后运行。
注意:只有当模拟器的cpu是armeabi时,此armeabi才有效。 对于intel x86,您可能需要在zip中创建“x86”文件夹并将相应的.so文件粘贴到该文件夹中。
这对我有用。试试吧:)
快乐编码..