Ubuntu 22.04编译AOSP Android 13完整指南

发布时间:2026/7/19 5:54:11

Ubuntu 22.04编译AOSP Android 13完整指南
1. 环境准备与系统配置在Ubuntu 22.04上编译AOSP Android 13需要先完成基础环境搭建。我推荐使用物理机而非虚拟机进行编译因为Android源码编译对硬件资源要求较高。以下是经过实测的配置方案1.1 硬件需求建议CPU至少8核推荐16核以上内存32GB起步64GB更佳存储500GB SSD源码编译产物约需300GB网络稳定连接需要下载约50GB源码注意低于此配置可能导致编译时间过长超过10小时或内存不足错误1.2 系统初始化设置首先更新系统并安装基础工具包sudo apt update sudo apt upgrade -y sudo apt install -y git curl python3 python-is-python3设置交换分区32GB物理内存以下必须配置sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab1.3 依赖包安装Android官方推荐的依赖包列表需要调整适配Ubuntu 22.04sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev \ libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev \ libxml2-utils xsltproc unzip fontconfig python2.7特别处理Python2.7兼容性问题sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 22. 源码获取与同步2.1 配置Repo工具创建bin目录并配置环境变量mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo echo export PATH~/bin:$PATH ~/.bashrc source ~/.bashrc2.2 初始化代码仓库建议使用清华镜像源加速下载mkdir ~/aosp cd ~/aosp repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r41配置git身份信息git config --global user.name Your Name git config --global user.email youexample.com2.3 同步源码树使用多线程加速同步repo sync -j$(nproc) --current-branch --no-tags常见同步问题处理网络中断后恢复同步repo sync --fail-fast遇到冲突时repo forall -c git reset --hard3. 编译环境配置3.1 JDK版本管理Android 13需要JDK 11sudo apt install -y openjdk-11-jdk sudo update-alternatives --config java # 选择JDK 11验证Java版本java -version # 应显示11.x.x3.2 环境变量设置编辑~/.bashrc添加export USE_CCACHE1 export CCACHE_EXEC/usr/bin/ccache export CCACHE_DIR~/.ccache ccache -M 50G # 设置缓存大小 source ~/.bashrc3.3 设备驱动准备对于Pixel设备以Pixel 6为例从Google开发者网站下载对应驱动解压到AOSP根目录执行sh脚本提取二进制文件4. 完整编译流程4.1 初始化编译环境source build/envsetup.sh lunch aosp_arm64-eng # 根据目标设备选择常见lunch选项aosp_x86_64-engx86模拟器aosp_oriole-userdebugPixel 6aosp_raven-userdebugPixel 6 Pro4.2 开始编译使用多线程编译建议不超过CPU核心数的1.5倍m -j$(($(nproc)*3/2)) 21 | tee build.log监控编译状态watch -n 10 tail -n 20 build.log4.3 编译产物处理编译完成后产物位置system.imgout/target/product/[device]/system.imgramdisk.imgout/target/product/[device]/ramdisk.imguserdata.imgout/target/product/[device]/userdata.img打包完整镜像make snod # 快速重建system.img5. 常见问题排查5.1 内存不足错误症状g: fatal error: Killed signal terminated program cc1plus解决方案增加swap空间减少编译线程m -j4使用ccache减少重复编译5.2 Python版本冲突症状File build/make/core/main.mk, line: Python 2.7 is required解决方案sudo update-alternatives --config python # 选择Python 2.75.3 网络问题导致同步失败建议配置git代理git config --global http.proxy http://proxy.example.com:8080或者改用SSH协议repo init -u git://mirrors.tuna.tsinghua.edu.cn/aosp/platform/manifest6. 高级技巧与优化6.1 增量编译加速仅编译特定模块m module-name快速重建system.imgmake snod使用ccache统计ccache -s6.2 自定义编译选项修改build/core/main.mk# 添加编译参数 COMMON_GLOBAL_CFLAGS -DDEBUG16.3 多设备支持同时编译多个设备lunch aosp_arm64-eng m -j8 lunch aosp_x86_64-eng m -j87. 刷机与测试7.1 刷入Pixel设备解锁bootloaderfastboot flashing unlock刷入镜像fastboot flashall -w7.2 模拟器启动emulator -show-kernel -verbose调试参数-debug启用调试信息-gpu host使用主机GPU加速-no-snapshot禁用快照8. 后续开发建议使用Android Studio导入源码make idegen development/tools/idegen/idegen.sh常用调试命令adb logcat -b all # 查看完整日志 adb shell dumpsys # 系统服务信息代码搜索技巧cgrep 关键字 # 全代码库搜索 jgrep 关键字 # Java文件搜索

