Fedora 35本地构建AOSP Emulator启动异常问题咨询
Fedora 35 上 AOSP 模拟器启动异常排查与构建选项解析
一、启动异常排查与环境配置
1. 核心问题修复步骤
- 首次崩溃(SSL/目录错误):
- 先检查
~/.android/avd/目录是否存在,没有的话手动创建并赋权:mkdir -p ~/.android/avd/ chmod -R 755 ~/.android/ - SSL错误大概率是系统CA证书缺失,安装基础CA包并更新:
sudo dnf install ca-certificates update-ca-trust
- 先检查
- 段错误与稳定性问题:
- Fedora 35自带的nouveau开源驱动和AOSP模拟器兼容性差,务必安装NVIDIA闭源驱动,同时补装图形依赖库:
sudo dnf install libglvnd-devel mesa-libGL-devel mesa-libEGL-devel - 先禁用硬件加速,用软件渲染测试稳定性:
emulator -gpu swiftshader_indirect - 如果出现整机冻结,给NVIDIA驱动加内核参数后重启:
sudo grubby --update-kernel=ALL --args="nvidia-drm.modeset=1" sudo reboot
- Fedora 35自带的nouveau开源驱动和AOSP模拟器兼容性差,务必安装NVIDIA闭源驱动,同时补装图形依赖库:
-read-only参数提示:- 这是系统镜像权限异常导致的,修复镜像权限即可:
chmod 644 $ANDROID_PRODUCT_OUT/system.img
- 这是系统镜像权限异常导致的,修复镜像权限即可:
2. Fedora 35 专属配置
- 要是权限问题一直没解决,临时关闭SELinux试试:
要是有效,可修改sudo setenforce 0/etc/selinux/config,把SELINUX=enforcing改成SELINUX=permissive永久生效 - 补全AOSP构建和模拟器的必备依赖:
sudo dnf install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 libncurses5-dev x11proto-core-dev libx11-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
二、构建选项差异与lunch命令的影响
1. 选项A与选项B的模拟器差异
- 选项A(
sdk_phone_x86):- 是Google专门为SDK模拟器优化的构建目标,镜像体积小、启动快,默认开启模拟器专属的加速和调试配置
- 只包含模拟器运行必需的核心组件,没有实体设备的专属驱动和冗余功能
- 完全适合你测试Framework代码修改的需求,不用适配实体硬件
- 选项B(
aosp_raven-userdebug):raven是Pixel 6的设备代号,构建的是适配Pixel 6的完整AOSP镜像,包含Pixel 6专属的硬件驱动、相机、传感器等模块- 模拟器运行时会加载这些实体设备的模块,导致内存占用高、稳定性差,甚至出现段错误
- 适合测试实体设备专属功能,不适合单纯的Framework调试
2. lunch命令对模拟器的影响
lunch是用来指定构建目标的,直接决定了生成的系统镜像、模拟器配置和硬件适配逻辑:- 选
*_x86/*_x86_64这类目标时,会生成针对x86架构优化的模拟器镜像,原生支持硬件加速,性能和稳定性都好 - 选实体设备代号(比如
raven)的目标,生成的是对应设备架构的镜像,模拟器需要通过QEMU转译运行,性能暴跌还容易崩溃 userdebug版本会开启调试模式,允许adb root等操作,但部分安全限制会被解除,可能间接影响模拟器稳定性
- 选
内容的提问来源于stack exchange,提问作者code
相关产品推荐
相关产品推荐

