-
源码下载
切换分支:
#源码目录下 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目录,可以通过
打开:

-
镜像替换
将编译生成的
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,可以不用拷贝此文件。 -
运行验证
运行模拟器
。运行成功后,可以去【设置-关于】中去查看是否是自己编译的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同理。
最后更新:
因为评论区有许多疑问,这边有一个简单的方法:
1、直接去编译 sdk_phone_x86_64,因为我们 android studio 创建的模拟器版本就是这个版本

### 编译 sdk_phone_x86_64
$source ./build/envsetup.sh
$lunch sdk_phone_x86_64
$make -j32
编译完后,生成的 aosp12/out/target/product/emulator_x86_64 目录下就会有生产的 qemu 模拟器的相关镜像了。
2、打包镜像(模拟器)
$make -j32 sdk sdk_repo
此操作执行完后,会在aosp12/out/host/linux-x86/sdk/sdk_phone_x86下生成 sdk-repo-linux-system-images-eng.[username].zip 解压后,里面的就是可替换的镜像文件。

3、创建模拟器,并替换镜像
我编译的是Android12,则创建模拟器:

拷贝覆盖:

启动模拟器,成功:

本文详细介绍如何从Android源码编译出适用于Android Studio的自定义模拟器镜像,并提供了具体的步骤指导,包括源码下载、编译配置、镜像打包及模拟器创建等关键环节。
&spm=1001.2101.3001.5002&articleId=121382332&d=1&t=3&u=f28ada3ba10049479ecda9c38e8ff341)
2907

被折叠的 条评论
为什么被折叠?



