Chromium for Android (2015)

Chromium for Android (2015)



1.前提

可用的 Linux 构建环境(windows/mac 等系统平台不支持安卓)

2.获取代码

1 )签出并安装 depot_tools 包

2 )创建一个文件夹存放源码并开始获取源代码:

$ mkdir ~/chromium                    # 如果文件夹已经存在 cd ~/chromium
~/chromium$ fetch --nohooks android   # 这个过程可能要持续30多分钟

3.检查最新的稳定版本源码 (可选)

如果你想同步一个比较稳定的版本(LKGR:last known good revision),
你可以看一下 这个最新的一个 或者 最新的100个

# 比如 lkgr-sha1:b445e7ccd70f09e53a6c93dee8a269d6bf7ee6f0
~/chromium$ gclient sync --nohooks -r <lkgr-sha1> 

4.配置你的构建环境

对于项目构建系统我们可以选择GN或者GYP,但是推荐使用 GYP 的构建方式。

1 )配置GYP:

如果你选择使用GYP,下一步就是要配置 .gclient 文件了,需要创建一个名为 chromium.gyp_env 的文件:

~/chromium$ echo "{ 'GYP_DEFINES': 'OS=android', }" > chromium.gyp_env

如果你想要构建X86架构的,可以做如下修改:

~/chromium$ echo "{ 'GYP_DEFINES': 'OS=android target_arch=ia32', }" > chromium.gyp_env

如果你想构建MIPS架构的,可以做如下修改:

~/chromium$ echo "{ 'GYP_DEFINES': 'OS=android target_arch=mipsel', }" > chromium.gyp_env

注意:如果你使用 GYP_DEFINES 环境变量,它将覆盖任何你做过修改的设置;具体的 GYP 推荐设置可以看一下 这篇文章

chromium.gyp_env设置好之后,就需要通过下面这条命令从GYP来同步项目源码:

~/chromium$ gclient runhooks

2 )配置GN:

如果你选择使用GN,那么需要创建一个文件夹并设置构建标识:

~/chromium$ gn args out/Default

Tips:
你可以使用其他的名称替换out/Default,但是不能用out/Debug 或者 out/Release*,因为这与GYP的冲突。

以下是使用GN的构建命令:

target_os = "android"
target_cpu = "arm"  # 默认,可选 "x86" 或者 "mipsel"
is_debug = true     # 默认

# 其他的几个可以设置的参数:
is_component_build = true
is_clang = true
symbol_level = 1  # 使用-g1比-g2更好一些

具体参数设置可以参考 这篇文章

5.安装JAVA JDK

安装使用 OpenJDK

安装 openjdk 1.6/1.7

~/chromium$ sudo apt-get install openjdk-7-jdk

确保设置为默认:

sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config jarsigner

如果你想使用 Oracle Java JDK

1 ) 访问 网址
2 ) 同意许可协议
3 ) 下载 jdk-6uXX-linux-x64.bin(XX是最新的小版本号)
4 ) 如果你没有Oracle帐号并且也不想注册一个,可以看看 这篇文章

以下是在Ubuntu中如何配置Oracle Java JDK到默认环境:

mv ~/Downloads/jdk-6u*-linux-x64.bin /tmp/
chmod 755 /tmp/jdk-6u*-linux-x64.bin
cd /usr/lib/jvm
sudo /tmp/jdk-6u*-linux-x64.bin -noregister

# 设为默认
sudo update-alternatives --install /usr/bin/javac javac
/usr/lib/jvm/jdk1.6.*/bin/javac 50000
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.*/bin/java 50000
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.*/bin/javaws 50000
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.*/bin/javap 50000
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.*/bin/jar 50000
sudo update-alternatives --install /usr/bin/jarsigner jarsigner /usr/lib/jvm/jdk1.6.*/bin/jarsigner 50000
sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config jarsigner

确保 /usr/bin/java 是你Path中的第一个,比如执行命令:

which java

正常应该返回的是 /usr/bin/java

6.安装构建的依赖关系

1 ) 更新项目构建所需要的系统包:

