Android9.0 源碼下載和編譯

一 . 安裝Ubuntu虛擬機

參考在VirtualBox 6虛擬機上安裝Ubuntu Linux 18.04操作系統
這裏我是參考這篇博客的安裝的,需要注意的是Ubuntu的版本一定要是穩定版的,官方長期維護的(帶LTS)

二 . 下載repo工具

這裏我們只要知道repo是使用Python對git進行封裝的工具就行,還有就是repo的作用是方便管理Android源碼繁多的git庫,它的使用時簡化了git版本庫的管理。

安裝git:

sudo apt-get install git

創建bin,並加入到PATH中:

mkdir ~/bin
PATH=~/bin:$PATH

安裝curl庫:

sudo apt-get install curl

下載repo並設置權限:

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

安裝python,repo初始化時會用到:

sudo apt-get install python

三 . 下載源碼

建立工作目錄:

mkdir aosp
cd aosp

這裏如果想使用清華鏡像來更新repo,可以加上如下內容到你的~/.bashrc中:

export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’

設置身份,添加自己的git郵箱和密碼:

git config --global user.email “[email protected]
git config --global user.name “username”

初始化倉庫:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

初始化指定版本:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
// 這裏的版本有很多,最好選一個穩定版的

同步源碼:

repo sync

接下來是漫長的等待,這裏我用了6個小時。。。

四 . 編譯環境準備

安裝 jdk8:

sudo apt-get update
sudo apt-get install openjdk-8-jdk

這裏可以自己配一下java環境變量,很簡單就不說了。

使用 ubuntu 14+,需要安裝以下依賴包:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

五 . 源碼整編

在AOSP的根目錄,輸入如下的命令初始化環境:

source build/envsetup.sh
// 編譯前刪除build文件夾A
make clobber

這裏實際的操作就是執行build文件夾下的envsetup.sh這個腳本

選擇編譯目標:

lunch

lunch命令是envsetup.sh裏定義的一個命令,用來讓用戶選擇編譯目標
這裏我們選擇5,具體的編譯目標類型自己可以去查看哦。

lunch 5

下面開始編譯:
通過-jN參數來設置編譯的並行任務數,以提高編譯速度,在此前我的CPU核心數爲6,這裏N值最好選在6到12之間,這裏我們設置6個並行任務進行編譯(注意:這裏看自己的電腦配置,如果配置低,N值選小一點)

make -j6

運行模擬器:
在編譯完成之後,就可以通過以下命令運行Android虛擬機了,命令如下:

source build/envsetup.sh
lunch 5
emulator

如果是在編譯完後運行虛擬機,由於之前已經執行過source和lunch命令了,可以直接運行:

emulator

這裏需要注意的是如果是在虛擬機上編譯模擬器上不會運行成功,但是如果是直接在Linux電腦上就可以運行成功,我自己的是Ubuntu16的虛擬機。

最後編譯成功會顯示綠色的successfully字樣
最終會在 out/target/product/generic_x86/目錄生成了三個重要的鏡像文件: system.img、userdata.img、ramdisk.img。

六 . 源碼單編

比如我們要編譯系統的Settings應用模塊,
在AOSP根目錄執行:

source build/envsetup.sh
lunch 5

進入Settings的目錄:

cd packages/apps/Settings

mm編譯當前目錄下的模塊,不編譯依賴模塊:

mm

最後編譯成功會顯示綠色的successfully字樣
最終會生成Settings.odex文件,還會在out/target/product/generic_x86/system/priv-app/Settings目錄下生成Settings.apk。

最後,啦啦啦,九九八十一難,總算編譯成功啦。但是安裝我這個流程來下載和編譯,中途肯定會遇到一些小錯誤的,這裏小夥伴們自行在網上找原因~ ~ ~

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