2021-05-12 14:32:11
Ubuntu 16.04下載編譯Android 6.0原始碼及問題解決
在虛擬機器裡面跑了個虛擬機器,預留了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
終於可以開始愉快的學習了:)
相關文章