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