Build Assimp library for Android 首先各路教程中有推薦使用 NDK 或者 STANDALONE TOOLCHAIN 編譯的,根據我的理解,這兩種方式都是可以的,如果能直接使用 NDK 編譯成功的話,就沒有必要使用 STANDALONE TOOLCHAIN 了。 NDK ...
Build Assimp library for Android
首先各路教程中有推薦使用 NDK 或者 STANDALONE TOOLCHAIN 編譯的,根據我的理解,這兩種方式都是可以的,如果能直接使用 NDK 編譯成功的話,就沒有必要使用 STANDALONE TOOLCHAIN 了。
NDK build assmip library
cmake
cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN} -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=${NDK_PATH} \
-DANDROID_FORCE_ARM_BUILD=TRUE -DANDROID_STL=c++_shared -DANDROID_TOOLCHAIN=clang \
-DANDROID_NATIVE_API_LEVEL=21 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
-DCMAKE_INSTALL_PREFIX=/assimp -DCMAKE_BUILD_TYPE=Release \
-DASSIMP_BUILD_TESTS=OFF -GNinja ..
其中:
NDK_PATH=${ANDROID_HOME}/ndk-bundle/
CMAKE_TOOLCHAIN=${ANDROID_HOME}/ndk-bundle/build/cmake/android.toolchain.cmake
註意其中的 ASSIMP_BUILD_TESTS
一定要設置關閉,否則編譯失敗,報一個 pthread 的鏈接錯誤。
cmake 執行後會有一些 warnning 可以不用解決。
-- Could NOT find rt (missing: RT_LIBRARY)
INFO RT-extension not found. glTF import/export will be built without Open3DGC-compression.
make
然後執行 ninja
, 此處遇到問題是 error: unknown type name 'z_crc_t'
直接找到對應的源文件,添加聲明即可。
typedef unsigned long z_crc_t;
Use lib
將動態庫和頭文件加入工程即可使用,記得將 cmake build 目錄下的 include/assimp/config.h
拷貝到所用的工程的 include 目錄下。
參考
https://wxdut.com/15271715037538.html
Windows環境下編譯Assimp庫生成Android可用的.so文件
Android compilation on Windows