Android模拟器加载自定义镜像

基于AOSP编译Androiod镜像后,如果在linux下运行该镜像,我们知道只需要在AOSP根目录下执行lunch后,运行emulator即可。但是,如何让Android Studio的模拟器加载这个镜像,尤其是如何在Windows下加载这个编译后的镜像,直接采用emulator -sysdir及-system均无法正常启动,在探索过程中走了一些弯路,特此记录下。

Android Emulator的目录结构分析

我们知道,无论windows或linux下,android sdk中提供了一个emulator/emulator(windows下为emulator.exe)的命令行工具,直接执行

emulaotr -avd xxx

即可启动xxx的模拟器。xxx即可用命令行配置,也可用android studio提供的模拟器管理工具配置。可以采用emulator -avd xxx -sysdir可以指定镜像路径,实际测试过程中,发现在aosp根目录下采用aosp的emulator可以启动,但是拷贝到window下无法启动,经历了一番折腾发现主要有两个注意点:

  1. x86下运行需要将system-qemu.img,vendor-qemu.img分别重命名为 system.img,vendor.img供模拟器使用(原因system是供刷机使用的,system-qemu才是供qemu模拟器加载的)
  2. 自己制作模拟器镜像路径时,注意如果无法启动,很有可能是校验没通过,需要把VerifiedBootParams.textproto拷贝过来;
  3. build.prop不匹配,如果你编译的是x86/x86_64镜像,但是提示你采用x86镜像会更快,基本是该问题,可以采用emulator -avd xxx -verbose看相关日志,看cpu类型是不是正确;
  4. 相对比较简单的方法,是将编译后镜像及其相关文件拷贝到sdk目录xx到system-images目录下的某个路径(如custom),具体拷贝那些内容可以参考symtem-images下其他目录google官方镜像的目录结构;注意需要将xxx-qemu.img一起拷贝过来,并重命名为xxx.img;另外编译后的镜像根目录下没有build.prop文件,这个在镜像下一级system目录下也需要拷贝过来;采用Android Studio新建一个模拟器,然后修改改模拟器配置文件,将其成image.sysdir.1修改为自己编译后的路径(如systiem-images/custom),然后启动模拟器即可

以下为思路及原因,可以跳过:
在windows下,这个xxx的配置文件,其实就放在用户目录下的.android下的.avd目录下xxx.ini配置文件,这个配置文件只记录了一个路径,具体的配置文件中的path对应的路径为该xxx模拟器的具体路径,通常在.avd下的xxx.avd目录,打开该目录里面有个config.ini文件,其中image.sysdir.1指定了启动模拟器的镜像路径,我们可以将该路径修改为我们自定义的路径来达到启动自定义镜像的目的。
如何构建自己的image路径,其实仿照sdk/system-images/xxx/xxx官方镜像目录下结构拷贝自己编译的内容就可以了,可以在system-images下新建一个custem目录,然后将各种image拷贝过来,需要注意的是:

  1. build.prop不在构建镜像的根目录下,而在sytem中;
  2. 如果同时用xxx-qemu.img和xxx.img只需拷贝xxx-qemu.img并重命名为xxx.img即可,如拷贝的应该是system-qemu.img到custmo目录,并重命名为sytem.img,原因是编译出的system.img不是给模拟器用的。

理论上,custom目录内容正确的话,直接用emulator -sysdir指定路径应该也可以。

Android模拟器加载自定义镜像相关推荐

  1. Android开发之WebView加载自定义scheme报错net::ERR_UNKNOWN_URL_SCHEME(附带源码标题下面可点击下载)

    咱们先看下报错结果图: 我这边是华为荣耀7i手机才出现这个情况,总结得出结论android6.0以上加载自定义scheme会报错如下,6.0以下貌似不会 三星和模拟器没有可以直接加载这个url ,网页 ...

  2. android webview 加载进度和自定义404错误页面

    原帖地址:http://www.cnblogs.com/winxiang/archive/2012/10/25/2738320.html 自定义404页面.android的webview 控件可以加载 ...

  3. android 动态 dex,Android 动态加载dex

    首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...

  4. Android动态加载黑科技 动态创建Activity模式

    基本信息 Author:kaedea GitHub:android-dynamical-loading 代理Activity模式的限制 还记得我们在代理Activity模式里谈到启动插件APK里的Ac ...

  5. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  6. Android 图片加载框架Coil使用总结

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/122040645 本文出自[赵彦军的博客] 文章目录 简介 简单使用 高斯模糊 圆角 ...

  7. android glide的历史,Android 图片加载的那些事:为什么你的Glide 缓存没有起作用?...

    前言Glide,该功能非常强大 Android  图片加载开源框架 相信大家并不陌生 正由于他的功能强大,所以它的源码非常复杂,这导致很多人望而却步 本人尝试将 Glide 的功能进行分解,并单独针对 ...

  8. [转]Android动态加载jar/dex

    本文转自:http://www.cnblogs.com/over140/archive/2011/11/23/2259367.html 前言 在目前的软硬件环境下,Native App与Web App ...

  9. 前端加载自定义字体及速度优化

    今天是2.14情人节,也是另一个重要的日子,那就是我的第一个全栈项目上线啦~~~ www.daren.com 这个是公司的官网,采用Python+Django做后端,前端也用了gulp自动化工作流,使 ...

  10. Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

    本文转载自郭神的Glide分析系列:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二 ...

最新文章

  1. elasticsearch插件(4)
  2. Android利用canvas画各种图形
  3. C#基础加强(7)之ref与out
  4. SAP FSM 学习笔记(四) : 现场服务技师使用的移动应用
  5. 【CodeForces - 569B】Inventory (水题)
  6. Elasticsearch7.15.2 基础概念和基础语法
  7. Python的pip下载特定版本TensorFlow方法
  8. 01-源代码管理工具的介绍
  9. @property 参数问题
  10. MATLAB程序(入门)
  11. 合成孔径 saft matlab,合成孔径聚焦超声成像研究
  12. Bioventus的DUROLANE(R)治疗达到全球200万次的里程碑
  13. python柱状图纵轴刻度_Python数据分析:Matplotlib
  14. echarts 百度地图统计分布图,地图可视化统计
  15. python创建长度为20的列表_如何在python中创建固定大小列表?
  16. 通过BAPI方式展示长文本ADA_POPUP_WITH_TABLE
  17. 神经网络加深和加宽的影响
  18. ajax和axios、fetch的区别
  19. 你知道你的能力有多大么?你是怎样区分自己是将才还是帅才的
  20. 山东大学软件学院2021软件测试考试回忆

热门文章

  1. mui 点击长按复制文本
  2. 2021年高压电工模拟考试题及高压电工操作证考试
  3. 三相异步电动机的公式
  4. 《人月神话》学习指南
  5. 高通蓝牙耳机(QCC3034)Sink开发基础教程一:高通蓝牙方案介绍及开发环境搭建
  6. 关于Kindle的生词提示功能不显示
  7. 什么是数据库管理系统?
  8. Html页面点击下载文件
  9. 五分钟学会做一个在线抽奖系统,手把手教你抽奖还学不会嘛?
  10. JS实现图片验证码功能