android 模拟器 goldfish 环境搭建
环境准备
硬件及主机系统
- 使用AVD时需要硬件支持 KVM 。因此先在主机 bios 中将虚拟化设置开启。
- x86架构的主机,安装了 Ubuntu 22.04 操作系统。
检查系统是否支持虚拟化的两条命令:
1 | kvm-ok |
安装 java jdk
1 | sudo apt update |
参考: Linux之Ubuntu18.04安装Java JDK8的三种方式
配置交叉编译环境
首先,需要下载交叉编译器,有以下几种方式:
使用谷歌提供的 android llvm 或者 android gcc
官方提供的独立编译工具链 android gcc 已被删除,需通过追溯提交记录,找到老版本。(也就只有 gcc 4.8 和 gcc 4.9)
使用 android NDK 中的交叉编译器
根据需要,在以上链接中选择不同的交叉编译器(32位或64位)
下载到本地后,配置环境变量
1 | vim ~/.bashrc |
安装 linux 版 android studio
有两种方式可以安装android studio
离线方式 - 推荐
在 android studio官网 下载包,本地解压后,进入
android-studio/bin/
目录执行./studio.h
即可启动AS。在线方式
参考:https://rotolo.dev/android-studio/
1
2
3sudo apt-add-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio配置 android studio
有网络的情况
配置AS的代理,直接连接google
这种方式下的sdk,ndk,AVD system-image等等都可以在线下载,很方便。
没有网络的情况
手工下载 android sdk 或者 system images 等等,按照这个网站的指导:https://my.oschina.net/u/862582/blog/349263
另一个手工下载sdk参考:https://www.jianshu.com/p/86b9c57bf838
手工下载ndk参考:https://www.jianshu.com/p/abdad7fd1367
sdk和ndk等等配置完成后,再配置ubuntu环境变量,将以下几个目录添加到环境变量中:emulator/ platform-tools/ ndk/ avd/
1 | vim ~/.bashrc |
创建 AVD
使用AVD manager创建完虚拟设备后,在~/.android/avd
目录下会有xxx.ini和一个xxx.avd。这个xxx是我们后面启动 android 模拟器需要用到的。
模拟器相关命令参考:https://developer.android.com/studio/run/emulator-commandline?hl=zh-cn
加载低版本kernel
最新版的android studio和sdk均不支持加载版本<3.10的内核,想加载低版本内核做实验的话,可使用 此链接 提供的sdk。
android
- 命令,启动android sdk管理器
android avd
- 命令,启动avd manager
emulator -avd xxx
- 命令,跟最新版相同
编译goldfish内核
通过如下命令,下载goldfish内核源码,并完成编译
1 | mkdir goldfish4.4 |
编译完成后,如果需要更改配置(如允许内核加载自定义ko模块),操作如下
1 | # 图形化配置内核选项 |
编译生成的内核文件在如下位置:out4.4/arch/arm64/boot/Image.gz
使用编译的内核启动avd虚拟设备
执行以下命令以自编译的内核启动虚拟机
1 | emulator -avd KernelTest -no-window -no-audio -show-kernel -kernel /.../out4.4/arch/arm64/boot/Image.gz -no-snapstorage |