MMDeploy 为 android 平台提供交叉编译的构建方式.
MMDeploy converter 部分在 linux 平台上执行,SDK 部分在 android 平台上执行.
MMDeploy 的交叉编译分为两步:
-
在 linux 平台上构建 MMDeploy converter. 请根据 How to build linux 进行构建.
-
使用 android 工具链构建 MMDeploy SDK.
本文档仅提供在 linux 平台上使用 android 工具链进行交叉编译构建 MMDeploy SDK 的方法.
-
cmake
保证 cmake的版本 >= 3.14.0. 如果不是,可以参考以下命令安装 3.20.0 版本. 如要获取其他版本,请参考 这里
wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz tar -xzvf cmake-3.20.0-linux-x86_64.tar.gz sudo ln -sf $(pwd)/cmake-3.20.0-linux-x86_64/bin/* /usr/bin/
-
ANDROID NDK 19+
保证 android ndk 的版本 >= 19.0. 如果不是,可以参考以下命令安装 r23c 版本. 如要获取其他版本,请参考 这里
wget https://dl.google.com/android/repository/android-ndk-r23c-linux.zip unzip android-ndk-r23c-linux.zip cd android-ndk-r23c export NDK_PATH=${PWD}
如果您只对模型转换感兴趣,那么可以跳过本章节.
名称 | 安装方式 |
---|---|
OpenCV (>=3.0) |
|
ncnn | ncnn 是支持 android 平台的高效神经网络推理计算框架 目前, MMDeploy 支持 ncnn 的 20220721 版本, 且必须使用 git clone 下载源码的方式安装。请到 这里 查询 ncnn 支持的 android ABI。
|
OpenJDK | 编译Java API之前需要先准备OpenJDK开发环境 请参考 Java API 编译 进行构建. |
下文展示构建 SDK 的样例,用 ncnn 作为推理引擎。
- cpu + ncnn
export ANDROID_ABI=arm64-v8a cd ${MMDEPLOY_DIR} mkdir -p build_${ANDROID_ABI} && cd build_${ANDROID_ABI} cmake .. \ -DMMDEPLOY_BUILD_SDK=ON \ -DMMDEPLOY_BUILD_EXAMPLES=ON \ -DMMDEPLOY_BUILD_SDK_JAVA_API=ON \ -DOpenCV_DIR=${OPENCV_ANDROID_SDK_DIR}/sdk/native/jni/abi-${ANDROID_ABI} \ -Dncnn_DIR=${NCNN_DIR}/build_${ANDROID_ABI}/install/lib/cmake/ncnn \ -DMMDEPLOY_TARGET_BACKENDS=ncnn \ -DMMDEPLOY_SHARED_LIBS=OFF \ -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=${ANDROID_ABI} \ -DANDROID_PLATFORM=android-30 \ -DANDROID_CPP_FEATURES="rtti exceptions" make -j$(nproc) && make install
参考 cmake 选项说明