chromium源碼編譯android平臺動態庫

chromium源碼編譯

參考博客:https://www.jianshu.com/p/5fce18cbe016

  • 拜祭一下祖先和各路神仙,還有上帝,畢竟代碼是在他的地盤;
  • 一定一定要保證網路是通暢的,不能出現中斷;

環境配置

  1. 本身編譯環境Ubuntu 16.04,預留50G以上的磁盤空間; 
  2. 一個穩定的科學上網工具(需要自行領悟);
  3. 耐心;

一、配置訪問google環境

1. git設置全局代理

// 設置git代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

// 測試是否通暢,測試完後記得刪掉對應文件,保證通暢即可,不必全部下載完成
git clone https://chromium.googlesource.com/chromium/src.git

// 最終記得取消git代理
git config --global --unset http.proxy
git config --global --unset https.proxy

2. https請求設置代理

export https_proxy=127.0.0.1:12333

// 測試是否通暢,測試完成後記得刪掉對應文件,或者使用curl也可,保證https可以請求到GFW之外即可
wget https://www.google.com

二、下載源碼

1. 設置depot_tools包

//獲取depot_tools代碼管理工具
clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
//配置path,替換實際地址
export PATH=$PATH:/media/psf/Home/code/chromium/depot_tools

2. 下載chromium源碼

mkdir chromium
cd chromium
// 下載源碼,這個過程網絡不能中斷,中斷會重新下載,最終大約會下載40G左右的文件
fetch --nohooks android

3. 同步代碼

要保證gclient sync --force沒有錯誤地執行完成。

//同步一下代碼,也可以用於下載過程中的意外中斷
gclient sync --force

三、編譯源碼

  • 如果之前都正常gclient sync完成以後就可以進入編譯階段了。 
cd src
// 使用ninja編譯,配置gn參數
gn args out/Default
  • 之後需要配置gn參數,配置完成保存
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
  • 安裝依賴階段
sudo ./build/install-build-deps-android.sh

//由於openjdk-7已經不再提供,所以需要手動安裝open-jdk-7
sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update 
sudo apt-get install openjdk-7-jdk 

//類似於android源碼編譯過程,之後指向open-jdk-1.7,可以用java -version驗證是否切換成功
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
  • 正式編譯
// 編譯對應的庫
ninja -C out/Default/ net
ninja -C out/Default/ url
ninja -C out/Default/ zlib

四、問題彙總:

1. CIPD selfupdate failed. Trying to bootstrap the CIPD client from scratch...問題:

export DEPOT_TOOLS_UPDATE=0

2. 網絡連接錯誤:

wget url查看網絡返回是否通暢,不通暢就需要配置一下代理了~

3. gn.py: Could not find gn executable at: /media/data/Projects/OpenSource/chromium/src/buildtools/linux64/gn問題

//執行指令
gclient runhooks 

4. Unable to create '/media/psf/Home/code/chromium/code/src/thirdparty/androidtools/.git/index.lock': File exists.問題

刪掉對應lock文件即可

5. You have PROXY values set in your environment,.....

// 不處理也是可以的。
// 找一個位置創建文件boto.cfg,填入代理信息:
[Boto]
proxy=http://127.0.0.1
proxy_port = 12333

// 設置boto_config變量,路徑設置對應位置
set NO_AUTH_BOTO_CONFIG=/home/linux/code/chromium/boto.cfg

6. Syntax error: "(" unexpected問題

應該是源碼本身的問題,我這裏切換了一個分支,後臺又用gclient sync同步了最新的代碼以後,就可以正常編譯了。

7. 其它問題

如果遇到其它問題,有解決方案的話可以加進來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章