您的位置:首页 > 移动开发 > Android开发

Chromium for Android (2015)

2015-10-22 11:19 513 查看

Chromium for Android (2015)

Chromium for Android 2015
前提

获取代码

签出并安装 depot_tools 包

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

检查最新的稳定版本源码 可选

配置你的构建环境

配置GYP

配置GN

安装JAVA JDK

安装使用 OpenJDK

如果你想使用 Oracle Java JDK

安装构建的依赖关系

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

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

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

构建并安装APK

构建完整的浏览器

构建Content Shell

构建WebView Shell

运行

运行 Chrome public

运行 Content shell

运行 Android WebView shell

调试

调试 Chrome public

调试 Content shell

调试 Android WebView shell

测试

定制

其他

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[/code] 

运行 Content shell:

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

运行 Android WebView shell:

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

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[/code] 

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android chromium