再战 Pdfium.so : 多线程、直接使用 Visual S
make -j 选项可以启用并行编译。make -j3 all 指令开启三股线程,命令行刷刷地跑。一次“新鲜”的编译耗时5分15秒,临时空间仅占32MB。
NDK 路线很成熟,但手写 makefile 的方式改代码太不方便。于是尝试直接使用 Visual Studio 交叉编译 pdfium.so 。
之前提过的 Libjpeg-turbo-VS 项目里面正好有交叉编译的子项目。不过缺少相关组件,无法加载,提示说:需安装 Mobile development with c++。
在 VS 中点击 Tools -> Get Tools and Features,可以看到 Mobile development with c++ 组合,选择后,安装空间竟然需要8GB。其实只需下载两兆字节的 C++ Android development tools 就可以了。
安装完毕后,可以加载项目了。需要在设置中填写一些路径变量:
这个时候再编译,大概率还是会出错。我遇到的错误是:找不到 -landroid_support
、crtend_so.o
、crtbegin_so.o
。其实新版本NDK已经用不到一些库链接。而下载的两兆字节的 C++ Android 支持其实是个插件,这个插件定义了一些宏,用不到的库链接写死在里面,所以链接会出错。这个时候,要需要修改项目的 linker -> input,删除插件用到的宏$(StlLibraryName)
等,自己添加诸如c++_static;m;log
之类的库链接。
VS交叉编译项目搭建成功后,看上去就像普通的win32项目,可以查看定义等。虽然全局搜索没有 AndroidStudio 来的方便,但是不会动辄索引,占用很多C盘空间。
开启多线程编译后,VS比 make -j3 更快,少用一分钟左右。