手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Android如何用JNI构建wav转码amr的so动态库

时间:2024-11-13 08:43:42

1、在电脑上面安装好ndk-bundle。为了使用“ndk build”命令进行构建,酋篚靶高需要在Android Studio的主项目找到“造婷用痃local.properties”文件(如图:本地属性配置文件.png)上面配置好ndk.dir的环境变量,因为我用的Mac电脑进行编程的,所以环境变量和Windows电脑上面不一样,具体的ndk-bundle都是在sdk目录下的。

Android如何用JNI构建wav转码amr的so动态库

2、新建一个AmrEncoder.java文件(如图:AmrEncoder类代码.png),用于加载so库和封装native的方法。其中的Mode是一个枚举类型,都是进行编码使用的模式。用于encode(int mode)方法中的mode参数。其中init(int dtx)是要在开始使用的时候进行初始化。

Android如何用JNI构建wav转码amr的so动态库

3、在jni目录下面创建amr_encoder.cpp文件,在amr_encoder.cpp中实现AmrEncoder相关的native方法,具体实现(如图)。

Android如何用JNI构建wav转码amr的so动态库

4、再到Android.mk文件中进行文件加载配置(如图:Android.mk配置内容.png)。其中LO潮贾篡绐CAL_MODULE、LOCAL_SRC_FILES、BUILD_SHARED_LIBRARY配置很关键。1.LOCAL_MODULE是指定配置构建最终库文件的名称。2.LOCAL_SRC_FILES是指定构建的加载本地源文件。3.BUILD_SHARED_LIBRARY是指定打共享库文件。因为我们需要构建so动态库,所以我们必须指定这个才行。如果是要构建.a静态库,就需要使用BUILD_STATIC。

Android如何用JNI构建wav转码amr的so动态库

5、在Application 的mk文件(如图:Application mk文件内容)中我们需要指定构建那些abi的平台库,这里不做特殊的指定,直接设置为全平台,就是abi:=all。最终构建出来的so动态库就是包含(arm64-v8a、armeabi、 armeabi-v7a 、mips 、mips64 、x86 、x86_64)七个类型的。

Android如何用JNI构建wav转码amr的so动态库

6、现在让我们开始进行构建工作。我们需要打开android studio下方的终端工具“Terminal”,通过"cd src/main/jni"命令行进入到项目的“jni目录”下(如图:命令行进入JNI目录.png)。

Android如何用JNI构建wav转码amr的so动态库

7、再执行“ndk-build”命令,就可以看到已经正式开始构建so动态库了(如图:ndk-build命令执行.png)。接下来需要等待大概2-3分钟就可以全部构建完成。

Android如何用JNI构建wav转码amr的so动态库

8、你肯定想知道构建的结果在哪里看呢?构建完成后去看jni目录的同一级中多出了两个目录:libs和obj,libs目录就是存放我们最终构建出来的.so动态库目录,里面有七个平台类型的库文件目录和文件(如图:构建出来的.so动态库位置.png),而obj目录则是保存构建过程中生成临时文件的地方。到这里我们就完成了全部的构建。

Android如何用JNI构建wav转码amr的so动态库
© 手抄报圈