13 May 2015

Chromium项目现在还不提供编译出完整的Android版Chrome的途径。针对Android平台的编译仅限于一些简化版的外壳程序,例如Content Shell、Chrome Shell、WebView Shell等。 我的目标是编译出ChromeShell.apk。

官网的说明页面里介绍了详细的步骤,这里就不重复了。要指出的主要有两点。

第一点比较简单,就是要确保网络能翻墙。Google的资源很多都在墙外,而编译过程中的步骤需要访问这些资源,所以翻墙是必备的。

第二点是要避免我所遇到的坑。我之前曾经编译过桌面版的Chrome,因此已经有了大部分代码。然后我看到官网说明页面上有下面这段话:

NOTE: if didn't do fetch android to get your code (e.g. you're reusing a desktop checkout), you'll likely need to do:
~/chromium$ echo "target_os = ['android']" >> .gclient && gclient sync

也就是说可以不必用fetch android来重新下载代码,而是可以重用已有的桌面版代码。于是我就这么做了,但编出来的APK却与官方编出来的怎么也不一致!

无奈之下我去相关的Google讨论组询问,结果发现原来是因为我的代码没有更新到最新版。 我是反复确认执行了gclient sync,但后来才知道这条命令并不会更新代码。要将代码更新到最新版,要么重新执行fetch,要么使用git pull。这就是比较坑的地方:同样是Google提供的工具, repo sync明明就是用来更新代码的!当然,主观方面则要归咎于先入为主的成见。

如果之前从没编译过Chromium,按照官网的说明一步步来,反倒不会出现什么问题。