在Ubtuntu下面的編譯,先整理編譯環境
1、安裝環境依賴
# 安裝必要工具
sudo apt update
sudo apt install -y cmake ninja-build git wget
# 安裝Android NDK(建議使用r21版本或更高)
wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
unzip android-ndk-r25b-linux.zip
export ANDROID_NDK_HOME=$PWD/android-ndk-r25b
2、再下載源碼
git clone https://github.com/alibaba/MNN.git
cd MNN
3、編譯
mkdir build && cd build
# 基礎編譯配置(armeabi-v7a架構,啟用NEON優化,關閉GPU)
cmake .. \
-DMNN_BUILD_FOR_ANDROID=ON \
-DANDROID_ABI=armeabi-v7a \
-DMNN_USE_NEON=ON \
-DMNN_USE_OPENCL=OFF \
-DMNN_USE_CUDA=OFF \
-DMNN_USE_METAL=OFF \
-DMNN_BUILD_MINI=OFF \
-G Ninja
可選參數說明:
-DMNN_USE_OPENCL=ON
:啟用 GPU 加速(需設備支持 OpenCL)。-DMNN_BUILD_MINI=ON
:精簡版(減少包大小,但限制固定輸入尺寸)。-DANDROID_ABI
:選擇目標架構(如arm64-v8a
、x86
)。
4、編譯so
ninja -j$(nproc)
5、集成
1)將libMNN.so
復制到 Android 項目的app/src/main/jniLibs
目錄下。
2)在build.gradle
中配置 NDK 架構:
android {
defaultConfig
{
ndk
?{
abiFilters "armeabi-v7a", "arm64-v8a" // 根據需求選擇 }
}
}
驗證測試
使用 MNN 提供的示例代碼測試推理功能,或通過以下命令運行單元測試:
bash
cd build/android
adb push test/MNNTest /data/local/tmp/
adb shell /data/local/tmp/MNNTest
注意事項
- 模型轉換:若需加載第三方模型(如 TensorFlow/PyTorch),需先用
MNN-Converter
工具轉換為.mnn
格式。 - 性能優化:根據設備特性調整編譯參數(如啟用 FP16/Int8 量化)。
- 依賴項:若需使用 MNN-CV 模塊,需額外編譯并鏈接相關庫。
通過以上步驟,即可在 Android 應用中使用 MNN 進行大模型推理,支持語音交互等功能。