此文版权属于作者所有,任何人、媒体或者网站转载、借用都必须征得作者本人同意!
开发环境:ubuntu 13.10
2017
现在要编译 40.0.2214.95 的版本不容易了,以下几点关心一下:
1、java 要 7
2、leveldatabase 无法同步,把 DEPS 和 .DEPS.git 里的:
3f77584eb3f9754bbb7079070873ece3f30a1e6b 改为 803d69203a62faf50f1b77897310a3a1fcae712b
3、export DEPOT_TOOLS_UPDATE=0
4、gclient sync --with_branch_heads
然后就靠运气了。
2015
- Get the Code (http://dev.chromium.org/developers/how-tos/get-the-code)
fetch --nohooks android
#如果这里发生 svn 的错误,尝试用命令
#fetch --nohooks android --nosvn=True
cd src
git checkout master;
cd ..
echo "{ 'GYP_DEFINES': 'OS=android', }" > chromium.gyp_env
gclient runhooks
上面步骤是下载当前最新的源码,如果要求指定版本的源码,参考:working with release branches
关键是 2 点,切换分支和同步,比如我想切换到版本 40.0.2214.109 的源码:
git checkout 40.0.2214.109
gclient sync --with_branch_heads
上面
echo "{ 'GYP_DEFINES': 'OS=android', }" > chromium.gyp_env
会使后面生成的 c++ 动态库为一个独立的包,如果需要把各个模块的 c++ 库都生成单独的动态库,需要这样:
echo "{ 'GYP_DEFINES': 'OS=android component=shared_library', }" > chromium.gyp_env
具体参考 gyp environment variables
- install deps for android
sudo src/build/install-build-deps-android.sh
- Build(https://code.google.com/p/chromium/wiki/AndroidBuildInstructions)
ninja -C out/Release chrome_shell_apk
#如果是webview工程,这样来
#ninja -C out/Release android_webview_apk
- Install apk to android device
build/android/adb_install_apk.py --apk ChromeShell.apk --release
or
adb install out/Release/apks/ChromeShell.apk
#webview 的工程输出是
#build/android/adb_install_apk.py --apk AndroidWebView.apk --apk_package org.chromium.android_webview.shell --release
- 更新代码
gclient sync --nohooks