使用 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