部分场景下需要使用谷歌AOSP源码编译出来一套自己的X86镜像来替换Android studio自带的X86镜像,要求该镜像可Root和Remount来达到方便安卓ROM定制开发的目的。这里以android9.0为例。
1、前置条件
已获得一套android源码和完整的Ubuntu编译环境,本案例中的安卓源码为android-9.0.0_r76
2、执行编译命令编译镜像
source build/envsetup.sh
lunch aosp_x86_64-eng
make -j64
3、拷贝出需要的镜像成品
在路径out//target/product/generic_x86_64路径下拷贝出文件:kernel-ranchu、ramdisk.img、system-qemu.img、userdata.img、vendor-qemu.img。。然后将system-qemu.img改名为system.img,vendor-qemu.img改名为vendor.img。。成品如下图所示
image.png
4、Android studio上下载好相应的镜像并新建AVD模拟器
操作如图
image.png
5、将第三步中镜像成品(5个文件)覆盖到第四步中下载好的原生镜像中
本案例中目标为/Users/kaY/Library/Android/sdk/system-images/android-28/default/x86_64
其中kaY为你的电脑账户名
如下图,箭头为被覆盖替换的文件
image.png
可通过AVD起来后查看Build Number来判断是否替换成功
image.png
6、通过shell脚本启动模拟器
可以直接通过Android studio启动模拟器,但是会出现支持adb root但无法adb remount。。
如果需要remount只能通过脚本配置相应参数才能启动
脚本内容如下
#!/bin/sh
source ~/.profile
emulator -avd XXX_API_29 -writable-system
其中XXX_API_29为在第4步中新家的AVD实例名字
执行source ~/.profile是为了解决在模拟器中启动AVD:找不到QT库的问题,~/.prfofile内需要新增如下语句
function emulator { cd "$(dirname "$(which emulator)")" && ./emulator "$@"; }
参考