如何为Android平台构建编译Assimp的.so动态库?
Assimp Android 平台.so动态库编译教程
前置依赖
- Android NDK:推荐使用r21e及以上稳定版本,避免高版本NDK出现不必要的ABI兼容问题
- CMake:3.10及以上版本,可直接使用Android Studio自带的CMake工具
- Assimp源码:拉取官方仓库的最新稳定tag版本,不推荐使用开发分支,避免编译异常
编译操作步骤
步骤1:编写编译脚本
在Assimp源码根目录下新建build_android.sh脚本,内容如下,脚本内路径和参数可根据自身需求修改:
#!/bin/bash # 替换为你本地的NDK实际存放路径 NDK_PATH=<你的NDK绝对路径> # 可选ABI:armeabi-v7a、arm64-v8a、x86、x86_64,可按需增删 ABIS=("arm64-v8a" "armeabi-v7a") # 替换为你的应用最低支持的Android API级别 ANDROID_API=21 for ABI in "${ABIS[@]}" do BUILD_DIR=build/android/$ABI mkdir -p $BUILD_DIR cd $BUILD_DIR cmake ../../../ \ -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=$ABI \ -DANDROID_NDK=$NDK_PATH \ -DANDROID_PLATFORM=android-$ANDROID_API \ -DCMAKE_BUILD_TYPE=Release \ -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \ -DASSIMP_BUILD_TESTS=OFF \ -DASSIMP_INSTALL=ON \ -DCMAKE_INSTALL_PREFIX=../../../install/android/$ABI make -j8 make install cd ../../../ done
参数说明:
- 关闭
ASSIMP_BUILD_ASSIMP_TOOLS和ASSIMP_BUILD_TESTS可以大幅减少编译耗时,同时避免无关依赖报错 CMAKE_INSTALL_PREFIX指定编译后产物的输出目录,方便统一提取
步骤2:执行编译
执行以下命令给脚本添加执行权限并运行:
chmod +x build_android.sh ./build_android.sh
等待编译完成即可,编译时长取决于你的设备性能,一般5-15分钟不等。
步骤3:提取产物
编译完成后:
- 动态库文件存放在源码根目录的
install/android/[对应ABI]/lib/libassimp.so - 头文件存放在
install/android/[对应ABI]/include目录下,直接复制到你的Android项目cpp目录引用即可
常见问题排查
- 编译提示找不到NDK路径:检查脚本内
NDK_PATH是否和本地实际存放路径一致,Windows用户可通过Git Bash执行脚本,避免路径格式错误 - 应用运行时提示找不到符号:确认编译时设置的
ANDROID_API不高于你应用的minSdkVersion,同时确认打包的ABI和编译出的.so的ABI完全匹配 - 动态库体积过大:可在cmake参数中添加
-DCMAKE_CXX_FLAGS_RELEASE=-Os优化体积,编译后也可通过NDK自带的strip工具移除调试符号进一步压缩体积
内容的提问来源于stack exchange,提问作者toto_tata
相关产品推荐
相关产品推荐

