Android renderer learn blog

Posted by shensunbo on November 17, 2025

仓库

github repo

code

cpp 部分目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
app/src/main/
├── cpp/                          # 你的 C++ 源代码
│   ├── native_lib.cpp
│   └── ...
├── jniLibs/                      # 预编译的 .so 库文件(按 ABI 分类)
│   ├── arm64-v8a/
│   │   └── libthirdparty.so
│   ├── armeabi-v7a/
│   │   └── libthirdparty.so
│   ├── x86/
│   │   └── libthirdparty.so
│   └── x86_64/
│       └── libthirdparty.so
└── cppLibs/                      # 第三方 C++ 库(源码/头文件)
    └── thirdparty/
        ├── include/              # 头文件
        │   └── *.h
        └── lib/                  # 静态库或源码
            └── *.a 或 *.cpp

build assimp for android

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 设置 NDK 路径
export ANDROID_NDK=/opt/ndk

# 创建 Android 构建目录
mkdir -p build-android-x86_64
cd build-android-x86_64

# 配置 CMake (针对 Android x86_64)
cmake .. \
  -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=x86_64 \
  -DANDROID_PLATFORM=android-29 \
  -DCMAKE_BUILD_TYPE=Release \
  -DASSIMP_BUILD_TESTS=OFF \
  -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \
  -DASSIMP_NO_EXPORT=ON

# 编译
cmake --build . -j$(nproc)

# strip 多余符号以减小库大小
$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded bin/libassimp.so 
or 
strip --strip-unneeded bin/libassimp.so

# 验证生成的库
file bin/libassimp.so*

bin/libassimp.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=1e3bb0c14cb676968780c11b989ab7d277ff8860, with debug_info, not stripped