【模拟器】Android Studio模拟器运行自己的编译的Android源码镜像(Android9.0~Android12已自测)

  • 文章推荐
    【模拟器】android Studio 模拟器中直接运行系统应用

  • 源码下载

    下载:通过aosp-latest下载Android源码

    切换分支:

    #源码目录下
    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复制到一临时目录保存
    请添加图片描述

  • 新建一个模拟器

    此处创建的名称为228Andriod 9 x86_64模拟器,与编译镜像版本对应哈。
    请添加图片描述
    创建完毕后,会生成一个228.avd目录,可以通过打开:
    请添加图片描述

  • 镜像替换

    将编译生成的vendor-qemu.imguserdata.imgsystem-qemu.imgramdisk.imgencryptionkey.img拷贝到228.avd目录下。

    并将vendor-qemu.imgsystem-qemu.img的名称改为vendor.imgsystem.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,则创建模拟器:
请添加图片描述

拷贝覆盖:

请添加图片描述

启动模拟器,成功:

请添加图片描述

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值