1. 程式人生 > >VMware + ubuntu 編譯android7.0

VMware + ubuntu 編譯android7.0

前段時間編譯了6.0android6.0原始碼編譯的原始碼之後 ,最近又編譯了7.0,本以為有了前面編譯6.0的成功經歷這次會順利很多,no ,還是太年輕了,同樣的各種坑,時間並不比之前花的少,下面就來講講整個過程,上次6.0的原始碼是直接從百度網盤下載的,因為第一次編譯說實話心裡沒底,試過用repo從官網下載(國內的映象),下載過程中報了錯,就放棄了,而這次編譯7.0網盤裡找不到了,只能再次嘗試repo了,不過這次居然很順利。

    下載教程:http://blog.csdn.net/dd864140130/article/details/51718187 

這篇部落格寫的很清楚了,我就按照上面的操作下載完的,

編譯環境,

編譯環境
Ubuntu16.04 LTS
android-7.0.0_r1

虛擬機器 VMware12
 

        openjdk8

跟上一次相比 這次換成Ubuntu16.04 LTS 上次是 UbuntuKylin 16.04 LTS ,openjdk8 

下面講講我遇到的坑,開始我下載的是主線程式碼也就是這個命令:repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

下載很順利,途中卡殼了一次,按ctrl+c 之後再繼續repo sync, 18點下班前掛在那裡,早上來上班就ok了,整個下下來,27.2GB 這是我的原始碼目錄這麼大,不過不知道為什麼 整個硬碟顯示已經佔用了60多g了 可能是有隱藏檔案吧,我給虛擬機器分配的是200g磁碟,4g記憶體,編譯過程中報了2次記憶體溢位

解決辦法:http://blog.csdn.net/sk569437/article/details/52046917

接著編譯 ,居然沒報錯,也沒提示成功,這就蛋疼了,前面編譯6.0也遇到過這種事,試著啟動下模擬器emulator沒啟起來,心裡沒底啊,怎麼辦,從新編譯唄,於是make clean

從新編譯,這次居然編譯不通過,原因還是記憶體溢位,用了上面的辦法也解決不了,只能讓老大加記憶體條了,原來是8G,老大也是爽快人,又給加了8G,官網上說了最少也得16g

加了記憶體之後沒再報記憶體溢位了,報了個java service 什麼的錯 

解決辦法:http://blog.csdn.net/u013553529/article/details/54869266

就是這串命令:jack-admin start-server Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 XX:+TieredCompilation -cp /home/galian/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher

對就是這麼長的命令,敲上去,就沒再報錯了,同樣編譯時間很漫長,第二天來上班 OK了

接著我就帶著萬分欣喜的心情敲下 emulator 然後就是圖上看到的那樣,這尼瑪心情又跌入谷底了,種種的不確定,讓老子驚恐萬分,各種google都沒解決,其實你會發現越是

低層的東西越需要你去找英文資料,否則就只有自己花更多的精力去實踐,無奈我英文也是太爛,熟悉的領域能夠應付,那怎麼辦,是原始碼的版本問題嗎,我只能從新下一個版本試試了,前面我下的是主線程式碼 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest 用的這個命令,這回我打算試試別的版本:repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r1  我下了個7.0的,不知道是不是運氣問題,這個版本從下載,編譯到運氣都是無比順暢,一次性通過

之前聽別人說編譯原始碼基本沒有一次通過的 哈哈。


也有人說7.0的啟動模擬器之後會一直黑屏,的確之前我編譯的主線程式碼,我把映象檔案拷貝到6.0的模擬器執行也是一直黑屏,不過這個7.0的卻出奇的順暢,只是在螢幕上顯示android幾個大字的時候會卡10幾分鐘 這個時間根據機器而定。

好啦總算完成了 收工。