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

集成到项目中

【原创】Android 移植 freetype 应用实例

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

其他参考

WaterMarkAndroid

NDK 交叉编译工具链使用

android studio 编译freeType

Android Freetype的学习过程总结

Android使用freetype

【原创】freetype android交叉编译的更多相关文章

  1. Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

    Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...

  2. (转)Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程) .

    声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交 ...

  3. Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)

    原文地址:http://blog.csdn.net/sttyytw/article/details/17005263 声明:本教程在參考了下面博文,并经过自己的摸索后实际操作得出,本教程系本人原创,因 ...

  4. 在win8.1 64位系统+cocos2d-x2.2.3下搭建android交叉编译环境

    搭建前须要下载的软件包(默认已搭建好cocos2d-x而且可在VS上执行,本人VS版本号为2013): 1:java 下载地址:http://www.java.com/zh_CN/download/m ...

  5. [原创]AndroBugs_Framework Android漏洞扫描器介绍

    [原创]AndroBugs_Framework Android漏洞扫描器介绍 1 AndroBugs_Framework Android 漏洞扫描器简介 一款高效的Android漏洞扫描器,可以帮助开 ...

  6. window7下 cocos2dx android交叉编译环境部署小结

    上周被android交叉编译搞惨了,还好最后弄好了,写个小结以后备用吧. 步骤,1.下载cygwin的devel和shells模块 2. 2.设置环境变量 a.设置NDK_ROOT b.设置Path ...

  7. 【优才原创】Android的拖放机制

    优才网 [优才原创]Android的拖放机制 2016-04-18 优才学院 优才网 一.拖放机制概述 ² 拖放操作是手指触摸屏幕上的某一对象.然后拖动该对象.最后在屏幕的某个位置释放该对象并运行某种 ...

  8. Cocos2d-x在win7下的android交叉编译环境

    cocos2d-x在win7下的Android交叉编译环境 2014年4月14日 cocos2d-x环境配置 前面把Visual Studio+Python开发环境配好了,但还没有讲如何在Androi ...

  9. Ubuntu搭建Android交叉编译环境

    一.下载 Android NDK Android NDK官方下载页:http://developer.android.com/tools/sdk/ndk/index.html如果需要旧版本的,比如10 ...

  10. 【原创】Android 系统稳定性 - ANR(二)

    文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任. 很久之前写的了,留着有点浪费,共享之.编写者:李文栋P.S. OpenOffice粘贴过来后格式有些混乱. 1.2 如何分析ANR问题 引 ...

随机推荐

  1. IIS添加MIME类型实现未知文件下载

    application/octet-stream 无需重启

  2. 使用CMD创建任意文件

    C:\>fsutil file createnew 用法 : fsutil file createnew <文件名> <长度> 范例:fsutil file create ...

  3. TCP连接connect函数返回错误

    如果是 TCP 套接字,那么调用 connect 函数将激发 TCP 的三次握手过程,而且仅在连接建立成功或出错时才返回.其中出错返回可能有以下几种情况: 三次握手无法建立,客户端发出的 SYN 包没 ...

  4. BFS板子题

    #include <iostream> #include <string> #include <queue> using namespace std; int n, ...

  5. 【剑指Offer】【树】树的子结构

    题目:输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) /* struct TreeNode { int val; struct TreeNode *left ...

  6. Linux环境使用Docker安装MySql

    系统环境: CentOS 7.6 64位(同样适用于Ubuntu) 安装步骤: 1.创建文件夹 /home/docker/mysql/config /home/docker/mysql/data 2. ...

  7. QTextEdit

    if texttmp != "": # 光标自动下移 self.textEdit.append(texttmp) QApplication.processEvents() self ...

  8. SignalR基本认识以及使用

    SignalR基本认识以及使用 什么是WebSocket.SignalR WebSocket 1.WebSocket基于TCP协议,支持二进制通信,双工通信. 2.性能和并发能力更强. 3.WebSo ...

  9. xlsx 前端导出Excel

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 使用Wireshark完成实验1

    用来观察协议执行实体之间交换的报文的基本工具被称为分组嗅探器(packet sniffer),一个分组嗅探器被动地拷贝(嗅探)计算机发送和接受的报文,也能显示出这些被捕获报文的各个协议字段的内容.Wi ...