Android emulator 手机模拟器使用详述

以下操作均要在进入 android-sdk-linux_x86/tools 下执行
$ cd ~/android-sdk-linux_x86/tools

一、创建 Android 虚拟设备
1) 查询当前可用的模拟器类型及所支持的显示模式
$ ./android list targets
Available Android targets:
id: 1 or "android-3"
Name: Android 1.5
Type: Platform
API level: 3
Revision: 4
Skins: QVGA-P, QVGA-L, HVGA (default), HVGA-P, HVGA-L
id: 2 or "Google Inc.:Google APIs:3"
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 3
Description: Android + Google APIs
Based on Android 1.5 (API level 3)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
id: 3 or "android-4"
Name: Android 1.6
Type: Platform
API level: 4
Revision: 3
Skins: QVGA, HVGA (default), WVGA800, WVGA854
id: 4 or "Google Inc.:Google APIs:4"
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 2
Description: Android + Google APIs
Based on Android 1.6 (API level 4)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: WVGA854, HVGA (default), WVGA800, QVGA
id: 5 or "android-7"
Name: Android 2.1-update1
Type: Platform
API level: 7
Revision: 2
Skins: QVGA, WQVGA432, HVGA (default), WVGA800, WQVGA400, WVGA854
id: 6 or "Google Inc.:Google APIs:7"
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 1
Description: Android + Google APIs
Based on Android 2.1-update1 (API level 7)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: WVGA854, WQVGA400, HVGA (default), WQVGA432, WVGA800, QVGA
id: 7 or "android-8"
Name: Android 2.2
Type: Platform
API level: 8
Revision: 2
Skins: QVGA, WQVGA432, HVGA (default), WVGA800, WQVGA400, WVGA854
id: 8 or "Google Inc.:Google APIs:8"
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 2
Description: Android + Google APIs
Based on Android 2.2 (API level 8)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: WVGA854, WQVGA400, HVGA (default), WQVGA432, WVGA800, QVGA

2) 创建名为 Android2.1 的虚拟设备
$ ./android create avd -n Android1.5 -t 2
Created AVD 'Android1.5' based on Google APIs (Google Inc.)
注:1. avd = Android Virtual Devices,Android 虚拟设备;
2. 参数 -n 是指定虚拟设备的名字,如上为Android1.5,
参数 -t 是指定虚拟设备的目标平台,
如上 2 是指 Android1.5 + Google APIs 目标开发平台;

或者
$ ./android
在弹出的“Android SDK and AVD Manager”对话框中 ->
点击左窗格中的“Virtual Devices” ->
点击右窗格中的[New...]按钮,
创建一个 Name 为 "Android1.5"、
Target 为 "Google APIs(Google inc.)-API Level 3"
的新模拟器;
注:SD Card、Skin 和 Hardware 均可在这个对话框中配置,这个方法最简单且最强,强烈推荐!

二、启动 Android 虚拟设备
1) 用参数 -avd 指定虚拟设备名字,即可启动指定名称的虚拟设备
$ ./emulator -avd Android1.5
或者加上 -skin 参数以指定显示模式的方式来启动虚拟设备
$ ./emulator -avd Android1.5 -skin HVGA-L
注:480*320 - 水平显示;
$ ./emulator -avd Android1.5 -skin HVGA-P
注:320*480 - 垂直显示,即虚拟设备的默认模式;
$ ./emulator -avd Android1.5 -skin QVGA-L
注:320*240 - 水平显示;
$ ./emulator -avd Android1.5 -skin QVGA-P
注:240*320 - 垂直显示;
注:1.有效的显示模式应根据 ./android list targets 命令结果来设置;
2.启动虚拟设备后,不要将运行 emulator -avd 命令的终端窗口关闭,
否则虚拟设备也会被关掉,
操作虚拟设备生成的相关消息将会显示在这个终端窗口里,
以便查看虚拟设备正在进行什么样的动作。

