断断续续学习 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++代码的方法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.