step.1 准备一台ubuntu(版本:18 04.6)系统的机子,或者虚拟机。
step.2 下载源码,推荐国内的镜像站
- 更新软件包列表
sudo apt-get update
- 下载repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
- 下载每月初始化包
建议使用迅雷等第三方工具下载,下载完成后拷贝到对应目录解压(压缩包165G左右)
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代码
step.3 安装所需的软件包
- 编译所需
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
- jdk
sudo apt-get install openjdk-8-jdk
可能遇上编译时jdk版本问题,需要多个jdk切换
- 多jdk切换
#创建目录
sudo mkdir /usr/lib/jvm
#解压下载好的jdk
sudo tar -zxvf jdk.gz -C /usr/lib/jvm
#修改环境变量
vim ~/.bashrc
#文件追加
export JAVA_HOME=/usr/lib/jvm/jdk目录 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#环境变量生效
source ~/.bashrc
#向系统注册
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk目录/bin/java 300
#查看切换jdk
sudo update-alternatives --config java
step.4 编译
进入根目录
#设置环境,每次repo sync后都应该执行下面命令
source build/envsetup.sh
# 编译
mmm development/tools/idegen/
#生成配置文件(android.iml 和 android.ipr)
development/tools/idegen/idegen.sh
#一下步骤为过滤一些非必要模块,全部导入会非常慢
#只要了frameworks 和 packages 这两个模块
#切换到 源码更目录
vim android.iml
#在excludeFolder后面追加
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
setp.5 导入androidStudio
用android studio直接打开android.ipr就可以了
已编译源码工程分享
链接:https://pan.baidu.com/s/1nzcyBePP-HtwoCkV8bX-Pw
提取码:q5cz