用docker编译android平台PDFium源码

濮阳立果
2023-12-01

 

Google的PDFium开源项目主要提供了各种linux环境下的编译版本,但是,win和mac环境下编译却是很困难,我主要采用构建docker容器的方式,编译pdfium的android环境:

  1. 拉一个Ubuntu Docker容器
docker pull ubuntu:bionic (Ubuntu 18.04,不同的pdfium版本需要的ubuntu可能不同)

2.运行docker容器

docker run -v /Users/Desktop/pdfium:/root --name pdfium -it ubuntu:bionic /bin/bash 
(本地文件目录和docker创建关联)

3.更新并安装依赖项

apt-get update
apt-get install -y build-essential git subversion pkg-config python libtool cmake glib2.0-dev libatspi2.0-dev wget lsb-release vim sudo

4.从Google获取最新的depot_tools(pdfium使用google的编译工具gn编译)

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

5.将depot_tools文件夹设置为PATH

PATH=$PATH:/root/depot_tools

6.设置pdfium下载库

gclient config https://pdfium.googlesource.com/pdfium.git

7.将目标操作系统Android添加到我们的配置文件.gclient 中

echo "target_os = ['android']" >> .gclient

8.现在同步存储库

gclient sync

9.同步完成后,运行Android的构建依赖项

cd pdfium
./build/install-build-deps-android.sh

10.生成构建参数之前

gclient runhooks

11.(可选)编辑BUILD.gn并找到“ pdf_common_config”部分,在cflags中添加“ -DNOCJK ”-这将停止将字体嵌入到.so文件中并减小其大小,在定义中添加“ FPDFSDK_EXPORTS ”-这会将符号表嵌入共享库中。

config("pdfium_common_config") {
  cflags = [ "-DNOCJK" ]
  ldflags = []
  include_dirs = [ "." ]
  defines = [
    "PNG_PREFIX",
    "PNG_USE_READ_MACROS",
    "FPDFSDK_EXPORTS",
  ]

12.现在使用以下参数编译文件,gn args out 主要参数如下所示:

is_debug = false
target_os = "android"
target_cpu = "arm"
arm_version = 7
pdf_is_standalone = true
is_component_build = true
pdf_enable_xfa = false
pdf_enable_v8 = false
pdf_use_skia_paths = false
pdf_use_skia = false
symbol_level = 1

13.现在调用构建

ninja -C out

构建成功后,可以在“ out”文件夹中找到.so文件。

 

参考文章:

主要参考:https://medium.com/@raju.kandasamy/how-to-build-pdfium-library-for-android-70e42ad31f6c

辅助参考:https://pdfium.googlesource.com/pdfium/

 

 类似资料: