玩转Android Framework:编译AOSP

本系列将基于Android 14详细讲解Android Framework的系列知识。

首先如果想要了解AOSP的编译,可以参照Google AOSP官网的介绍:

source.android.com/docs/setup/...

硬件要求

官方文档上说我们至少需要16gb内存来编译源码以及250g的硬盘空间来检出源码,这里我实际编译Android 14的时候16gb内存是无法编译通过的,所以建议系统内存升级到32gb

这是我的硬件,实际编译过程大约在2到3个小时:

硬盘: 2T

CPU: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

内存: 32gb

系统要求

如果想要编译Android 源码,那么我们就需要使用Ubuntu系统,具体的系统要求及配置步骤可以参考这里:

source.android.com/docs/setup/...

为了少踩坑,建议准备一台安装Ubuntu系统的电脑或者安装Windows Ubuntu双系统,尽量不使用虚拟机或者WSL来进行编译。

Ubuntu双系统安装,可以参考这里:

blog.csdn.net/Flag_ing/ar...

我安装的ubuntu版本是 18.04 lts,也可以选择安装22.04 lts或其它高于18.04的 lts版本。

在安装ubuntu系统过程中,swap建议设置为实际内存的1倍,比如如果是32gb内存那么swap也设置为32gb。

编译环境准备

当系统安装成功之后,首先要做的就是下载编译Android所需要的软件包:

bash 复制代码
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

下载源码

安装成功之后,就要开始下载源码,AOSP使用repo进行版本管理,这实际上是一个基于git的python脚本,关于repo的介绍可以看这里:

source.android.com/docs/setup/...

首先我们需要下载repo,这里推荐使用国内的清华镜像进行repo以及源码的下载:

mirrors.tuna.tsinghua.edu.cn/help/AOSP/

第一步 下载repo文件:

bash 复制代码
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

第二步 初始化工作目录:

bash 复制代码
mkdir Android14
cd Android14

第三步 初始化源码下载

这里我们需要指定镜像地址和分支,AOSP的分支可以在这里找到

android.googlesource.com/platform/ma...

由于我们是基于Android 14,所以在里面查找android 14的最新分支 android-14.0.0_r28:

bash 复制代码
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r28

第四步 下载源码

bash 复制代码
repo sync

Android源码的下载需要大约3到4个小时,这个时候只要耐心等待就好了,最后下载完成的目录大概是这个样子:

编译源码

当我们完成Android 源码的下载,下一步就可以开始进行编译了

第一步 编译环境初始化:

bash 复制代码
. build/envsetup.sh

第二步 选择编译目标

bash 复制代码
lunch

然后控制台会打印出现有的编译目标:

接下来输入 sdk_phone_x86_64,可以看到输出:

第三步 进行编译

bash 复制代码
make

然后等待就可以了,编译时间一般在2到3个小时,等待编译成功之后,会出现如下字样:

第四步 运行模拟器

然后输入以下命令,就可以直接看到我们编译过后的Android 14了:

bash 复制代码
emulator

编译问题汇总

运行repo命令提示python格式错误

这个时候需要检查一下系统默认的python文件是否为python3,如果不是,需要将系统默认的python修改为python3

blog.csdn.net/White_Idiot...

repo init 或者repo sync报错

这个时候遇到的绝大多数都是网络错误,可以检查网络状态重新repo init 或者repo sync

make报错 build failed

这个时候需要检查一下依赖包是否都安装上了,还有就是硬件要求是否达标,是否设置了系统swap

emulator报错 This user doesn't have permissions to use KVM (/dev/kvm)

这个时候运行一下以下命令就可以了:

bash 复制代码
sudo chown 你的用户名 -R /dev/kvm
相关推荐
桂月二二34 分钟前
探索前端开发中的 Web Vitals —— 提升用户体验的关键技术
前端·ux
hunter2062062 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
qzhqbb2 小时前
web服务器 网站部署的架构
服务器·前端·架构
刻刻帝的海角2 小时前
CSS 颜色
前端·css
浪浪山小白兔3 小时前
HTML5 新表单属性详解
前端·html·html5
lee5763 小时前
npm run dev 时直接打开Chrome浏览器
前端·chrome·npm
2401_897579653 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter
limit for me4 小时前
react上增加错误边界 当存在错误时 不会显示白屏
前端·react.js·前端框架
浏览器爱好者4 小时前
如何构建一个简单的React应用?
前端·react.js·前端框架
qq_392794484 小时前
前端缓存策略:强缓存与协商缓存深度剖析
前端·缓存