項目中Opencv需要顯示中文,由於本身並不支持,所以需要借助第三方的庫freetype來實現。這個庫雖然android本身也有使用,但並沒有暴露接口給外部使用。
freetype官網
方式1 腳本編譯
編譯環境
- wsl ubuntu 20.04
- freetype 2.10.4
- ndk-r21e
freetype下載地址,這里使用最新版本2.10.4

arm64-v8a編譯腳本
#!/bin/bash
API=21
NDK=/mnt/e/Android/android-ndk-r21e
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT=$TOOLCHAIN/sysroot
export CC=$TOOLCHAIN/bin/aarch64-linux-android${API}-clang
export CFLAGS="-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -DNDEBUG -fPIC --target=aarch64-none-linux-android21 --gcc-toolchain=$TOOLCHAIN "
CPU=armv64-v8a
PREFIX=$(pwd)/android/$CPU
function build
{
./configure \
--host=aarch64-linux-android \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--with-zlib=no \
--with-bzip2=no \
--with-png=no \
--with-harfbuzz=no \
--with-sysroot=$SYSROOT \
make -j8
make install
}
build
編譯過程:

注意別忘了加make install, 否則不會把生成的庫拷貝到Prefix目錄中。
編譯生成結果:

方式2 ndk-build
編譯環境
- windows ndk-bundle
- freetype 2.10.4
Android Mk Application Mk make makefile筆記
首先把ndk-build配置到系統環境變量,即添加android sdk下的ndk-bundle到系統PATH變量。然后參考 OpenGL ES 文字渲染方式有幾種? 配置編譯mk, 目前我只能成功編譯靜態庫.a, 動態庫編譯失敗。
參考 Google的編譯腳本
編譯結果會生成在當前目錄的obj.local中

集成到項目中
其他參考
WaterMarkAndroid
NDK 交叉編譯工具鏈使用
android studio 編譯freeType
Android Freetype的學習過程總結
Android使用freetype
