Android 模拟器相关基础知识

一、前言

在 Android 开发过程中会经常使用到模拟器,常用的方式是借助 Android Studio 去创建和运行模拟器,或者是使用第三方的例如雷电、逍遥、genymotion 等,在本篇文章中梳理一下通过命令行操作模拟器的的方法,以及串口和镜像替换的相关知识。

二、工具及环境准备

2.1 下载 Android SDK

访问 https://developer.android.google.cn/studio 链接,下载命令行工具,其中包含 avdmanager、sdkmanager:

2.2 安装必须的 SDK 包

使用 SDK 自带工具 sdkmanager,位于 cmdline-tools/bin 目录下,注意要使用模拟器则开发包中必须存在这四个目录:emulator、 platform-tools、system-images、platforms,可以分别使用如下命令下载:

#先安装最新版本 cmdline-tools
./sdkmanager --sdk_root=/home/zsk/Android/sdk/ "cmdline-tools;latest"

#切换至 cmdline-tools/latest/bin 目录下
./sdkmanager --install "emulator"
./sdkmanager --install "platform-tools"
./sdkmanager "system-images;android-28;default;x86_64"

# 这一步可以不用下载,直接创建platforms文件夹即可
./sdkmanager --install "platforms;android-28" 

这里指定了系统版本和架构,default 这里我理解是不带谷歌系统服务的版本,还可以选择 google_apisandroid-automotive-playstore 两个选项,分别代指包含谷歌服务和车载版本。

2.3 设置模拟器存放路径

创建的模拟器往往是比较大的,以 windows 为例是默认存储在 C 盘中,这样显然是不合适的,同时存在某些情况,例如为了建立统一的开发环境,需要将一套模拟器 copy 给多个人使用,那么显示的指定模拟器存放路径无疑是更加方便的,现在分别就 Linux 做简单阐述

SDK 包下创建 avd 目录用于存放模拟器

配置 ANDROID_SDK_HOME 环境变量,注意此变量名不可修改

  # ~/.bashrc 或 /etc/profile
  export ANDROID_SDK_HOME=$HOME/xxx/sdk/avd
  export PATH=$PATH:$ANDROID_SDK_HOME

如有需要,还要修改 .android/avd 目录下已经创建的模拟器的配置文件,例如 device9.0.ini 中修改
path=/.../sdk/avd/.android/avd/device9.0.avd 即可

2.4 创建模拟器

使用 SDK 自带工具 avdmanger,位于 Android/SDK/tools/bin 目录下,主要指令如下:

指令 描述
list、list avd、list target、list device 罗列存在的模拟器
create avd 创建模拟器
move avd 移动或重命名模拟器
delate avd 删除模拟器

create avd 主要指令如下:

指令 描述
-c 设置模拟器 SD 卡大小
-k 模拟器的系统映像的程序包路径
-b 设置模拟器的 ABI
-n 模拟器名字
-f 强制创建(会覆盖现有模拟器)

实例如下:

./avdmanager create avd -n myAVD -k "system-images;android-28;default;x86_64" -b x86_64 -c 2048M -f

2.5 启动模拟器

使用 SDK 自带的工具 emulator,位于 /Android/SDK/emulator 目录下:

# -writable-system 不添加此参数 会导致remount失败
./emulator -avd myAVD -writable-system

三、镜像替换

1、选择编译类型,同模拟器架构一样,例如 aosp_x86_64-eng
2、编译完成之后,在 out/target/product/generic_x86_64 目录下,找到对应修改的 img 用于替换模拟器中的 img。注意 system-qemu.imgvendor-qemu.img,这两个镜像是专门为模拟器运行制作的如果选择 system.imgvendor.img,则 avd 运行失败
3、将 system-qemu.imgvendor-qemu.img,重命名为 system.imgvendor.img
4、替换 Android/SDK/system-images/android-28/default/x86_64/ 下的对应 img
5、重新启动模拟器

四、模拟串口映射

./emulator -avd myAVD -writable-system -qemu -serial /dev/ttyUSB0

五、关于串口的一些指令

1、设置串口的波特率

stty -F /dev/ttyUSB0 raw 460800

2、获取串口的基本信息

stty -F /dev/ttyUSB0

3、向串口传输文件

cat test.txt > /dev/ttyUSB0

4、展示串口输出数据

cat /dev/ttyUSB1

5、保存串口输出数据

cat /dev/ttyUSB1 > log.txt

6、向串口输入数据/指令

#这里可能需要先使用 stty 指令设置好串口的波特率之后才能写入数据
echo -e "\$CFGPRT,1,0,115200,1,3\r\n" > /dev/ttyUSB1
echo -e "\$CFGSAVE\r\n" > /dev/ttyUSB1

7、grep过滤串口数据操作

# --binary-files=text 表示将二进制视为文本搜索
cat ttyUSB1 | grep --binary-files=text xxx

7、Android 应用层打开串口时需要注意 seLinux 权限,具体使用方式可参见 项目实例

参考

[ 1 ] 手动修改android模拟器的system.img
[ 2 ] 如何使用avdmanager从命令行正确创建Android模拟器?
[ 3 ] Android模拟器挂载虚拟串口进行通信之踩坑记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容