可用的 Linux 构建环境(windows/mac 等系统平台不支持安卓)
$ mkdir ~/chromium # 如果文件夹已经存在 cd ~/chromium
~/chromium$ fetch --nohooks android # 这个过程可能要持续30多分钟
如果你想同步一个比较稳定的版本(LKGR:last known good revision),
你可以看一下 这个最新的一个 或者 最新的100个
# 比如 lkgr-sha1:b445e7ccd70f09e53a6c93dee8a269d6bf7ee6f0
~/chromium$ gclient sync --nohooks -r <lkgr-sha1>
对于项目构建系统我们可以选择GN或者GYP,但是推荐使用 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
如果你选择使用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更好一些
具体参数设置可以参考 这篇文章
安装 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
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
~/chromium$ src/build/install-build-deps-android.sh
~/chromium$ src/third_party/android_tools/sdk/tools/android update sdk --no-ui --filter 57
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 需要替换成你自己设置的名称
这个壳具体的内容模块可以看一下 这篇文章
~/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
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有什么不同,可以看一下 这篇文章
环境设置:
~/chromium/src$ . build/android/envsetup.sh
具体的命令行参数设置可以参考 这篇文章
~/chromium/src$ build/android/adb_run_chrome_public http://www.baidu.com
~/chromium/src$ build/android/adb_run_content_shell http://www.baidu.com
~/chromium/src$ build/android/adb_run_android_webview_shell http://www.baidu.com
~/chromium/src$ build/android/adb_gdb_chrome_public
~/chromium/src$ build/android/adb_gdb_content_shell
~/chromium/src$ build/android/adb_gdb_android_webview_shell http://www.baidu.com
运行测试可以参考 这篇文章
如果你想要重新构建一个特定的发布版本 libchrome.so(chromium 25以上版本)
1)在你的安卓设备上打开chrome,访问chrome://version
2)在列表中找到 Build ID,然后复制一下
3)访问 http://storage.googleapis.com/chrome-browser-components/{上面复制的BuildID}/index.html
4)根据自述文件(README)中的步骤下载列表中的文件。
1)2015年5月23日,谷歌工程师在 reddit 宣布chromium for android 包括用户界面在内的所有源码开源!
2)刚编译的 48.0.2543.0 版本的 chrome-android apk