Ubuntu11.10编译chromium for android

来源:互联网 发布:异星工厂0.15 mac 编辑:程序博客网 时间:2024/05/21 17:15
官网:
http://dev.chromium.org/developers/how-tos/get-the-code
http://code.google.com/p/chromium/wiki/AndroidBuildInstructions
按照官网:
http://dev.chromium.org/developers/how-tos/get-the-code
Bootstrap using the tarball部分的说明一步步做下来。
进入解压后的源码目录下/path/to/chromium/src:
1. . build/install-build-deps.sh
2. gclient sync --nohooks
3. . build/android/envsetup.sh
4. gclient runhooks
5. sudo ./install-build-deps-android.sh
6. install the Oracle Java JDK (按照官方说明安装配置:http://code.google.com/p/chromium/wiki/AndroidBuildInstructions)
7. . build/android/envsetup.sh
8. android_gyp
9. ninja -C out/Release -j10 content_shell_apk
Notes:
gclient runhooks一定要执行成功,因为gclient runhooks会自动调用gyp生成平台相关的文件,没有这些文件,可能无法编译通过。
gclient runhooks如果执行不成功,多半是因为代码没有sync全,可以重新执行gclient sync --nohooks,确保其成功执行完。
gclient sync --nohooks如果执行不成功,只能多试几次了,google的链接经常断的。
编译过程中遇到的两个主要问题:
1.链接成动态库的时候因为内存耗尽链接无法通过。
解决方法:
通过增加交换分区的方式增加内存,增加交换分区方法:
参考链接:http://easior.is-programmer.com/posts/37888.html
sudo dd if=/dev/zero of=/var/tmp/swap bs=1k count=8192000
sudo mkswap /var/tmp/swap
sudo swapon /var/tmp/swap
重新开机时,需要重新执行sudo swapon /var/tmp/swap
确认交换分区是否挂载成功:
swapon -s
2.动态库编译完成后,在生成contentshell.apk的R.java时报错.
解决方法:
由于不熟悉chromium的编译系统,折腾了两天才搞清楚,
原来是因为机子上没有安装ant.
chromium for android的java部分是通过ant编译的,所以要确保机子上有安装ant.
Ubuntu安装ant方法:
1.通过命令行安装ant1.7 : apt-get install ant1.7。
2.Apache官网下载最新版本的ant:http://ant.apache.org/bindownload.cgi
3.解压下载下来的.tar.gz文件:tar -xf apache-ant-1.8.2-bin.tar.gz
4.把3中解压出来的apache-ant-1.9.1目录下的lib copy到/usr/share/ant/下.

步骤4是因为通过命令行安装的ant,安装的jar包不全。生成contentshell.apk的R.java时,虽然能找到ant,但还是会报找不到ant中某个jar包的错误。

PS:上述方法通过tarball包下载的是完整的chromium源代码,包括了linux,windows,mac平台相关的代码,sync之后的源代码大小有11G.

下载 chromium for android的方法
参考链接:http://blog.csdn.net/yajun0601/article/details/8583289
简单记录下步骤:
1. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
2. $ export PATH="$PATH":`pwd`/depot_tools
3.gclient config https://chromium.googlesource.com/chromium/src.git --git-deps
4.步骤3会生成.gclient 文件,在这个文件末尾加上:target_os = ['android']
5.gclient sync --nohooks
6. . build/android/envsetup.sh
7.gclient runhooks

Notes:
步骤3中的地址,不是官网上的gclient config https://src.chromium.org/chrome/trunk/src。
按照gclient config https://src.chromium.org/chrome/trunk/src地址下载的chromium for android是编译不过的,执行gclient runhooks时,会提示找不到各种文件。
使用gclient config https://chromium.googlesource.com/chromium/src.git --git-deps下载的chromium for android 是可以编译的,
但前提是gclient sync --nohooks一定要执行完,否则也会报找不到文件的错误。执行了好几次才成功执行完。链接总是断,没办法,需要点耐心。
把 "src/third_party/WebKit/LayoutTests": None加到.gclient的custom_deps中,third_party/WebKit目录下的内容都下载不下来了,不知道什么原因。
把"src/third_party/WebKit/LayoutTests": None从.gclient的custom_deps中删掉,third_party/WebKit/目录下的内容就可以正常下了。