最近在学习使用android studio 的CMake 插件 进行编译ffmpeg 由于是自己单独摸索 出现了一系列的坑 特此记录一下 。
1.CMakeLists 脚本配置的学习阶段 没出啥问题 慢慢的就配置好了 but。。。 由于so库版本不全 gradle 中没有配置好格式 导致 打包失败(我只有arm版本的so库 需要在gradle 中配置abiFilter )
2.成功配置好CMakeLists 安全度过 编译期 打包一个apk 安装到手机 然后崩溃 报错 找不到so 库。。。 原因 Android studio 的so库路径 只认src 目录下的jniLibs 目录 不在这里 加入so库 编译打包apk后找不到so库资源。。。囧
3.编写cpp代码 由于ffmpeg工程是一个c项目 所以ffmpeg代码的引用(头文件)需要写道extren'C"{ } 里面 不在里面 报错。。。。
4.在使用ANativeWindow相关系列方法的时候在打包时 也 报错 找不到方法 原因:android 原声的so 库 也需要在CMakeLists 文件中配置 在关联的时候增加一个android 即可 :
例:(yuv 是 android 的 libyuv.so)
target_link_libraries( native-lib avcodec-57 avfilter-6 avformat-57 avutil-55 swresample-2 swscale-4 avdevice-57 yuv
${log-lib} android)
以上就是我在Android studio 中编译ffmpeg时遇到的所有坑。。现在感觉 都挺简单的。 心塞 希望其他人不要重蹈我的覆辙