aosp12源码编译

本文档详细介绍了如何从零开始配置环境并使用AOSP(Android Open Source Project)源码进行编译。主要内容包括安装Git、配置Repo工具、同步源码、编译源码等步骤,并针对过程中可能出现的问题提供了解决方案。

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

##1.配置git

# 安装git
sudo apt-get install git
# 配置账号信息
git config --global user.name "xxx"
git config --global user.email "xxx"

##2.配置repo

# 下载repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

# 如果同步时出现无法访问,可以修改REPO_URL
REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

##3.同步源码
按照清华源的方法,使用每月更新的初始化包

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar xf aosp-latest.tar
cd aosp
repo sync -j8 # 正常同步一遍即可得到完整目录,-j 指定线程数,一般不要太大

aosp-latest.tar压缩包大约有165G,同步成功后如图:
源码目录

##4.源码编译

source build/envsetup.sh
# 指定机器型号sdk_phone_x86_64,电脑模拟器可以运行
lunch sdk_phone_x86_64
# 直接lunch是看不到这个选项的,实际上是存在的,可通过ls build/make/target/product/sdk_phone*查看
m -j8

编译成功后通过emulator命令运行模拟器,效果如图
模拟器运行

##5.常见错误

  • error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

    suo apt-get install libncurses* 安装相应库

  • qemu-system-armel: Could not open ‘/media/wdp/Seagate/source/Android12/aosp/out/target/product/generic/userdata-qemu.img’: No such file or directory

    lunch sdk_phone_x86_64 这个即可

  • 模拟器打开后电脑卡死 或者出现Emulator terminated with exit code 139

    推测是电脑硬件加速导致的,可以在启动模拟器的时候指定为软件加速,命令为emulator -gpu swiftshader_indirect

##6.参考文档
AOSP官网
使用 Android 模拟器虚拟设备
Android 镜像使用帮助

编译AOSP源代码时,需要遵循一系列标准化的步骤,并使用特定的命令来初始化环境、选择目标设备以及执行实际的编译过程。以下是详细的说明: ### 初始化构建环境 首先,确保已经安装了所有必要的依赖项。对于Ubuntu 22.04系统,可以运行如下命令安装所需的库和工具: ```bash sudo apt-get install git gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig ``` 如果遇到缺少`libncurses5`的问题,可以创建符号链接以使用更高版本的库替代[^4]。 接下来,下载并安装`repo`工具,它用于管理多个Git仓库。可以通过以下方式获取`repo`: ```bash mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo ``` 然后,设置你的Git用户名和邮箱: ```bash git config --global user.name "Your Name" git config --global user.email "you@example.com" ``` 创建一个目录来存放AOSP源码,并进入该目录进行初始化: ```bash mkdir aosp cd aosp repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r50 ``` 这里的分支名`android-14.0.0_r50`可以根据需求更改为其他版本。 同步源代码树: ```bash repo sync ``` ### 配置编译选项 配置编译环境之前,需要加载环境变量脚本: ```bash source build/envsetup.sh ``` 之后,使用`lunch`命令选择要编译的目标产品和构建类型。例如,如果你有一台Nexus 6p真机,可以选择如下配置: ```bash lunch aosp_angler-userdebug ``` 对于模拟器或通用设备,可以选择如下的通用配置: ```bash lunch aosp_x86_64-eng ``` 其中,`-eng`表示工程版本,适合开发用途;`-userdebug`则适用于调试用户版本;而`-user`则是最终发布的用户版本。 ### 执行编译 一旦选择了合适的产品和构建类型,就可以开始编译过程。通常情况下,使用`make`命令加上-j参数指定并行任务数(建议为CPU核心数目的两倍)来进行编译: ```bash make -j$(nproc) ``` 或者,在某些较新的Android版本中可能需要使用`m`命令代替传统的`make`: ```bash m -j$(nproc) ``` 这将启动整个AOSP系统的编译流程,包括Framework、应用和其他组件。 ### 编译后的操作 成功完成编译后,可以在`out/target/product/<product_name>`目录下找到生成的镜像文件。这些镜像可以通过Fastboot工具刷入到支持的设备上,以便测试新编译的ROM。 此外,如果你想将新编译的系统部署到模拟器中,可以直接运行: ```bash emulator ``` 这个命令会启动带有最新编译结果的Android Emulator。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值