Perpare Env
下载 repo 工具:
1 2 3 4
| mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
|
使用每月更新的初始化包
1 2 3 4 5 6
| wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包 tar xf aosp-latest.tar cd AOSP # 解压得到的 AOSP 工程目录 # 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录 repo sync # 正常同步一遍即可得到完整目录 # 或 repo sync -l 仅checkout代码
|
初始化仓库:
1
| repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
|
如果提示无法连接到 gerrit.googlesource.com,请参照git-repo的帮助页面的更新一节。
如果需要某个特定的 Android 版本(列表):
master branch maybe no pass
1
| repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-4.0.1_r1
|
同步源码树(以后只需执行这条命令来同步):
install dependencies for ubuntu 20.04
1 2 3 4 5 6 7
| # java sudo apt-get update sudo apt-get install openjdk-8-jdk # dependencies sudo apt 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 libgl1-mesa-dev libxml2-utils xsltproc unzip # for Ubuntu 20 sudo apt-get install libncurses5
|
Build
First set Env
1
| source build/envsetup.sh
|
select BUILD and BUILDTYPE
1 2 3 4
| # method 1 : select direct lunch aosp_arm64-eng # method 2 :list build, and select lunch
|
build
Test
1 2 3 4 5 6 7
| source build/envsetup.sh lunch(选择刚才你设置的目标版本,比如这里了我选择的是2) emulator
export ANDROID_SDK_ROOT=/home/xxx/Android/Sdk emulator -list-avds emulator -avd Pixel_3a_API_30 -ramdisk ramdisk.img -system system.img -data userdata.img
|
system.img
系统镜像,用于存储Android系统的核心文件,对应于系统的 system
目录,主要内容如下:
1 2
| apex bin etc framework lib64 product usr xbin app build.prop fonts lib priv-app system_ext vendor
|
userdata.img
用户镜像,用来存储与用户数据相关的数据
ramdisk.img
内存磁盘镜像,用于存储Linux内核启动时要装载的核心文件,对应 root
目录
vendor.img
驱动镜像,带有品牌标识和驱动的包,系统和驱动分开,方便以后升级系统
cache.img
缓存镜像,用来进行系统升级或recovery
Reference