当会写简单的JNI之后,接下来要做的就是调用第三方SO了。我下面写的是调用ffmpeg的so库。ffmpeg的编译我就不说了,我用的是别人已经编译好的so库,以及h文件。
先看jni目录结构
主要包含4部分。
第一部分就是已经编译好的ffmpegso文件
第二部分就是ffmpeg的h文件。既include文件夹下的文件。因为自己写的so调用其它库方法,也就是通过调用头文件里面定义的方法。
第三部分就是自己写的c文件,既com_gao_ffmpeg_JniUtil文件。
在这里面调用了方法
第四部分就是android.mk,application.mk.
完成这部分之后,接下来就是利用ndk-build编译。我这里是window环境,设置好ndk的环境变量后,可以直接使用ndk-build命令。
ndk环境变量是:
设置好ANDROID_NDK跟Path变量后,用Terminal切换目录到jni目录,执行ndk-build。即可生成so.
生成的过程中,X86的平台不知道为什么无法生成,导致报错,于是我就在application.mk设置生成平台为armeabi.
执行完毕后会有个lib文件夹,so包就在里面。