当前位置: 代码迷 >> Android >> 怎么编译Chrome for Android
  详细解决方案

怎么编译Chrome for Android

热度:52   发布时间:2016-05-01 12:31:54.0
如何编译Chrome for Android

Chrome for Android ContentShell


编译Chrome for Android目前有两种方式,一是在ROM编译环境下编出libchromeview.so,二是用Chromium主干的代码编译出ContentShell(一个测试用的外壳,只包含核心的代码,不包含Chrome的扩展特性,说明参见http://www.chromium.org/developers/content-module),这两种方式目前都只支持在64位Ubuntu下面进行。


在ROM编译环境下编出libchromeview.so

这种方式比较简单,下载当前版本Chrome for Android的tarball(http://chromium-browser-source.commondatastorage.googleapis.com/chrome_android_tarball.html),解压后把Chrome目录放入ROM目录的$ROM/external下面,然后按照README.Chrome_for_Android_SourceDistribution里面的说明进行编译即可。
  1. 编译出来的libchromeview.so,可以按照README.Chrome_for_Android_SourceDistribution说明打一个新的Chrome.apk运行,也可以直接替换掉手机里面/data/data/com.android.chrome/下面的libchromeview.so运行;
  2. 不知道是不是版本不匹配的关系,用最新的Chrome搭配自己编译的libchromeview.so,复杂的网页会崩溃,简单的网页就还OK;
  3. 可以输出日志(#include "/base/logging.h"),但是没法调试和跟踪(理论上应该可以使用命令行gdb进行调试,不过配置起来应该比较麻烦,没有去尝试);

用Chromium主干的代码编译出ContentShell

这种方式比较麻烦,具体步骤请参考(https://code.google.com/p/chromium/wiki/AndroidBuildInstructions)。
  1. 下载Chromium的tarball(http://chromium-browser-source.commondatastorage.googleapis.com/chromium_tarball.html)后需要使用gclient sync -nohooks同步新的代码,tarball里面的svn记录是1.6版本的,如果你的svn是1.7版本,需要先downgrade到1.6版本;
  2. 同步最新代码的时候,如果提示guava和jsr-305这两个目录同步错误,需要先移除$SRC/third_party/guava和$SRC/third_party/jsr-305后再重新同步(后续新的tarball应该不需要了);
  3. gclient runhooks一直失败,不过貌似也不影响编译;
  4. 如果编译时提示缺少$SRC/build/util/LASTCHANGE文件,可以从上面的Chrome for Android的tarball里面copy过来;
  5. 运行build/android/adb_gdb_content_shell就可以使用gdb进行调试;
  6. adb_gdb_content_shell实际上调用了adb_gdb,adb_gdb在中文Ubuntu环境下有一个bug,第861行”if [ "$STATE" != "Running" ]; then“可能会失败,因为在中文环境STATE实际值可能是”运行中“,这一行需要改成”if [ "$STATE" != "运行中" ]; then“;

  相关解决方案