Ubuntu 14.04 下載和編譯源碼并刷入Nexus 5x 真機

環境: Ubuntu16.04 LTS ? ?Nexus 5x ?openjdk 8



No 1 .? 安裝必要的工具

?### ? 安裝配置 openjdk :

? ? ? ? 添加源 :$ sudo add-apt-repository ppa:openjdk-r/ppa?

? ? ? ? 更新:$ sudo apt-get update

? ? ? ? 安裝 openjdk: $ sudo apt-get install openjdk-8-jdk ;

? ? ? ? 為了方便以后編譯其他版本的代碼,這里我安裝了6-8的openjdk

? ? ? ? $ sudo apt-get install openjdk-6-jdk ;

? ? ? ? $ sudo apt-get install openjdk-7-jdk ;

? ? ? ? 執行:$ sudo update-alternatives –config java,選擇java的版本

? ? ? ? 執行:$ sudo update-alternatives –config javac,選擇javac的版本

? ? ? ? 設置JDK優先級

? ? ? ? $ sudo update-alternatives --config java

? ? ? ? $ sudo update-alternatives --config javac

??????? 選擇完后命令輸入 java -version 檢查

????? ? 我并沒有配置Java_Home,是因為同事告訴我不配置的話在編譯的時候會自動選擇jdk版本,相對方便些。

### ? 安裝git : 使用repo工具會用到git

? ? ? ? $ sudo apt-get install git;

? ? ? ? 安裝完后進行配置:

? ? ? ? $ git config --global user.email "your email Address"

? ? ? ? $ git config --global user.name "your name"

### ? 安裝curl:官方說法就是一個開源的文件傳輸工具,類似windows 的迅雷

? ? ? ? $ sudo apt-get install curl -y


No 2 . ?下載Android源碼

? ?打開終端,執行如下命令:

? ?### 新建一個bin目錄

? ? ? ? $ mkdir ~/bin

? ?### 將bin目錄添加到環境變量中,這樣做可以在任何目錄都可以訪問

? ? ? ? $ PATH=~/bin:$PATH

? ?### 使用 curl 下載 repo 到bin目錄下

? ? ? ? $ curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > ~/bin/repo

? ?### 修改repo文件:國內訪問不了Google,需要使用清華鏡像下載

? ? ? ? $ sudo gedit ~/bin/repo ;

? ? ? ? 設置REPO_URL 為:'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'

? ?### 添加權限

? ? ? ? $ chmod a+x ~/bin/repo

? ?### 新建目錄,用來存放下載的源碼,另外:安裝Ubuntu的時候務必給 /home最少100G ? ? ? ? ? ? ? ? ? 空間,否則后面比較麻煩。需要用到 Gparted 分區工具再分配空間

? ? ? ? $ mkdir source? ,然后切換到source目錄:$ cd source

? ?### 初始化倉庫

? ? ? ? $ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android- 7.1.1_r24

? ? ? ? 如果提示需要驗證信息,使用命令:

? ? ? ? $ git config --global user.email "your email address"

? ? ? ? $ git config --global user.name "your name"

? ? ? ? 后面 -b 參數 是取的源碼中的一個分支,較穩定的版本,而不加 -b 則會下載Android主線上正在開發中的最新代碼。

? ? ? ??Android版本與代號對應關系?參考這個網址查看手機的版本代號,部分截圖如下

? ?### 開始漫長的下載.....

? ? ? ? $ repo sync? 下載過程中,務必保證網絡通暢,如中途中斷,重新執行repo sync即可。以后需要更新代碼的話,同樣運行這個命令即可

### 替換已有的AOSP源代碼的remote

? ? ? ? 如果之前通過其他路徑獲取過源碼,但之后希望通過TUNA同步,只需要將 .repo/manifest.xml中的

? ? ? ? <remote name="aosp" fetch=".." review="https://android-review.googlesource.com/" ?/>

? ? ? ? 改為下面的即可:

? ? ? ? <remote name="aosp" fetch="git://aosp.tuna.tsinghua.edu.cn/android/" ?

? ? ? ? ????? review="https://android-review.googlesource.com/" />

?????? 如果git 提示錯誤,將git:替換成https://


No 3 . ?編譯Android源碼

? ?### 搭建編譯環境之 安裝JDK

? ? ? ? ?在android 5.0之前,編譯使用的是Oracle JDK,之后google將其替換成OpenJDK。上面有安裝方法,此處不再贅述。。。

? ?### 搭建編譯環境之 安裝ccache

? ? ? ???作用:加快編譯速度

? ? ? ? $ sudo apt-get install ccache

? ? ? ? $ source ~/.bashrc

? ? ? ? $ echo export USE_CCACHE=1>> ~/.bashrc ?按Esc 然后輸入:qw回車退出

? ? ? ? $ prebuilts/misc/linux-x86/ccache/ccache-M50G 設置編譯高速緩存

? ?### 搭建編譯環境之 安裝需要的包

