在Android Studio中添加.so文件

Jos*_*son 23 android android-studio

我正在尝试添加一个外部库,Scandit.我一直收到这个错误:

    java.lang.UnsatisfiedLinkError: Couldn't load scanditsdk-android-3.3.1 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.clover.barcode2-1.apk,libraryPath=/data/app-lib/com.clover.barcode2-1]: findLibrary returned null
    at java.lang.Runtime.loadLibrary(Runtime.java:365)
   .....
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我没有正确包含库附带的.so文件,但我无法弄清楚如何做到这一点.

我正在使用Android Studio,我通过转到模块设置 - >库添加了库,并添加了带有jar的目录和带有so文件的目录.

Aja*_*y S 70

您可以使用gradle 0.7.2+在Android Studio中添加预构建的*.so文件.首先在此位置/ app/src/main/location创建jniLibs,然后在jniLibs中复制带有*.so文件(armeabi,armeabi-v7a,mips,x86)的所有文件夹.

在此输入图像描述

  • 你救了我的生命兄弟,我正在努力工作2个半小时,工作完美,所有奇怪的错误都消失了,谢谢你分享你的智慧.@Josh Wilson您可以标记为解决方案吗? (3认同)
  • Thaaaaaaaaaaaaaanks你帮了很多忙. (2认同)

pre*_*ela 9

使用本机库(so文件)您需要在"build.gradle"文件中添加一些代码.

此代码用于清除"armeabi"目录,并在"清理项目"时将"so"文件复制到"armeabi"中.

task copyJniLibs(type: Copy) {
    from 'libs/armeabi'
    into 'src/main/jniLibs/armeabi'
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(copyJniLibs)
}
clean.dependsOn 'cleanCopyJniLibs'
Run Code Online (Sandbox Code Playgroud)

我从下面提到过. https://gist.github.com/pocmo/6461138


小智 6

我的项目中有一个libs文件夹,其中包含外部库,在gradle的构建文件中将行编译fileTree(dir:'libs',include:'*.jar')添加到依赖项{}中.

然后我创建了一个lib文件夹,里面有一个armeabi文件夹,我插入了所有需要的.so文件.然后我将文件夹压缩成.zip(zip文件中的结构现在是lib/armeabi/*.所以)我将.zip文件重命名为armeabi.jar并将其作为外部库添加到libs文件夹中.