构建搭建环境
系统要求: linux(推荐) / mac
安装软件包: https://source.android.com/setup/build/initializing?hl=zh-cn
同步AOSP源码
官方教程:https://source.android.com/source/downloading?hl=zh-cn
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
Aosp代码仓库在国外, 如果下载不了, 推荐国内清华大学镜像
分支查询: https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds
如果需要下载指定的分支代码, 可通过上面连接查询分支名称
源码编译
$ source build/envsetup.sh && lunch sdk_phone_x86_64 && make -j2
过程中可能会发生编译问题, 大概率可能是环境配置或工具版本不对导致的。
模拟器 Emulator
运行Emulator
$ emulator
指定系统镜像
$ emulator -system out/target/product/generic_x86_64/system.img
Android Studio查看编辑代码
$ make idegen
$ development/tools/idegen/idegen.sh
执行完成后,源码根目录会生成android.iml 和 android.ipr。 如果文件权限不够需要chmod一下
android.iml 是文件索引的配置, 须在这个文件排除不需要的文件
<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$/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" />
上面的配置只做展示, 具体需要排除的文件看你个人需求, 配置好之后通过Android Studio通过已有项目打开Android.ipr文件,Project目录
调试
修改过代码之后重新编译(只需编译系统镜像)
$ make systemimage
模拟器启动我们新编的镜像
$ emulator -system out/target/product/generic_x86_64/system.img
系统代码断点,以systemui进程为例