? ? ? ? 參考Google官方文檔:source.android.com/source/initializing.html

? ? ? ? 參考博客:安裝依賴

? ? ? ? $ sudo apt-get install g++-multilib

? ? ? ? $ sudo apt-get install python-markdown

? ? ? ? $ sudo apt-get install gperf

? ? ? ? $ sudo apt-get install libxml2-utils

? ? ? ? $ sudo apt-get install zlib1g-dev:i386

? ? ? ? $ sudo apt-get install zip

? ? ? ? $ sudo apt-get install gnupg

? ? ? ? $ sudo apt-get install libncurses5-dev:i386

? ? ? ? $ sudo apt-get install gcc-multilib

? ? ? ? 如遇到依賴項錯誤, $ sudo apt-get install -f ,然后再執行上一步的操作

### 搭建編譯環境之 下載硬件驅動

? ? ? ? google雖然代碼開源,但是驅動并不開源,我們下載的源碼中是沒有vendor這個文件夾的,真機環境需要驅動

? ? ? ? 官方下載驅動地址:developers.google.com/android/nexus/drivers

? ? ? ? 這里就需要根據下載的源碼版本號去找相應的驅動了,在網址右側目錄尋找相應的型號以及版本號,如圖:

尋找自己型號的驅動
nexus 5x的驅動,點擊Link下載

? ? ? ? 驅動下載完畢后,解壓出來其實就是幾個腳本文件,將腳本cp到源碼根目錄下 sh xxxxx.sh 執行,執行完畢后會生成vendor文件夾。 PS:執行腳本會提示按Enter繼續,這里別連續按,因為在最后會讓你輸入“I ACCEPT”,同意使用協議的,大概能看到第八條的時候速度慢點就能看到了。

? ?### 開始編譯

? ? ? ? 導入環境變量: source build/envsetup.sh

? ? ? ? lunch選擇編譯目標:輸入數字

? ? ? ? 開始編譯: make -j8 (-j后面數字根據電腦CPU個數決定,公司電腦配置比較好,我設置的18,下班前編譯,早上來就好了)

? ? ? ? 查看CPU個數:cat/proc/cpuinfo


No 4 . ?燒錄到nexus 5x?

? ?### 安裝adb

? ? ? ? $ sudo apt-get install adb

? ?### 進入fastboot模式

??????? 設置->關于手機->版本號->點擊五次進入開發者模式->打開USB調試,然后命令行輸入:adb devices連接成功會提示如下:

??????? List of devices attached

??????? 021cbd7a4a92c20f????? device

? ? ? ? $ adb reboot bootloader

? ? ? ? 如果提示沒有fastboot? -> $ sudo apt-get install fastboot

?? ### 配置USB設備(驅動)

??????? 手機連接電腦,命令行輸入lsusb:如下

??????? 斷開連接,繼續輸入lsusb:如下

??????? 可以看到斷開連接后少了一個usb設備,即 Bus 001 Device 025: ID 18d1:4ee7 Google Inc.

??????? 編輯rules文件,將此設備添加到規則中 --> ~$ sudo gedit /etc/udev/rules.d/70-android.rules 如果沒有這個文件,新建一個

??????? 添加:SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0666", OWNER=""

??????? 將你手機對應的ID后面的信息替換進去然后保存,然后更新下

??????? ~$ cd /etc/udev/rules.d

??????? ~$ sudo chmod a+x 70-persistent-net.rules

??????? ~$ sudo udevadm control --reload-rules

? ?### 指定img鏡像位置

? ? ? ? export ANDROID_PRODUCT_OUT=out/target/product/bullhead

? ?### 燒錄

? ? ? ? fastboot flashall -w

### 燒錄過程遇到的問題:

? ? ? 錯誤1:data too large

? ? ? 原因:我們指定的鏡像位置的size超過了fastboot定義的最大值,不過我查資料說最新的fastboot已經替我們解決了這個題,可是我是用命令安裝的fastboot,具體原因我也不是很清楚。

????? 解決辦法 :cd 進入 ~/source/out/host/linux-x86/bin$,在這個目錄下有一個fastboot,我們就在當前目錄下執行 fastboot flashall-w

錯誤2:手機進入adb reboot bootloader 模式后 輸入fastboot flashall -w 顯示waiting for devices

?????? ? ? ? ? 但是開機狀態下 fastboot就可以正常連接

解決辦法:手機重啟進入bootloader模式后,連接電腦輸入lsusb 然后將ID信息再添加到rules文件中

?????????????? ~$ sudo gedit /etc/udev/rules.d/70-android.rules? . 然后按照上面的方法再更新下,然后再次fastboot flashall -w 等待刷機成功。


?? 總之,遇到問題多百度google,最好還是將官方文檔看一遍。這篇文章給需要的人做個參考,也是記錄下自己的學習過程!

?? 大家編譯燒錄成功后請記得給我留言,加油!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容