Android Studio中预建的C库

Android Studio中预建的C库,android,android-studio,android-ndk,java-native-interface,Android,Android Studio,Android Ndk,Java Native Interface,几个月前,我开发了一个Android库,它使用C语言中的一些本机代码。我在Eclipse中开发了这样的库,因为Android Studio不支持Android NDK 为了分发库,我将项目编译为.jar(不包括AndroidManifest.xml)。如果有人想在Eclipse中使用该库,它所需要做的就是在文件夹/libs中添加.jar以及所有架构的预构建C代码(.so)。这将起作用,客户端项目将以以下文件结束: MyProject ---| libs/ -------| Library.jar

几个月前,我开发了一个Android库,它使用C语言中的一些本机代码。我在Eclipse中开发了这样的库,因为Android Studio不支持Android NDK

为了分发库,我将项目编译为.jar(不包括
AndroidManifest.xml
)。如果有人想在Eclipse中使用该库,它所需要做的就是在文件夹
/libs
中添加.jar以及所有架构的预构建C代码(.so)。这将起作用,客户端项目将以以下文件结束:

MyProject
---| libs/
-------| Library.jar
-------| armeabi/
-------| x86/
-------| ...
MyProject
---| app
-------| libs/
-----------| Library.jar
-------| jniLibs/
-----------| armeabi/
-----------| x86/
-----------| ...
现在,我希望能够在Android Studio项目中以类似的方式使用我的库

我所尝试的:

在应用程序模块的文件夹
/libs
中添加Library.jar。然后,添加
build.gradle
文件(在依赖项中)
compilefiles('libs/Library.jar')
。最后,在jniLibs中添加为所有体系结构编译的C代码(.so)。 意思是,我有以下文件:

MyProject
---| libs/
-------| Library.jar
-------| armeabi/
-------| x86/
-------| ...
MyProject
---| app
-------| libs/
-----------| Library.jar
-------| jniLibs/
-----------| armeabi/
-----------| x86/
-----------| ...
然而,我总是以这个例外结束:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.app-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "lib.so"
我查找了这个异常,它是因为系统找不到已编译的C库而生成的。但是,我不知道在library.jar中可以将我的预构建C库放在哪里


谢谢您的回答。

看来您必须将jniLibs文件夹放入主模块下的src文件夹中。这样,Android Studio应该能够选择.so文件

结构应如下所示:

MyProject
---| libs/
-----| Library.jar
---| src/
-----| main/
-------| jniLibs/
---------| armeabi/
---------| x86/
---------| ...

来源:

您还可以在app build.gradle中定义jniLibs位置

源集{
主要{
jniLibs.srcDirs=['your/path/to/jniLibs')]
} 
}

谢谢您的回复。但是,它不起作用。但是你的回答让我找到了解决方案,那就是把
jniLibs
文件夹放在
src/main