打造专属的Chromium for Android
自从写了上篇《chrome 源码研究启航篇》后,到今天已经有了近一个月的时间,这段时间做了啥呢?研究到啥程度了呢?后续节奏是否有调整呢?
针对上边疑问,下面做逐个解答:
一,这段时间做了啥?
总体来讲,这段时间主要利用闲余在编译和熟悉源码,完成了对源码的编译和Gradle构建,并将项目开源,命名为:公英小蒲。Git地址:https://github.com/derry/delion.git
具体的:
1,获得源码
和预期计划的一样,要深入研究Chrome首先要拿到完整的代码,进行完整的编译,先从宏观上搞清楚他的整体结构,搞清楚他开源的代码是否完整可用,进而确定下一步研究思路。
获取源码官方有文档,http://dev.chromium.org/developers/how-tos/get-the-code,获取过程虽然等待时间漫长但总体还算比较顺利。fetch --nohooks android 完成后,代码基本就都拉下来了。过程中如果中断了,可以执行gclient sync继续。
因为这时候使用的—nohooks,所以真正编译需要的资源这时候还没有下。这一步一般没啥问题。
2,编译
代码下完后,下一步选择编译方式:使用GYP或GN。
GYP的编译方式出来的比较早(网上查找也基本都是GYP的编译,我们现在项目里的编译方式就是GYP,市面上开源的如365浏览器也是,早期版本GYP方式确实可行,为什么说早期可行看后边)。我优先选择了使用GYP方式编,考虑这样的话还有成功的案例可以参考。(后来为此决定付出了折腾一晚上的代价)
根据官方说明:
echo "{'GYP_DEFINES': 'OS=android target_arch=arm', }" > chromium.gyp_env
指定编译类型。
然后运行gclient runhooks 获取真正的GYP需要的构建所需的资源。
正常情况执行后会把需要的所有资源下载下来。但是实践过程中发现里面有坑。
经历的那些坑:
a,运行gclient runhooks
If you really want to run this, either run
`python build/gyp_chromium.py`explicitly by hand
or set the environment variable GYP_CHROMIUM_NO_ACTION=0.