项目中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