下載並編譯Chrome瀏覽器For Android
最近因為公司專案,需要對Chrome的某一模組進行修改後,相容公司的Android裝置,現記錄下Chrome的原始碼下載過程,作為筆記。
1. 準備Ubuntu系統,最好是物理機上安裝,因為Chrome首次編譯耗時較長,對硬體要求較高。我使用的Ubuntu版本為14.04.1。
2. 下載Chrome原始碼要翻牆,這個可以通過更換hosts解決(修改hosts後,在下載其中的第三方庫程式碼時還是會有問題,這時需要設定代理,後面會講到),從laod.cn上下載linux可用的hosts檔案,替換到/etc/hosts。注意備份原檔案。網址如下:
https://laod.cn/hosts/2017-google-hosts.html
3. 根據谷歌官方安裝步驟的操作步驟下載:下述命令僅供參考,具體情況根據連結。
3.1 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
3.2 export PATH="$PATH:/path/to/depot_tools"
3.3 mkdir ~/chromium && cd ~/chromium
3.4 fetch --nohooks android
3.5 cd src
3.6 If you have an existing Linux checkout, you can add Android support by appending target_os = ['android'] to your .gclient file (in the directory above src):
[ echo "target_os = [ 'android' ]" >> ../.gclient ]
gclient sync
3.7 build/install-build-deps-android.sh
在3.7安裝依賴package是可能會報錯,此時需要更換apt源,可參考另一篇文章修改apt源。
3.8 gclient runhooks
4. 在執行fetch --nohooks android時,一般在最後會有如下third-party無法下載。
src/third-party/pdfium
src/third-party/skia
src/third-party/swiftshader
src/third-party/webrtc
src/third-party/android_tools/ndk
解決方法:
通過http/https代理:
4.1 sudo apt-get install python-gevent python-pip
sudo pip install shadowsocks
4.2 建立shadow.json:
{
"server":"xxxxxx",
"server_port":xxxx,
"local_port":10808,
"password":"xxxx",
"timeout":600,
"method":"aes-256-cfb"
}
4.3 sslocal -c /path/to/shadowsocks.json
或開機自啟動:
vim /etc/rc.local
sudo sslocal -c /path/to/shadowsocks.json
4.4 新開一個終端:
sudo apt-get install privoxy
vim /etc/privoxy/config
761行: listen-address 127.0.0.1:8118
1336行: forward-socks5 / 127.0.0.1:10808 .
注意不要漏掉最後的"."
sudo service privoxy restart
export http_proxy='http://127.0.0.1:8118'
export https_proxy='https://127.0.0.1:8118'
git config --global http.proxy 'socks5://127.0.0.1:10808'
git config --global https.proxy 'socks5://127.0.0.1:10808'
(git取消代理) git config --global --unset http.proxy
5. 在src/目錄執行gclient sync即可
更新程式碼步驟:根據經驗總結的步驟,如遇到奇怪問題,建議按照下載步驟重新下載。
1. 如上述設定代理後執行gclient sync,此步驟會更新所有依賴。
2. cd src;git fetch origin