-
源码下载
切换分支:
#源码目录下 cd .repo/manifests repo init -b android-9.0.0_r3 #Android 9 repo sync
-
源码编译
source build/envsetup.sh lunch aosp_x86_64-eng make -j16 #16是cpu数目,根据自身电脑填写 #最终会在out/target/product/generic_x86_64中生成镜像文件
- 编译完后,将生成的
out/target/product/generic_x86_64/*.img
复制到一临时目录保存
请添加图片描述
-
新建一个模拟器
此处创建的名称为
228
的Andriod 9 x86_64
模拟器,与编译镜像版本对应哈。
请添加图片描述
创建完毕后,会生成一个228.avd
目录,可以通过<img style='margin:0' src='https://img-blog.csdnimg.cn/2022010616361088807.png' />打开:
请添加图片描述
-
镜像替换
将编译生成的
vendor-qemu.img
、userdata.img
、system-qemu.img
、ramdisk.img
、encryptionkey.img
拷贝到228.avd
目录下。并将
vendor-qemu.img
、system-qemu.img
的名称改为vendor.img
、system.img
。PS:如果模拟器运行过,
228.avd
目录中是有encryptionkey.img
,可以不用拷贝此文件。
-
运行验证
运行模拟器<img src='https://img-blog.csdnimg.cn/2022010616361030334.png' />。运行成功后,可以去【设置-关于】中去查看是否是自己编译的Rom。
请添加图片描述
更新:
鉴于评论区说:没有system vendor相关的img。
解答一下疑惑:
若你编译的是你自定义的新产品(版级),不是我例子中的aosp_x86_64-eng
,那么你可能需要,将你的BoardConfig.mk
修改为build//make/target/board/
目录下对应平台(arm、x86等)目录下的BoardConfig.mk
。
我的例子中aosp_x86_64-eng
可以生成,是因为在编译时,系统会加载build//make/target/board/generic_x86_64/BoardConfig.mk
。
再次更新:
若生成的镜像文件还不行,启动不了。可以在自定义的产品 xxx.mk文件中,添加一下$(call inherit-product, $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_x86_64.mk)
,跟上面BoardConfig.mk
同理。