Ubuntu 20.04下用QEMU跑Android-x86 4.4的保姆级教程(附避坑指南)

在Ubuntu 20.04上构建Android-x86 4.4虚拟化测试环境的深度实践

最近在为一个遗留的Android应用做兼容性测试时,我遇到了一个颇为棘手的问题:这个应用的核心功能依赖于Android 4.4 KitKat的特定API,而现代的手机和模拟器早已将其淘汰。在尝试了各种方案后,我发现最可靠的途径是在一个可控的虚拟化环境中,直接运行原生的Android-x86 4.4系统。这听起来像是回到过去,但在Ubuntu 20.04这样的现代Linux发行版上,让一个近十年前的Android版本“活”起来,却充满了意想不到的挑战。这篇文章,就是记录我如何一步步搭建这个环境,并解决那些令人头疼的兼容性问题的完整过程。无论你是需要测试特定旧版本Android应用的开发者,还是对系统虚拟化技术本身充满好奇的极客,希望这份详尽的“踩坑”记录能为你铺平道路。

1. 环境准备与QEMU的深度定制编译

在Ubuntu 20.04上,通过包管理器直接安装QEMU固然方便,但为了获得最佳的性能和对特定硬件特性的支持,我强烈建议从源码编译。这不仅允许我们针对x86_64架构进行优化,还能在遇到问题时,拥有更灵活的调试和打补丁能力。

首先,我们需要安装编译所需的依赖库。Ubuntu 20.04的软件源已经足够新,但一些开发库的版本仍需注意。

sudo apt update
sudo apt install -y git build-essential libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev \
ninja-build libsdl2-dev libspice-server-dev libusb-1.0-0-dev libusbredirparser-dev \
libssh-dev libvde-dev libcap-ng-dev libseccomp-dev libnfs-dev libiscsi-dev \
python3 python3-pip libslirp-dev

这里有几个关键点:libslirp-dev 是用户态网络栈支持,对于没有桥接网络权限的环境(如容器内)非常有用;libseccomp-dev 提供了系统调用过滤,增强安全性。安装完成后,我们获取QEMU的源代码。我选择了当时相对稳定的6.2版本分支,它在功能与稳定性之间取得了不错的平衡。

git clone -b stable-6.2 https://github.com/qemu/qemu.git qemu-src
cd qemu-src

接下来是配置环节,这是决定QEMU功能集的关键步骤。我的配置目标是专注于x86_64系统模拟,并启用一些对运行Android-x86有益的特性,如KVM加速、SDL图形显示、VNC服务器以及USB重定向。

./configure --target-list=x86_64-softmmu \
            --enable-kvm \
            --enable-sdl \
            --enable-vnc \
            --enable-virtfs \
            --enable-slirp \
            --audio-drv-list=pa

注意:运行 ./configure 后,请仔细检查输出摘要。确保 KVM supportSDL supportVNC support 的状态是 yes。如果出现 no,通常是缺少对应的开发库,需要根据提示安装后重新配置。

配置成功后,就可以开始编译了。使用 make -j$(nproc) 可以充分利用你CPU的所有核心,显著加快编译速度。

make -j$(nproc)

编译过程可能需要十几到几十分钟,取决于你的硬件性能。完成后,进行安装:

sudo make install

安装完成后,验证一下版本和功能:

qemu-system-x8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值