拉取Android源码
使用brew安装repo工具后,通过repo init初始化Android源码仓库(指定分支如android-13.0.0_r1),repo sync同步代码。进入源码目录执行envsetup.sh配置环境,lunch选择目标设备类型。使用make命令编译系统镜像,支持全系统编译或单独组件编译。生成的镜像文件位于out/target/product/设备名/目录下,可通过emulator启动模拟器或fastboot刷入真机运行。整个过程实现了从源码下载到编译运行的完整流程。
博主博客
一、Repo
1.1 使用 brew 安装 repo
brew install repo
1.2 repo 常用命令
repo start <topic_name>
开启一个新的主题,其实就是每个Project都新建一个分支。
repo manifest
可以根据当前各Project的版本信息生成一个manifest文件。
repo sync [PROJECT1...PROJECTN]
同步Code。
repo status
查看本地所有Project的修改,在每个修改的文件前有两个字符,第一个字符表示暂存区的状态。
repo prune <topic>
删除已经merge的分支。
repo abandon <topic>
删除分支,无论是否merged。
repo branch或repo branches
查看所有分支
repo diff
查看修改
repo upload
上传本地提交至服务器
repo forall [PROJECT_LIST]-c COMMAND
对指定的Project列表或所有Project执行命令COMMAND,加上-p参数可打印出Project的路径。
repo forall -c 'git reset --hard HEAD;git clean -df;git rebase --abort'
这个命令可以撤销整个工程的本地修改。
二、拉取源码
Android 使用 Git 作为代码管理工具,源码在 Google Git 上面,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理。
2.1 初始化 repo(以 Android 13 为例)
mkdir aosp
cd aosp
repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r1
如果要拉取主分支可以使用
repo init --partial-clone -b main -u https://android.googlesource.com/platform/manifest
-b 选项用于标识您正在初始化的分支。如果 -b 未提供,则 repo init 默认采用主分支。如需查看分支和标记名称的列表,请参阅源代码标记和 build。
-u 是必需选项,用于指定清单文件。清单是一个 XML 文件,用于指定 Android 源代码中的各种 Git 项目位于工作目录的什么位置。manifest 在此示例中,清单文件的名称未指定,因此命令使用默认清单文件 (default.xml)。
2.2 下载 Android 源码
repo sync -c -j8
-c 参数会指示 Repo 从服务器提取当前的清单分支。-j8 命令会将同步操作拆分成多个线程,以更快地完成同步。
此操作应该需要一小时多一点的时间。
如果您在下载期间遇到任何问题,请参阅排查并解决同步问题。
三、配置编译环境
进入源码目录:
source build/envsetup.sh
选择目标设备(如 aosp_x86_64 或 Pixel 设备):
lunch aosp_x86_64-eng
如果是厂商平台(如 Qualcomm 或 MTK),请使用对应的 lunch target。
四、开始编译
编译系统镜像:
make -j$(nproc)
常用组件单独编译:
make SystemUI
make framework
make services
五、输出结果
编译完成后,生成的镜像通常位于 out/target/product/<device>/ 目录中,如:
system.imgboot.imguserdata.img
你可以使用 fastboot 或模拟器加载运行:
emulator
或使用 fastboot flash 命令刷入真机。
评论