【原創】freetype android交叉編譯


項目中Opencv需要顯示中文,由於本身並不支持,所以需要借助第三方的庫freetype來實現。這個庫雖然android本身也有使用,但並沒有暴露接口給外部使用。
freetype官網

方式1 腳本編譯

編譯環境

  • wsl ubuntu 20.04
  • freetype 2.10.4
  • ndk-r21e

freetype下載地址,這里使用最新版本2.10.4
image

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

編譯過程:
image

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

編譯生成結果:
image

方式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中
image

集成到項目中

【原創】Android 移植 freetype 應用實例

最后,如果需要精簡字體,可以使用fontmin, 使用方法

其他參考

WaterMarkAndroid
NDK 交叉編譯工具鏈使用
android studio 編譯freeType
Android Freetype的學習過程總結
Android使用freetype


免責聲明!

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



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