爬虫工程师的chromium定制系列:安卓版编译(一)

断断续续学习chromium已经好几个月了,基本上把能浏览的资料都大概看了一下,对chromium的代码有了大概的认识,作为一个爬虫工程师我有一些想法要在chromium上尝试。由于chromium内容实在是太庞大了,这个定制系列主要讲chromium中和我的想法实现有关的方面(也就是自动化定制相关),也算是对自己学习的一种督促吧。

在移动端已经成为互联网主流量的现在目标平台肯定是安卓端了,这一篇讲编译chromium for android的一些细节。首先参考chromium官方repo的指导:https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md

官方编译只支持ubuntu14.04,于是在vmware中安装一个ubuntu14.04的镜像,按照官方要求分配足够的cpu、内存和硬盘。系统安装好后在git clone depot_tools的时候由于你懂的原因需要配置科学上网环境,我用的是ss,然而ss客户端在ubuntu实在太难配了,我们可以在windows下(我主机是windows)开ss客户端,然后在ubuntu虚拟机中设置git的代理走windows的ss客户端(你需要允许来自局域网的连接),也就是类似这样:
git config –global http.proxy ‘your_host_local_ip:1080’
git config –global https.proxy ‘your_host_local_ip:1080’

下载下来之后,到了fetch –nohooks android这一步,此时需要在shell中设置环境变量set http_proxy以及set https_proxy到你的ss客户端,很多人卡在这一步就是因为代理问题,在知乎上甚至有个大神没法下载结果跑到泰国旅游才下载成功。因为chromium的git的repo有几十G,而且还有各种依赖,依赖的安装是chromium的工具自动化完成的,有的工具不认shell里的http_proxy和https_proxy环境变量导致下载失败,此时你可以试试proxychains来设置环境变量。经过漫长的同步,代码和依赖(gclient sync)同步下来了,执行到build/install-build-deps-android.sh的时候,有的依赖可能没法装上,此时需要手动安装比如openjdk。之后gclient runhooks的时候遇到代理问题也去看看前面的方法,总之我把所有依赖都搞定花了很多天。

依赖都搞定了以后,按照官方的剩下几个步骤就能编译出chromium for android了(如果提示缺某些依赖的话装上即可),并没有什么好讲的。

现在app是编译出来了,可是我们需要一个安卓的调试环境,在github上有一个项目:JackyAndroid/AndroidChromium,它把chromium整合进了android studio中,这里用起来非常方便。我安装的是android studio3.0,把那个项目clone下来之后用android studio打开后会设置代理开始无尽的依赖安装,最后如果android studio提示你升级某个的东西话不要升级(这个项目目前有些地方还不兼容),最后依赖安装完毕开始编译。你可能遇到某些不兼容的地方,比如enforceUniquePackageName啥的,改一下就完了,最后就能成功编译出apk了。现在某些逻辑在android studio中看和调试会好很多,当然了很多底层的东西还是只能在chromium源码里折腾,我也没找到一个比较好的单步调试C++代码的方法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注