~/chromium$ src/build/install-build-deps-android.sh 

2 ) 需要接受 Android SDK 包的服务条款

3 ) 安装 Google Play 服务(这是在构建之前必须要有的步骤):

~/chromium$ src/third_party/android_tools/sdk/tools/android update sdk --no-ui --filter 57

7.构建并安装APK

1)如果下面的 adb_install_apk.py 脚本失败,确保aapt在你的PATH中,如果没有需要添加到环境变量中。

/path/to/src/third_party/android_tools/sdk/build-tools/{latest_version}/

2)插入你的安卓设备,设置->关于手机->构建次数修改为7次,设置->开发人员选项->USB调试修改为启用。
3)连接电脑时可能会有提示是否允许访问电脑,选择允许。
4)可以通过以下命令检测你的安卓设备是否连接成功:

third_party/android_tools/sdk/platform-tools/adb wait-for-devices

如果它马上终止了说明连接成功了,如果是挂起了说明设备尚未连接。

构建完整的浏览器:

~/chromium/src$ ninja -C out/Release chrome_public_apk
~/chromium/src$ build/android/adb_install_apk.py out/Release/apks/ChromePublic.apk

Tips: 如果是GN构建方式 out/Release 需要替换成你自己设置的名称

构建Content Shell:

这个壳具体的内容模块可以看一下 这篇文章

~/chromium/src$ ninja -C out/Release content_shell_apk
~/chromium/src$ build/android/adb_install_apk.py out/Release/apks/ContentShell.apk

Tips: 这将会在 out/Release/apks/ContentShell.apk 构建并安装一个安卓的apk安装包。对于GYP来说,如果你想生成一个调试版本可以修改Release为Debug,如果是GN那么就要修改为你自己设置的名称。

如果你要使用自定义的输入目录代替标准的out/dir,可以使用 CHROMIUM_OUT_DIR 来设置:

> export CHROMIUM_OUT_DIR=out_android

构建WebView Shell:

AndroidWebView 是一个系统的框架组件,Android KitKat基于chromium的 content模块 实现的。
WebView的外壳是顶部一个 URL地址栏 加上一个在Android系统中独立的WebView。
缺点就是这个shell只能在软件渲染模式中运行。

~/chromium/src$ ninja -C out/Release android_webview_apk
~/chromium/src$ build/android/adb_install_apk.py out/Release/apks/AndroidWebView.apk

如果你想测试一下完整的Android系统的Webview和chromium中的webview有什么不同,可以看一下 这篇文章

8.运行

环境设置:

~/chromium/src$ . build/android/envsetup.sh

具体的命令行参数设置可以参考 这篇文章

运行 Chrome public:

~/chromium/src$ build/android/adb_run_chrome_public http://www.baidu.com

运行 Content shell:

~/chromium/src$ build/android/adb_run_content_shell http://www.baidu.com

运行 Android WebView shell:

~/chromium/src$ build/android/adb_run_android_webview_shell http://www.baidu.com

9.调试

调试 Chrome public:

~/chromium/src$ build/android/adb_gdb_chrome_public

调试 Content shell:

~/chromium/src$ build/android/adb_gdb_content_shell

调试 Android WebView shell:

~/chromium/src$ build/android/adb_gdb_android_webview_shell http://www.baidu.com

10.测试

运行测试可以参考 这篇文章

11.定制

如果你想要重新构建一个特定的发布版本 libchrome.so(chromium 25以上版本)
1)在你的安卓设备上打开chrome,访问chrome://version
2)在列表中找到 Build ID,然后复制一下
3)访问 http://storage.googleapis.com/chrome-browser-components/{上面复制的BuildID}/index.html
4)根据自述文件(README)中的步骤下载列表中的文件。

12.其他

1)2015年5月23日,谷歌工程师在 reddit 宣布chromium for android 包括用户界面在内的所有源码开源!
2)刚编译的 48.0.2543.0 版本的 chrome-android apk

这里写图片描述

猜你喜欢

转载自blog.csdn.net/Kuerjinjin/article/details/49331003