如何在Android Studio中添加.so库并通过带有本机代码的.c文件调用它?
我用谷歌搜索了一个星期,我已经尝试了我找到的所有可行的解决方案,但没有。
这些网站有this,this,this,this等等......
我到达时调用了原生的.c文件,但我不能包含.so库,因为Android工作室找不到它。
我还不想使用新的实验性gradle。
环境配置是下一个:
Android Studio 1.5
Gradle 2.8
Android插件版本1.3.0
JDK 1.8.0
这是我的代码和gradle配置的一部分:
GRADLE FILE
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
....
ndk {
moduleName "ffmpegkit"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
项目结构
包含.C文件中的语句
正如您所看到的,找不到“libavcodec.so”,但根据我发现的一些解决方案,项目结构是正确的。
有谁知道如何解决这个问题并将这些.so库与.c文件一起使用?
非常感谢!
答案 0 :(得分:1)
我假设您的.c文件位于项目中 ffmpegkit 目录下的某个位置。您也将ffmpeg二进制文件复制到了项目的jniLibs
。到现在为止还挺好。
您需要提供ffmpeg包含文件的路径,以便您的.c文件可以编译。您还必须列出链接器所需的库,以查找您正在构建的 libffmpegkit.so 的外部引用:
defaultConfig {
....
ndk {
moduleName "ffmpegkit"
abiFilter "armeabi"
cFlags "-I/qqq/ffmpeg"
ldLibs "-llog -L src/main/libs", "avformat", "avcodec", "avutil"
}
}
确保使用兼容的Android工具链编译ffmpeg库!请注意,列出ffmpeg库的顺序很重要。比如, libavformat 依赖于 libavcodec ,因此它应该在之前使用。