使用 apt 安裝以下工具 先使用 apt 安裝以下工具
sudo apt upgrade
sudo apt update
sudo apt install -y \
vim \
git-core \
gnupg \
flex \
bison \
gperf \
build-essential \
zip \
unzip \
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 \
libncurses5 \
libelf-dev \
libswitch-perl
安裝 google 的 repo 工具來下載 Android 源碼、Android 內核代碼
下載安裝 repo 工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
下載源碼#
mkdir android_source && cd android_source
確認有設定 git 的基本資訊, name 、 email
git config --global user.name <Your Name>
git config --global user.email <you@example.com>
repo init :指定你要下載的 url & branch (branch name 可以參考官方文檔)
repo init -u https://android.googlesource.com/platform/manifest \
-b android-13.0.0_r1
repo sync
編譯 Android#
初始化環境:在 Android 下載好的根資料夾下達以下命令
cd ~/android_source
source ./build/envsetup.sh
lunch 選擇編譯目標:選擇要編譯的目標,格式組成是 BUILD 、 BUILDTYPE
Build 是指編譯完後要運行的平台
BUILD | 目標設備 | 補充 |
---|---|---|
Full | 模擬器 | 全編譯,包含所有語言、應用、輸入法… 等等 |
full_manguro | manguro | 全編譯,運行於 Galaxy Nexus GSM/HSPA+("manguro") |
full_panda | panda | 全編譯,運行於 PandaBoard ("panda") |
BUILDTYPE 則分為三種類型
BUILDTYPE | 功能特點 |
---|---|
user | 發布到市場上的版本,預設沒有 root 權限、adb 關閉 |
userdebug | 開放 root、adb 權限,一般用於真機調試 |
eng | 擁有最大權限 (root),並具有額外調試工具,一般用於模擬器 |
make 編譯:可以按照自己電腦的 CPU 核心數量來編譯
# make -j$(nproc)
make -j10
Android Source 單編譯 - 模組#
除了全部編譯以外,我們可以使用單單編譯某一個應用模組 (eg. Settings 應用模組)
在 Android Source 根目錄中,執行以下命令
source ./build/envsetup.sh
lunch xxx
進入 Setting 目錄下,使用 mm 編譯
mmm packages/apps/Settings
除了 mm 指令以外,還可以使用其他命令單編譯
指令 | 功能 |
---|---|
mm | 編譯當前目錄下 Module(必須進入指定工程的目錄中才能編譯) |
mmm | 編譯指定目錄下 Module,但不編譯其依賴的 Module (可以在 Android 源代碼的目錄結構中的任意級目錄,編譯任意指定的工程) |
mma | 編譯當前目錄下 Module,包含其依賴的 Module |
mmma | 編譯 指定路徑下的 所有 Module,並包含其依賴 |
模擬器運行#
source ./build/envsetup.sh
lunch xxx
emulator