三、Android 虚拟设备远程登录
1) 在 Android 虚拟设备启动后,可以在 Windows/Linux/Mac 系统上运行 telnet 指令,
连接到 Android 虚拟设备的 console 终端模式,命令如下:
$ telnet localhost <控制端口>
例如:
$ ./telnet localhost 5554
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OK
注:一般情况 Android 虚拟设备的序号为5554,
所以运行 telnet 时请将 控制端口 改成想要连接的虚拟设备的序号,
虚拟设备的序号就在虚拟设备窗口的标题栏上,
冒号前就是虚拟设备的序号,冒号后就是虚拟设备的名字,
如:5554:Android1.5 。

2) 连接上 Android 虚拟设备后,输入 help 指令,就会看到 Android 控制命令帮助,如下:
help
Android console command help:

help|h|?         print a list of commands
event            simulate hardware events
geo              Geo-location commands
gsm              GSM related commands
kill             kill the emulator instance
network          manage network settings
power            power related commands
quit|exit        quit control session
redir            manage port redirections
sms              SMS related commands
avd              manager virtual device state
window           manage emulator window

try 'help <command>' for command-specific help
OK
注:以上指令都相当的实用,可以控制 Android 手机的操作,
也可以更进一步地掌控 Android 虚拟设备。

1. event 命令可以给虚拟设备 send、types、codes 与 text 四种事件;
格式:
event send send a series of events to the kernel
event types list all <type> aliases
event codes list all <code> aliases for a given <type>
event text simulate keystrokes from a given text
例如:
event text HelloAndroid
发送文字字符串 HelloAndroid 给虚拟设备,可以在 Android 手机画面上立即看到这串消息。

2. geo 命令可以给虚拟设备 GPS 的位置;
格式:
geo nmea send an GPS NMEA sentence
注:NEMA 是 National Electrical Manufacturers Association缩写,
它制定了GPS导航装置的NEMA 0183协议。
而当 Android 设备有与其他外接的 GPS 卫星导航器通过USB连接时,
则可以使用 geo nmea 的指令方式,送给外接的 GPS 卫星导航器位置。
NEMA 共有12个字段,因此 geo nmea 比 geo fix 定位精确许多,
NEMA 的说明:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
$GPRMC,hhmmss.ss,A,IIII.II,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh
$GPRMC (Recommended minimum specific GPS/Transit data)
<1> UTC时间,hhmmss (时分秒) 格式,例如:071236
<2> 定位状态,A=有效定位,V=无效定位,例如A
<3> 纬度ddmm.mm (度度分分.分分) 格式,例如3751.65,37度51.65分
<4> 纬度半球N (北半球) 或S (南半球),例如S
<5> 经度dddmm.mm (度度度分分.分分)格式,例如14527.36,145度27.36分
<6> 经度半球E (东经) 或W (西经),例如E
<7> 地面速率(000.0~999.9节,前面的0也将被发送),例如静止000.0
<8> 地面航向(000.0~359.9度,前面的0也将被发送),例如073.0
<9> UTC日期,ddmmyy (日月年) 格式,例如130309
<10> 磁偏角 (000.0~180.0度,前面的0也将被发送),例如011.3
<11> 磁偏角方向,E(东) 或W(西),例如E
<12> 模式指示(NEMA 0183的A=自主定位,D=差分,E=估算,N=信息无效),
*hh 为检查码,例如*62
geo fix send a simple GPS fix
注:geo fix 是发送一组固定的 GPS 位置,
它的格式为经度(longitude)、纬度(latitude) 与 海拔(altitude)。
可以从 http://www.kenjikojima.com/jikankei/map.html 网页上的地图画面查到。

3. gsm 命令可以仿真 GSM 手机拨打的状态;
格式:
gsm list list current phone calls
gsm call create inbound phone call
gsm busy close waiting outbound call as busy
gsm hold change the state of an oubtound call to 'held'
gsm accept change the state of an outbound call to 'active'
gsm cancel disconnect an inbound or outbound phone call
gsm data modify data connection state
gsm voice modify voice connection state
gsm status display GSM status
例如:
gsm call 5556688
注:只要后面加上任意一个电话号码,就可以在 Android 手机中接听进行 GSM 电话的仿真拨打。

