ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VirtualBox安装Ubuntu搭建AOSP开发环境:从零到编译就绪

VirtualBox安装Ubuntu搭建AOSP开发环境:从零到编译就绪 1. 项目概述与核心价值最近在折腾Android系统源码也就是AOSP发现第一步就卡住了不少人。很多人以为直接下载源码就能开搞结果连个像样的编译环境都搭不起来。我见过太多人倒在了第一步——安装一个稳定、高效的Linux开发环境上。对于AOSP开发来说一个纯净、配置得当的Ubuntu系统是基石而VirtualBox则是搭建这块基石最顺手、最免费的工具。这不仅仅是“装个系统”那么简单它决定了你后续编译源码的流畅度、调试的便利性甚至能避免一堆因环境问题导致的诡异报错。今天我就以一个踩过无数坑的过来人身份手把手带你用VirtualBox装好Ubuntu为后续深入AOSP源码世界铺平道路。为什么是VirtualBox UbuntuVirtualBox来自Oracle免费、开源、跨平台对个人开发者极其友好性能足够应对AOSP编译这种重负载任务。Ubuntu则是Google官方推荐的AOSP编译系统社区支持完善软件包丰富遇到问题容易找到解决方案。这套组合拳能让你在Windows或macOS的主机上无缝拥有一个专为AOSP定制的Linux开发环境隔离性好随时可以备份、重置非常适合学习和深度定制。2. 环境准备与工具选型解析2.1 VirtualBox版本选择与安装避坑首先别急着去官网下载最新版。对于AOSP开发这种稳定性要求高的场景追新有时意味着踩坑。我强烈推荐使用VirtualBox 6.1.x这个长期支持系列。它经过了大量项目的验证与各种宿主系统的兼容性最好特别是共享文件夹、剪贴板共享这些我们后续高频使用的功能非常稳定。注意避免使用太老的版本如5.x可能对新版Ubuntu的硬件支持不佳也谨慎使用最新的7.0测试版我曾遇到过增强功能安装失败导致分辨率无法调整的问题。安装过程本身很简单但有几个关键点安装路径建议不要装在C盘默认路径。AOSP源码动辄上百GB虚拟机文件会非常庞大。我通常会在D盘或E盘专门创建一个VMs文件夹将VirtualBox和所有虚拟机都安装/放置于此避免挤占系统盘空间。网络安装安装程序会提示安装“VirtualBox网络设备”一定要允许。这是虚拟机能够上网、与宿主机通信的基础。关闭Hyper-VWindows宿主如果你在Windows 10/11上安装并且系统开启了Hyper-V会导致VirtualBox无法使用64位系统选项。解决方法是以管理员身份打开命令提示符输入bcdedit /set hypervisorlaunchtype off然后重启电脑。或者在“启用或关闭Windows功能”中彻底关闭Hyper-V。安装完成后打开VirtualBox管理器别急着创建虚拟机。我们先点击菜单栏的管理-全局设定在常规选项卡里将默认虚拟电脑位置修改到你准备好的那个大容量硬盘分区下的路径比如D:\VMs。这个设置能保证之后创建的所有虚拟机文件都规整地放在这里方便管理。2.2 Ubuntu镜像下载与版本抉择接下来是Ubuntu镜像。AOSP官方文档通常推荐Ubuntu LTS长期支持版本。截至我写这篇文章时Ubuntu 22.04 LTS (Jammy Jellyfish)是最成熟稳定的选择。24.04 LTS刚发布不久虽然新但一些第三方工具比如某些老版本的JDK或依赖库的兼容性可能还需要社区时间验证对于求稳的AOSP编译环境我建议先用22.04。不要去乱七八糟的下载站直接访问Ubuntu官网或国内镜像站如阿里云镜像、清华镜像站下载。文件是ISO格式大约3-4GB。我习惯用清华镜像站速度更快。下载完成后务必校验一下SHA256值确保文件完整无误避免安装到一半报错。这里有个小技巧即使你主机内存只有16GB也建议为Ubuntu虚拟机分配至少4GB内存。AOSP的编译过程极其消耗内存后续我们配置交换空间Swap作为补充但物理内存是基础。硬盘空间方面至少预留150GB。这包括了系统20GB、AOSP源码约80-100GB和编译产出物约30-50GB。我建议直接分配200GB动态分配VDI格式这样初期不会立刻占满物理硬盘用多少占多少更灵活。3. 虚拟机创建与Ubuntu系统安装详解3.1 虚拟机核心参数配置打开VirtualBox点击“新建”。名称可以叫AOSP_Ubuntu_22.04类型选择Linux版本选择Ubuntu (64-bit)。内存大小设置是关键。如果你的宿主机有32GB内存可以分给虚拟机8GB如果是16GB宿主机分4GB是底线。我自己的主力机是32GB分配给虚拟机8GB这样在编译Android 12时可以同时开浏览器查资料比较流畅。硬盘选择“现在创建虚拟硬盘”类型就用默认的VDI (VirtualBox Disk Image)它在性能和便携性上平衡得最好。在“存储在物理硬盘上”这一步务必选择“动态分配”。这样创建的虚拟硬盘文件初始很小随着你往Ubuntu里安装软件、下载源码而逐渐增大直到你设定的上限比如200GB。这比“固定大小”灵活太多固定大小会立刻在你的物理硬盘上划走200GB空间即使虚拟机是空的。创建完成后先别启动。选中刚创建的虚拟机点击“设置”进行几项关键调整系统 - 处理器将处理器数量调到你宿主机核心数的一半或更多。例如我的CPU是8核16线程我会给虚拟机分配4个处理器。勾选“启用PAE/NX”这对64位系统有益。显示 - 屏幕将“显存大小”拉到128MB并勾选“启用3D加速”。这能显著提升桌面环境的流畅度。存储在“控制器: IDE”的光驱图标那里点击右侧的光盘图标选择“选择磁盘文件”然后找到你下载的Ubuntu 22.04 ISO文件。这样虚拟机就会从ISO镜像启动进入安装程序。网络默认的“网络地址转换(NAT)”就行虚拟机可以上网宿主机也能通过SSH连接它。后续如果需要更复杂的网络配置比如搭建内网测试环境可以再改成“桥接网卡”。3.2 Ubuntu安装过程实操与分区建议启动虚拟机它会从ISO镜像加载进入Ubuntu安装界面。语言选“中文(简体)”点击“安装Ubuntu”。键盘布局就用“汉语”。在“更新和其他软件”这一步我的建议是只勾选“为图形或无线硬件以及MP3和其他媒体安装第三方软件”。不要勾选“安装Ubuntu时下载更新”。因为安装过程中的网络下载更新可能会很慢甚至因网络问题导致安装失败。我们可以在系统安装完成后再在稳定的环境下更新。最重要的环节是“安装类型”。对于AOSP开发机我强烈推荐“其他选项”进行手动分区。虽然“清除整个磁盘并安装Ubuntu”最简单但手动分区能让我们对磁盘布局有完全控制权性能更优也便于后期管理。一个典型的分区方案如下假设虚拟硬盘总大小200GB挂载点大小类型格式说明/boot/efi512 MB逻辑分区EFI系统分区启动分区必须。/50 GB主分区Ext4根目录存放系统和安装的软件。swap16 GB逻辑分区交换空间交换分区规则是物理内存的1-2倍。这里按4GB内存的4倍设应对编译高峰。/home剩余所有空间逻辑分区Ext4用户家目录AOSP源码就放在这里所以越大越好。分区顺序先分/boot/efi再分/然后swap最后/home。分区的“用于”选项/boot/efi选 “EFI系统分区”/和/home选 “Ext4日志文件系统”swap选 “交换空间”。设置好分区后在下方“安装启动引导器的设备”处务必选择你虚拟硬盘对应的efi分区设备通常是/dev/sda1如果你按上述顺序分区。这一步错了系统将无法启动。接下来设置时区上海、用户名和密码。用户名建议简单点比如aosp密码要记住后续sudo命令要用。然后就是等待安装完成重启。3.3 安装后的首要优化配置重启进入崭新的Ubuntu桌面后别急着欢呼。有几件必须马上做的事安装VirtualBox增强功能这是提升体验的关键。点击VirtualBox菜单的设备-安装增强功能。这会在Ubuntu桌面上挂载一个虚拟光盘。打开终端依次执行# 进入挂载目录 cd /media/aosp/VBox_GAs_6.1.xx/ # 目录名中的版本号可能不同 # 运行安装脚本 sudo ./VBoxLinuxAdditions.run安装完成后重启虚拟机。你会发现现在可以实现无缝鼠标切换、共享剪贴板并且可以自由调整虚拟机窗口大小桌面分辨率会自动适配。配置软件源为了后续安装软件包速度飞快我们需要换成国内镜像源。打开“软件和更新”在“下载自”下拉框中选择“中国的服务器”比如mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn。关闭窗口它会自动更新软件源缓存。执行系统更新现在可以安全地更新系统了。打开终端运行sudo apt update sudo apt upgrade -y这个过程会下载并安装所有更新可能需要一段时间。设置共享文件夹可选但推荐为了方便在宿主机和虚拟机之间传递文件比如后续下载的AOSP源码包可以设置共享文件夹。在VirtualBox虚拟机设置中选择共享文件夹点击右边添加按钮。选择宿主机上一个文件夹如D:\ShareWithVM设置一个文件夹名称如shared勾选“自动挂载”和“固定分配”。在Ubuntu中这个共享文件夹通常位于/media/sf_shared/。你需要将当前用户添加到vboxsf用户组才能有读写权限sudo usermod -aG vboxsf $USER执行此命令后必须注销并重新登录Ubuntu或者重启虚拟机才能生效。4. AOSP编译环境基础依赖安装系统装好了但离能编译AOSP还差得远。我们需要安装一整套编译工具链和依赖库。Google有官方文档但直接照搬可能会遇到包名变化或缺失的问题。下面是我整理并验证过的“一站式”安装命令适用于Ubuntu 22.04。打开终端一次性执行以下命令组。你可以将它们复制到一个脚本文件里执行也可以逐条执行。建议逐条执行以便观察是否有错误。# 1. 更新软件包列表 sudo apt update # 2. 安装编译所需的核心工具 sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig # 3. 安装Python3Ubuntu 22.04默认已安装但确保有 sudo apt install -y python3 python3-pip # 4. 安装Repo工具用于管理AOSP源码 mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo这里需要将~/bin添加到环境变量PATH中这样在任何目录下都能直接运行repo命令。编辑~/.bashrc文件nano ~/.bashrc在文件末尾添加一行export PATH~/bin:$PATH然后按CtrlX再按Y回车保存退出。让配置立即生效source ~/.bashrc现在可以测试一下repo命令是否可用repo version。实操心得网络是下载AOSP源码最大的变数。由于众所周知的原因直接从Google官方源同步代码速度极慢且极易中断。强烈建议使用国内镜像源如清华大学镜像站或中科大镜像站。这需要在后续执行repo init时通过-u参数指定镜像仓库地址这是后续步骤的关键能节省你数天甚至数周的时间。5. 系统性能调优与常见问题排雷5.1 交换空间Swap优化即使我们分配了16GB的swap分区在极端编译情况下也可能不够。AOSP编译某些大型目标如sdk或make -j并行数很高时内存消耗是惊人的。我们可以创建一个额外的交换文件来扩充swap空间。# 创建一个8GB的交换文件 sudo fallocate -l 8G /swapfile # 设置正确的权限 sudo chmod 600 /swapfile # 格式化为交换空间 sudo mkswap /swapfile # 启用交换文件 sudo swapon /swapfile为了让系统启动时自动挂载这个交换文件需要编辑/etc/fstab文件在末尾添加一行/swapfile none swap sw 0 05.2 VirtualBox专属性能问题排查虚拟机运行卡顿检查3D加速确保虚拟机设置中“显示-屏幕-启用3D加速”已勾选。分配更多显存可以尝试将显存从128MB提升到256MBVirtualBox允许的最大值。关闭宿主机的图形特效在宿主机上暂时关闭AeroWindows或透明效果等能释放更多资源给虚拟机。共享文件夹无法访问用户组问题确保已执行sudo usermod -aG vboxsf $USER并重启了虚拟机。权限问题共享文件夹内的文件权限可能属于root。可以在挂载时指定uid和gid或者在Ubuntu内使用chown命令修改所有权。网络连接不稳定尝试将网络连接方式从“NAT”改为“桥接网卡”让虚拟机获取一个和宿主机同网段的独立IP通常更稳定。在Ubuntu内检查/etc/resolv.conf确保DNS服务器设置正确如8.8.8.8或114.114.114.114。增强功能安装失败最常见的原因是内核头文件未安装。确保系统更新到最新后安装对应内核版本的头文件sudo apt install -y linux-headers-$(uname -r)然后重新挂载增强功能镜像并安装。5.3 Ubuntu系统内常见配置问题终端Terminal默认打开路径太深Ubuntu默认终端打开是家目录但AOSP源码通常在一个较深的路径。可以修改终端配置文件设置启动命令为cd /home/aosp你的AOSP工作目录。中文输入法安装对于需要中文注释或搜索的开发者可以安装搜狗输入法。但注意这需要先安装fcitx框架。步骤稍繁琐建议先专注于环境搭建后续有需要再单独配置。一个更简单的替代方案是使用系统自带的ibus拼音输入法基本够用。磁盘空间监控养成使用df -h命令查看磁盘使用情况的习惯。AOSP编译过程中out目录会急剧膨胀。如果/home分区快满了需要及时清理旧的编译产出物make clean或rm -rf out。至此一个专为AOSP开发量身定制的Ubuntu虚拟机环境就搭建并初步优化完成了。这个环境干净、可控、性能经过调优并且规避了新手最容易遇到的网络、权限、性能瓶颈等问题。它就像一间已经打好地基、通好水电的毛坯房接下来你就可以放心地往里“搬砖”——下载那庞大的AOSP源码并开始你的系统定制之旅了。记住稳定的环境是高效开发的一半前期多花一小时仔细配置后期能省下无数小时在环境问题上折腾的时间。在后续的篇章里我们会基于这个环境深入讲解如何高效下载AOSP源码、解决lunch菜单没有项目、配置编译参数等更具体的问题。
返回列表