Android:使用其他项目中的so文件

时间:2018-11-23 20:42:15

标签: android android-ndk shared-libraries

我尝试使用外部SDK,其中包括jar文件和一些* .so文件。也有来自eclipse的示例项目,其中包含相同的文件。当我将项目导入android studio时,它工作正常,但是当我尝试将* .so文件从导入的项目复制到当前项目时,会导致错误UnsatisfiedLinkError

示例项目目标api 14,我的项目目标api27。我应该为当前项目提供ndk支持并重新编译此* .so文件,还是可以选择使用示例中的旧文件?

1 个答案:

答案 0 :(得分:1)

1。在jniLibs文件夹下创建一个名为main的文件夹,结构如下图。

 |–app:
    |–|–src:
    |–|–|–main
    |–|–|–|–jniLibs
    |–|–|–|–|–armeabi
    |–|–|–|–|–|–.so Files
    |–|–|–|–|–x86
    |–|–|–|–|–|–.so Files
    ...
    |–|–|–|–|–other abi folder such as armeabi-v7a
    |–|–|–|–|–|–.so Files
  1. 将.jar文件放置在项目libs文件夹中,并在module build.gradle文件中添加以下行

    依赖项{        实施文件('libs / your_own.jar')     }

一切正常。

已编辑: 一些android设备(模拟器)具有64位处理器,如果您的jinLibs没有arm64子文件夹,则可以将此过滤器(abiFilters)添加到应用模块的build.gradle文件中:

defaultConfig {
    ...

    ndk {
        abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
    }

}

这将告诉应用程序仅在现有文件夹中使用.so文件。