androidndk配置环境变量
‘壹’ Android Studio cmake编译FFmpeg以及Jni调用
NDK是一系列工具集,帮助开发者快速开发C(或C++)动态库,并能自动打包为APK,减轻开发人员的打包工作。它集成交叉编译器,提供mk文件隔离差异,只需修改mk文件,就能创建出.so文件,自动打包与Java应用。JNI是Java与C/C++沟通机制,用于调用本地代码,实现高效性。Android Studio 2.2后引入cMake新开发方式,简化NDK开发与调试。以下步骤完成Android下FFmpeg编译与JNI调用。
首先,在Ubuntu中创建并配置FFmpegOnAndroid目录,进行NDK安装与配置。
1. 下载并解压Android NDK,配置环境变量。
2. 编译FFmpeg源代码,修改configure文件以适应Android平台。
3. 编写build.sh脚本编译FFmpeg,执行脚本完成编译。
编译完成后,将FFmpeg库文件移植至Android平台。
1. 使用最新Android Studio2.3.3,安装cmake和ndk,新建包含C++支持的工程。
2. 在工程中创建native-lib.cpp文件,实现Java与C++间调用。
3. 配置CMakeLists.txt文件,指定库文件路径。
4. 修改jni部分代码,集成FFmpeg功能。
5. 实现Java调用代码,展示FFmpeg使用效果。
通过此过程,可以在Android设备上使用FFmpeg进行音视频处理。详细源码可参考开源仓库:[GitHub源码下载地址](DaveBobo/JniFFmpeg)
相关参考文章包括:
1. [CSDN博客文章](blog.csdn.net/eastmoon5...)
2. [CSDN博客文章](blog.csdn.net/dagaozi/a...)
3. [CSDN博客文章](blog.csdn.net/hejjunlin...)
4. [CSDN博客文章](cnblogs.com/wanggang123...)
‘贰’ 基于高通SA8295平台下的QNN环境配置及模型转换
在进行基于高通SA8295平台下的QNN环境配置及模型转换时,首先需从高通QPM creat point 网站下载qnn dsk包、hexagon sdk包、以及android ndk包等。
接下来,配置环境变量以确保QNN、TensorFlow和ONNX能够正确运行。例如,设置环境变量ANDROID_NDK_ROOT和QNN_SDK_ROOT,分别指向android ndk和QNN SDK的根目录,如下所示:
$ export ANDROID_NDK_ROOT=/home/xxx/automotive_qnn_SDK/android-ndk-r19c-linux-x86_64/android-ndk-r19c/
export QNN_SDK_ROOT=/home/xxx/automotive_qnn_SDK/qnn-v1.13.0.220510062245_36458/
此外,配置Tensorflow运行所需的环境变量,通过运行相应的脚本实现,例如:
source ${QNN_SDK_ROOT}/target/x86_64-linux-clang/bin/envsetup.sh -t
此步骤中,通过python查看当前环境变量路径确保正确加载。
配置ONNX环境变量以支持其运行,类似地使用相应的脚本完成设置。
环境变量设置完成后,配置QNX工具链以在QNX环境中运行QNN模型。
为了执行一个自定义操作包的浅层模型,首先编译模型以支持CPU后端,然后构建示例模型,通过QNN SDK生成模型库。
在CPU上运行libqnn_model_float.so模型,使用QNN SDK提供的工具运行模型。
进行CNN模型的转换和执行时,首先将模型转换为.cpp、.bin和.json文件,然后生成对应的动态库(.so文件)。
指定编译器以针对特定架构(如QNX)完成编译,生成模型的量化版本,即生成.cpp、.bin和.json文件。
最终,通过QNN SDK提供的工具运行转换后的模型,并查看模型的检测结果,例如使用python脚本来展示InceptionV3模型的分类结果。