Build Assimp library for Android


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 -DANDROID_ABI=arm64-v8a \
    -DANDROID_STL=c++_shared -DANDROID_TOOLCHAIN=clang -DANDROID_NATIVE_API_LEVEL=23 \
    -DCMAKE_BUILD_TYPE=Release \
    -DASSIMP_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=FALSE -DASSIMP_NO_EXPORT=TRUE \
    -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=FALSE -DASSIMP_BUILD_FBX_IMPORTER=TRUE  -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \
    -DCMAKE_INSTALL_PREFIX=./install \
    -DCMAKE_MAKE_PROGRAM=ninja -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
ninja install

Update:

下述問題不再出現

此處遇到問題是 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

CMake

Windows環境下編譯Assimp庫生成Android可用的.so文件

Android compilation on Windows


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM