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