gpt4 book ai didi

android - 如何在 Android Studio 1.5 中包含 .so 库和 .c 文件

转载 作者:行者123 更新时间:2023-11-30 01:46:48 25 4
gpt4 key购买 nike

我如何在 Android Studio 中添加 .so 库并通过包含 native 代码的 .c 文件调用它?

我用谷歌搜索了一个星期,尝试了所有可能的解决方案,但一无所获。

网站是this , this , this , this , 还有更多...

我是来调用 native .c 文件的,但我无法包含 .so 库,因为 Android Studio 找不到它。

我还不想使用新的实验性 gradle。

环境配置是下一个:

  • Android Studio 1.5

  • Gradle 2.8

  • Android 插件版本 1.3.0

  • JDK 1.8.0

这是我的代码和 gradle 配置的一部分:

渐变文件

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
....

ndk {
moduleName "ffmpegkit"
}
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

}

项目结构

CAPTURE

在 .C 文件中包含语句

enter image description here

如您所见,“libavcodec.so”未找到,但根据我找到的一些解决方案,项目结构是正确的。

有谁知道如何解决这个问题并将这些 .so 库与 .c 文件一起使用?

非常感谢!

最佳答案

我假设您的 .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"
}
}

确保 ffmpeg 库是使用兼容的 Android 工具链编译的!请注意,列出 ffmpeg 库的顺序很重要。比如,libavformat 依赖于 libavcodec,因此它应该放在前面。

关于android - 如何在 Android Studio 1.5 中包含 .so 库和 .c 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33610061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com