相关新闻

Python编程入门:从安装到第一个Hello World程序

Python编程入门:从安装到第一个Hello World程序

2026/7/19 5:44:11

1. Python基础入门:从安装到第一个程序 Python作为当下最流行的编程语言之一,以其简洁优雅的语法和强大的功能库吸引了无数开发者。对于初学者来说,掌握Python的基础知识是迈向编程世界的第一步。让我们从最基础的安装开始,逐步探…

74HC138与74HC245芯片在数字电路设计中的应用解析

74HC138与74HC245芯片在数字电路设计中的应用解析

2026/7/19 5:44:11

1. 74HC138与74HC245芯片功能解析在数字电路设计中,74HC138和74HC245这对"黄金搭档"经常出现在各类显示驱动系统中。作为从业十余年的硬件工程师,我亲测这两款芯片的组合能稳定驱动多达64个LED段码,成本却不到高端驱动IC的1/5。先看…

面向AI编程时代,全栈开发和monorepo从“过时“变成了“标配“

面向AI编程时代,全栈开发和monorepo从“过时“变成了“标配“

2026/7/19 5:44:11

我们花了十几年把系统拆得足够碎,让上百号工程师能各管一摊、井水不犯河水。结果AI Agent一来,开口就要"看全部代码"。这不叫技术迭代,这是理念层面的相撞。 软件开发正在经历一场静悄悄但不可逆的权力交接。写作代码的主力,正在从人变成机器。 从"分而治…

Lasso与Ridge正则化原理及实战:从几何本质到特征选择

Lasso与Ridge正则化原理及实战:从几何本质到特征选择

2026/7/19 10:44:27

1. 为什么今天还要亲手推一遍Lasso和Ridge?——不是为了炫技,而是为了真正“看见”正则化在动 你有没有过这种体验:模型在训练集上准确率99%,一到验证集就掉到72%,再看测试集,直接崩到65%?我带过…

快速实现Axure RP中文界面切换的终极指南

快速实现Axure RP中文界面切换的终极指南

2026/7/19 10:44:27

快速实现Axure RP中文界面切换的终极指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面而烦恼吗&…

Android APK签名自动化:uber-apk-signer如何简化应用发布流程

Android APK签名自动化:uber-apk-signer如何简化应用发布流程

2026/7/19 10:44:27

Android APK签名自动化:uber-apk-signer如何简化应用发布流程 【免费下载链接】uber-apk-signer A cli tool that helps signing and zip aligning single or multiple Android application packages (APKs) with either debug or provided release certificates. I…

SGuard Limit终极优化指南:3步彻底解决腾讯游戏卡顿问题

SGuard Limit终极优化指南:3步彻底解决腾讯游戏卡顿问题

2026/7/19 10:44:27

SGuard Limit终极优化指南:3步彻底解决腾讯游戏卡顿问题 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是不是也遇到过这样的情况&#xf…

生产级机器学习系统:从模型部署到数字堡垒建设

生产级机器学习系统:从模型部署到数字堡垒建设

2026/7/19 10:44:27

1. 项目概述:当模型走出笔记本,真正开始“呼吸”现实世界你有没有经历过这样的时刻?模型在 Jupyter Notebook 里跑得飞起,AUC 0.92,F1 0.88,交叉验证稳如老狗;业务方点头如捣蒜,PRD …

终极AMD Ryzen调试指南:SMU Debug Tool深度解锁处理器性能

终极AMD Ryzen调试指南:SMU Debug Tool深度解锁处理器性能

2026/7/19 10:34:26

终极AMD Ryzen调试指南:SMU Debug Tool深度解锁处理器性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…