Android 系统源码——下载到编译

这篇博客详细记录了Android源码从下载到编译的过程,包括硬件要求、下载repo、获取源码、更新源码及配置。适用于在Ubuntu 16.04环境下,需要250GB硬盘空间和16GB RAM。通过清华源下载repo工具,并介绍了如何初始化、同步源码以及编译源码的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

一直想下载、编译、调试一下Android源码 ,加强对一些framework的理解,搞了好多次,终于可以正常编译调试了。
但是一直没有记录过程,导致每次需要下载的时候都要重新查找一下过程,这里进行一下总结。

1. 下载准备

Android源码到模拟器运行,主要有的四个步骤:

  1. 下载源码
  2. 搭建编译环境
  3. 准备编译

我使用的环境是Ubuntu16.04 、openJDK8、Android 9.0.0

硬件要求:

  • 如果是 Android 2.3.x (Gingerbread) 及更高版本(包括 master 分支),需要使用 64 位环境。如果是较低的版本,则可以在 32 位系统中进行编译。
  • 如果要检出代码,至少需要 250GB 可用磁盘空间;如果要进行编译,则还需要 150GB。如果要进行多次编译,则需要更多空间。
  • 如果在虚拟机中运行 Linux,则至少需要 16GB 的 RAM/交换空间。

2. 下载源码

下面的命令,是从清华源下载repo工具,这样脚本中的路径就是指向清华源的aosp

2.1 下载repo

mkdir ~/bin   # 在home下创建bin文件夹
PATH=~/bin:$PATH   # 把bin文件夹加入环境变量的
//我使用的是google源:https://gerrit.googlesource.com/git-repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo  > ~/bin/repo #下载repo脚本
chmod a+x ~/bin/repo #添加权限

执行完上述步骤后,就可以在~/bin/repo文件中看到以下代码:

  # repo default configuration
  #
  REPO_URL = os.environ.get('REPO_URL', None)
  if not REPO_URL:
    REPO_URL = 'https://gerrit.googlesource.com/git-repo'
  REPO_REV = os.environ.get('REPO_REV')
  if not REPO_REV:
    REPO_REV = 'stable'

2.2 下载源码

初始化

repo init -u https://android.googlesource.com/platform/manifest

上述命令会要求Repo下载最新的Android源代码,也就是master分支,如果想下载其他分支

repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r3

同步Android源代码

repo sync

2.3 更新源码

如果遇到源码有更新,如果只需要某一块的代码,就可以进入到有git的目录下面执行repo sync .
在这里插入图片描述

2.4 repo配置

主要有以下几个配置文件

  1. .repo/manifests.git/config
    在这里插入图片描述
  2. .repo/manifest.xml
    在这里插入图片描述
  3. .repo/manifest/default.xml
	<?xml version="1.0" encoding="UTF-8"?>                                                                                                                                                                  
<manifest>
     <remote  name="aosp"
             fetch=".."
              review="https://android-review.googlesource.com/" />
     <default revision="refs/tags/android-9.0.0_r3"
              remote="aosp"
              sync-j="4" />
	//此处都是加载的项目
	...
   <project path="" name="" groups="" />
   <repo-hooks in-project="platform/tools/repohooks" enabled-list="pre-upload" />
</manifest>

3. 编译源码

source build/envsetup.sh # 初始化编译环境
lunch # 选择编译目标,运行lunch后出现所有目标,选择一个输入回车即可,这里使用模拟器运行选择aosp_x86_64-eng
make -j4 # 开始编译,后面的参数为编译使用CPU资源,普通电脑推荐用4核进行编译,编译输出目录为out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值