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

Android:使用来自其他项目的so文件,android,android-ndk,shared-libraries,Android,Android Ndk,Shared Libraries,我尝试使用外部sdk,其中包括jar文件和一些*.so文件。还有来自eclipse的示例项目,其中包含相同的文件。当我将项目导入android studio时,它工作正常,但当我尝试将*.so文件从导入的项目复制到当前项目时,它会导致错误UnsativedLinkError 样本项目目标api 14,矿山项目目标api 27。我是否应该将ndk支持加入到我当前的项目中并重新编译这个*.so文件,或者是否可以选择使用示例中的旧文件?1。在主文件夹下创建一个名为jniLibs的文件夹,其结构如下图所

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

样本项目目标api 14,矿山项目目标api 27。我是否应该将ndk支持加入到我当前的项目中并重新编译这个*.so文件,或者是否可以选择使用示例中的旧文件?

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

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

依赖关系{ 实现文件'libs/your_own.jar' }

一切都会好起来的

编辑: 有些android DeviceSimulator有64位处理器,如果您的jinLibs没有arm64子文件夹,您可以将此过滤器AbiFilters添加到应用程序模块的build.gradle文件中:

defaultConfig {
    ...

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

}

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

这就是我在使用之前试图弄清楚的方法,但不起作用。在这里发布的结构类似于从eclipse项目导入到android studio后的示例项目。在我当前的项目中创建相同的文件后,我出现了上面提到的错误:谢谢,这解决了我的问题,所以示例中的文件只有armeabi版本,但在我的手机上运行良好。但是在我当前的项目中,我需要指定ndk配置,您在这里发布的ndk配置可以在同一个设备中工作,这对我来说很奇怪:/您试图从kotlin代码中调用本机方法,并期望调用外部so文件中的实现?不会的,因为名字是different@AlexCohn不。我不直接使用来自本机代码的方法,但我使用的库需要这些文件才能正常工作