android模拟器goldfish环境搭建
1 环境准备
1.1 硬件及主机系统
- 使用AVD时需要硬件支持KVM。因此现在主机bios中将虚拟化设置开启。
- x86架构的主机,安装了ubuntu16.04操作系统。
检查系统是否支持虚拟化的两条命令:
kvm-ok
egrep -c '(vmx|svm)' /proc/cpuinfo
1.2 下载goldfish源码
(1)在线方式 - 推荐
访问如下官网,执行git clone将工程克隆到本地,之后可以根据需要选择不同内核版本进行编译。
https://android.googlesource.com/kernel/goldfish.git
(2)离线方式
在官网中下载特定版本的goldfish内核tar包,到ubuntu中解压。
1.3 安装java
参考 安装java jdk的三种方式:https://blog.csdn.net/zbj18314469395/article/details/86064849
1.4 配置交叉编译环境
下载交叉编译器:https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
可在以上链接中选择不同的交叉编译器,32位或64位,根据实际情况下载
下载到本地后,配置环境变量
vim ~/.bashrc
export PATH=xxx/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin:$PATH
export PATH=xxx/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin:$PATH
export CROSS_COMPILE=aarch64-linux-android-
source ~/.bashrc
1.5 安装linux版android studio
(1)离线方式 - 推荐
在android studio官网(https://developer.android.com/studio)下载包,本地解压后,进入android-studio/bin/
目录执行./studio.h
即可启动AS。
(2)在线方式
https://rotolo.dev/android-studio/
sudo apt-add-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio
1.6 配置AS
(1)有网络的情况
配置AS的代理,直接连接google
这种方式下的sdk,ndk,AVD system-image等等都可以在线下载,很方便。
(2)没有网络的情况
手工下载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
(3)配置ubuntu环境变量
在sdk manager中将需要的组件下载完毕后,设置以下几个目录到环境变量中:sdk/emulator/platform-tools/ndk/avd
vim ~/.bashrc
export ANDROID_HOME=/xxx/xxx/android-sdk-linux
export PATH=$ANDROID_HOME/emulator:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/ndk/xxx:$PATH
export PATH=~/.android/avd:$PATH
source ~/.bashrc
1.7 使用emulator
android avd
命令可以启动android device manager
android -avd xxx
指定xxx镜像启动模拟器(使用AVD manager创建完虚拟设备后,在~/.android/avd
目录下会有xxx.ini)
模拟器相关命令参考:https://developer.android.com/studio/run/emulator-commandline?hl=zh-cn
1.8 加载低版本kernel
最新版的android studio和sdk均不支持加载版本<3.10的内核,想加载低版本内核做实验的话,可使用如下链接提供的sdk。
http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
android
- 命令,启动android sdk管理器
android avd
- 命令,启动avd manager
emulator -avd xxx
- 命令,跟最新版相同
2 编译goldfish内核
假设git clone的goldfish工程在~/kernel/goldfish目录下
cd ~/kernel
cp -r goldfish goldfish44
## 创建一个out44目录,用来存放编译输出
mkdir out44
cd goldfish44
git branch -a
## 从goldfish中拉出kernel4.4分支
git checkout -b android-goldfish-4.4-dev remotes/origin/android-goldfish-4.4-dev
## ~/kernel/goldfish44/arch/arm64/configs目录下有编译配置文件defconfig和ranchu64_defconfig,我们使用ranchu64_defconfig
## 在goldfish44目录下指定好配置文件
make ARCH=arm64 O=../out44 ranchu64_defconfig
make ARCH=arm64 O=../out44/ -j16
编译完成后,如果需要更改配置(如允许内核加载自定义ko模块),操作如下
## 在goldfish44目录下执行
## 图形化配置内核选项
make ARCH=arm64 O=../out44/ menuconfig
## 配置变化的时候执行清理一下
make mrproper
## 开始编译
make ARCH=arm64 O=../out44/ -j16
编译生成的内核文件在如下目录:~/kernel/out44/arch/arm64/boot/Image.gz
3 使用编译的内核启动avd虚拟设备
执行以下命令以自编译的内核启动虚拟机
emulator -avd KernelTest -no-window -no-audio -show-kernel -kernel ~/work/kernel/out49/arch/arm64/boot/Image.gz -no-snapstorage