红联Linux门户
Linux帮助

Ubuntu 16.04编译Chromium for android

发布时间:2016-08-24 14:59:14来源:linux网站作者:king_jie0210
环境准备
Ubuntu 16.04 x64(Ubuntu 14.04 x64)
稳定的工具,如Shadowsocks。这是必须的,不然下载的程序不靠谱。Ubuntu环境下配置好终端。关于终端我会在另一篇文章中写出。
 
安装配置depot_tools
~$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
添加 depots_tools 路径到环境变量 PATH,假设当前 depots_tools 路径为 /home/levono/depot_tools,则在~/.bashrc在添加:
export PATH=$PATH:/home/levono/depot_tools
 
使配置生效:
~$source ~/.bashrc
 
获取chromium源码
~$mkdir ~/chromium && cd ~/chromium
~/chromium$ fetch --nohooks --no-history android
 
如果中途下载中断:
~/chromium$ gclient sync --nohooks
整个代码下载下来大概16G
 
配置编译环境
1.配置GYP
如果你选择使用GYP,需要创建一个名为 chromium.gyp_env 的文件
~/chromium$ echo "{ 'GYP_DEFINES': 'OS=android target_arch=arm', }" > chromium.gyp_env
~/chromium$ gclient runhooks
以上参数中的target_arch表示构建的平台,可选”arm”, “ia32″(x86架构), “mipsel”(MIPS架构)
 
2.配置GN
如果你选择使用GN,那么需要创建一个编译目录:
~/chromium/src$ gn args out/Default
在弹出的编辑器中写入:
target_os = "android"
target_cpu = "arm"  # (default)
is_debug = true  # (default)
# Other args you may want to set:
is_component_build = true
is_clang = true
symbol_level = 1  # Faster build with fewer symbols. -g1 rather than -g2
enable_incremental_javac = true  # Much faster; experimental
 
安装编译依耐环境
~/chromium/src$ build/install-build-deps-android.sh
 
确保 OpenJDK 1.7 为默认
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
 
然后同步目录文件
~/chromium/src$ gclient sync
 
编译并安装APK
如果下面的 adb_install_apk.py 脚本失败,确保aapt在你的PATH中,如果没有需要添加到环境变量中。
/path/to/src/third_party/android_tools/sdk/build-tools/{latest_version}/
 
将安卓手机通过USB线插入电脑,通过以下命令检测一下能否连接成功
third_party/android_tools/sdk/platform-tools/adb devices
 
1.初始化环境
~/chromium/src$ . build/android/envsetup.sh
 
2.编译完整浏览器
 
GYP编译
~/chromium/src$ ninja -C out/Release chrome_public_apk
 
GYP安装
~/chromium/src$ build/android/adb_install_apk.py out/Release/apks/ChromePublic.apk 
 
GN编译
~/chromium/src$ ninja -C out/Default chrome_public_apk
 
GN安装
~/chromium/src$ build/android/adb_install_apk.py out/Default/apks/ChromePublic.apk   
 
编译 Content shell
以GYP编译为例,如果为GN编译路径改为GN的路径即可
~/chromium/src$ ninja -C out/Release content_shell_apk
~/chromium/src$ build/android/adb_install_apk.py out/Release/apks/ContentShell.apk
提示:这将会在 out/Release/apks/ContentShell.apk 构建并安装一个安卓的apk安装包。对于GYP来说,如果你想生成一个调试版本可以修改Release为Debug,如果是GN那么就要修改为你自己设置的名称。
 
构建WebView Shell
AndroidWebView 是一个系统的框架组件,Android KitKat基于chromium的 content模块 实现的。WebView的外壳是顶部一个 URL地址栏 加上一个在Android系统中独立的WebView。
~/chromium/src$ ninja -C out/Release android_webview_apk
~/chromium/src$ build/android/adb_install_apk.py out/Release/apks/AndroidWebView.apk
 
快速编译安装(only GN)
GN’s “incremental install” uses reflection and side-loading to speed up the edit & deploy cycle (normally < 10 seconds).
Make sure to set is_component_build = true in your GN args
All apk targets have *_incremental targets defined (e.g. chrome_public_apk_incremental)
例如:
~/chromium/src$ ninja -C out/Default chrome_public_apk_incremental
~/chromium/src$ out/Default/bin/install_chrome_public_apk_incremental -v
 
For gunit tests (note that run_*_incremental automatically add –fast-local-dev when calling test_runner.py):
~/chromium/src$ ninja -C out/Default base_unittests_incremental
~/chromium/src$ out/Default/bin/run_base_unittests_incremental
 
For instrumentation tests:
~/chromium/src$ ninja -C out/Default chrome_public_test_apk_incremental
~/chromium/src$ out/Default/bin/run_chrome_public_test_apk_incremental
 
卸载:
~/chromium/src$ out/Default/bin/install_chrome_public_apk_incremental -v --uninstall
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23583.html