4. sms send 命令可以仿真手机发送短信;
格式:
sms send <phonenumber> <message>
例子:
sms send 5556688 Hello Android
注:只要用任意一个电话号码,就可以在 Android 手机中接收到此电话号的仿真来信。
5. network speed 命令可以更改手机的网络发送模式;
格式:
network speed <speed>
说明:
<speed> 可选择如下一项:
gsm      GSM/CSD
hscsd    HSCSD
gprs     GPRS
edge     EDGE/EGPRS
umts     UMTS/3G
hsdpa    HSDPA
full     no limit
<num>    selects both upload and download speed
<up>:<down> select individual upload/download speeds
注:共有 gsm(GSM/CSD)、gprs(GPRS)、edge(EDGE/EGPRS)、umts(UMTS/3G)、
hsdpa(HSDPA/3.5G) 或 full(全速)几种发送模式,
不限定采用哪一种发送模式,此为Android系统的网络默认设置。

 

6. network status 命令可以查看Android仿真器的网络发送状态;
例如:
network status
Current network status:
download speed:          0 bits/s (0.0 KB/s)
upload speed:            0 bits/s (0.0 KB/s)
minimum latency:  0 ms
maximum latency:  0 ms

7. redir add 命令可以导向指定(tcp/udp)协议的指定主机端口上的任意包到指定仿真器端口上
格式:
redir add <protocol>:<host-port>:<guest-port>
例子:
redir add tcp:5000:6000
注:将允许发送到主机 TCP 协议 5000 端口的任意包发送到仿真器的 TCP 协议 6000 端口。

8. redir list 命令可以列出当前已经导向的TCP或UDP通信端口;

9. redir del 命令可以将已经导向的通信端口删除
格式:
redir del <protocol>:<host-port>
例子:
redir del tcp:5000
注:将刚才建立的主机 TCP 端口 5000 到仿真器 TCP 端口 6000的导向删除。

10. power display 命令可以显示当前手机的电源状态是否接上AC电源以及电池的剩余电量;
例如:
power display
AC: online
status: Charging
health: Good
present: true
capacity: 50

11. window scale 命令可以立即改变仿真器窗口的大小;
格式:
window scale <scale>
注:<scale> 必须是 0.1 ~ 3.0 之间的一个实数,或者是一个整数后跟 dpi 例如:120dpi。
例子:
window scale 0.5
注:仿真器窗口比当前缩小一半比例大小。

12. kill 命令可以立即将仿真器窗口关闭退出;
例子:
kill
OK: killing emulator, bye bye
Connection closed by foreign host.

3) adb = Android Debug Bridge 是 Android 提供的一个通用的调试工具:
1. $ adb shell => 进入 Android shell 可以执行各种 Linux 的命令
2. $ adb shell dmesg => 打印出内核的调试信息
3. $ adb push <主机的文件> <虚拟机的目录> => 上传文件
4. $ adb pull <虚拟机的文件> <主机的目录> => 下载文件
5. $ adb install <安装包名.apk> => 安装程序,安装到 /data/app/ 目录下
6. $ adb shell rm /data/app/<安装包名.apk> => 卸载程序
7. $ adb devices => 虚拟设备 telnet 控制端口信息,例如:
List of devices attached
emulator-5554    device
8. $ adb bugreport => 查看bug报告

4) 数据库:
联络人(含通话记录)数据库:
/data/data/com.android.providers.contacts/databases/contacts.db

媒体库(貌似记录铃声设置等信息):
/data/data/com.android.providers.media/databases/internal.db

系统设置:
/data/data/com.android.providers.settings/databases/settings.db

电话服务:
/data/data/com.android.providers.telephony/databases/telephony.db

短信库:
/data/data/com.android.providers.telephony/databases/mmssms.db

时区设置:
/data/property/persist.sys.timezone

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值