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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 超过 77% 的桌面计算机运行基于 Chromium 的浏览器
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件