原因:由于需要将混音模块封装成android的.so,故在此记录一下有关so的创建和流程调用
概况:通过JNI编写生成.so文件,通过.so文件进行内部方法的调用.
JNI:java native interface,是native编程接口,它允许在java虚拟机内运行java代码与其他编程语言(一般C/C++)模块进行交互。
JNI调用原因:
1:标准java类库中不支持应用程序所需的功能。
2:已经有了其他语言开发的模块,需要与java进行交互
3:利用C/C++核心代码的实现
有关.so文件的创建流程如下:
1:创建新项目MainActivity,创建WebRtcMixer.java文件,在该文件中定义需要暴露的native接口。
2:在main文件夹下创建一个文件夹名称为JNI,主要用于存放后续生成的JNI文件。
3:利用android studio 的Terminal命令行进入JNI文件夹下,然后使用javac -h生成JNI对应的.h文件.(使用javac而没有使用javah,是因为当前安装的android sdk内部没有javah.exe),可以看到在当前JNI文件夹中生成了xx_xx_xx_WebRtcMixer.h文件
javac -h . XXXXXXXX\WebRtcMixer.java
4:在JNI文件夹中创建对应的.cpp文件实现.h中的方法.其中涉及到一些JNI类型与C的映射关系,可以简单分为基本数据类型和引用类型,基本数据类型可直接进行数据操作,而引用类型是需要通过对象指针对应的不同方法进行