歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 16.04下載編譯Android 6.0源碼及問題解決

Ubuntu 16.04下載編譯Android 6.0源碼及問題解決

日期:2017/2/28 13:49:15   编辑:Linux教程

在虛擬機裡面跑了個虛擬機,預留了20G的空間,然後各種環境配不好(第一次玩Linux),弄了1day左右吧,終於開始下載了,還好可以科學上網,省了一點功夫。然後還沒有寫腳本,就苦逼的守在它下啊下。因為它指不定的會出錯,需要repo sync。然後經過漫長的等待,本以為就等出了Success,結果等出了磁盤空間不足。然後只有忍痛把東西都刪掉重頭來過,接著又給Ubuntu分配了90G的空間,想著一定能夠了,這次寫了腳本,不用再苦逼的望著屏幕了。結果。。下了88G+的時候又提示空間不足。說句真的,當時砸電腦的心都有了。然後在StackOverflow看見有人給了Google官方的下載指南,進去一看嚇我一跳,至少需要120G,我硬盤就500G,准備暫時放棄,先買個固態來著。但是不甘心啊!

1 編譯環境
Ubuntu 16.04 LTS
Android 6.0_r1
Open JDK 7

2准備工作

(1) 下載Android 6.0源碼.

Android 6.0源碼下載地址: http://www.linuxidc.com/Linux/2016-01/127285.htm

注意:源碼的存放路徑不能有中文,否則編譯到系統內置的apk的時候會報錯無法解析class.dex文件

(2) 解壓源碼,合並文件。
下載完畢後,使用下面命令合並:

cat Android6_r1_*>Android6_r1

(3) 解壓源碼。

tar -zxvf Android6_r1.tgz

解壓源碼是個漫長的過程,解壓後會在當前目錄下生成一個mydroid的文件夾。

4 安裝依賴
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
sudo lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache

5 避免小坑在編譯過程中如果host的默認編輯器時clang的話機就會導致: recipe for target ' out/host/linux-x86/obj/lib/libart.so'failed.

所以在開始編譯之前需要把clang關掉,方法是在art/build/Android.common_build.mk ,中找到WITHOUT_HOST_CLANG,關閉clang即可。

ifneq ($(WITHOUT_HOST_CLANG),true)
改為:


ifeq ($(WITHOUT_HOST_CLANG),false)


7 開始編譯

(1) 在 .bashrc文件末尾添加:export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

(2) 為了提高編譯效率,設置編譯器高速緩存:

prebuilts/misc/linux-x86/ccache/ccache -M 50G

(3) 接著導入編譯Android源碼所需的環境變量和其它參數:source build/envsetup.sh

(4) 運行lunch命令選擇編譯目標:

lunch

選擇1:

(5) 開始編譯,執行make -j8, 8為同時編譯的線程數,一般google推薦這個數字為2倍的cpu個數再加上2,比如4核,就是10。

make -j8 關於cpu個數,可以用下面命令查看:

cat /proc/cpuinfo好了,開始編譯了.

8 編譯成功

編譯成功後如下圖:

進入mydroid/out/target/product/generic目錄,可以看到編譯好的文件:

啟動模擬器:

emulator 稍等一會,就可以出現開頭的模擬器畫面了:

9 其他的一些問題

當我成功啟動之後,關機重來,試了試模塊編譯,然後再啟動模擬器時,報錯:emulator:未找到命令

解決辦法:

build/envsetup.sh
lunch 1

終於可以開始愉快的學習了:)

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved