【Android-Emulator】Android模拟器介绍和基本使用

注:其中部分内容参考网上资源

 

1 Android 模拟器介绍

Android 中提供了一个模拟器来模拟 ARM 核的移动设备。 Android 的模拟器 是基于 QEMU 开发的, QEMU 是一个有名的开源虚拟机项目(详见 http://bellard.org/qemu/ ),它可以提供一个虚拟的 ARM 移动设备。 Android 模拟器被命名为 goldfish ,用来 模拟包括下面一些功能的 ARM SoC:

* ARM926ej-S CPU

* Thumb support

* MMC

* RTC

* Keyboard

* USB Gadget

* Framebuffer

* TTY driver

* NAND FLASH

Android 模拟器所对应的源代码主要在 external/qemu 目录下。如果你想将 Android 移植到其 他设备上,熟悉它目前所针对的模拟器环境可以提供一些参考。

对于应用程序的开发者,模拟器 提供了很多开发和测试时的便利。无论在 Windows 下还是 Linux 下, Android 模拟器都可以顺利运行,并且 Google 提供了 Eclipse 插件,可将模拟器集成到 Eclipse IDE 环境。当然,你也可以从命令行启动 Android 模拟器。

这款模拟器功能非常齐全,电话 本、通话等功能都可正常使用(当然你没办法真的从这里打电话)。甚至其内置的浏览器和 Google Maps 都可以联网。用户可以使用键盘输入,鼠标点击模拟器按键输入,甚至还可以使用鼠标点击、拖动屏幕进 行操纵。

当然模拟器毕竟是模拟器,和真 实的机子还是存在差别的,

android 模拟器和真机的不同之处:

* 不支持呼叫和接听实际来电;但可以通过控制台模拟电话呼叫 ( 呼入和呼出 )
    *
不支持 USB 连接

* 不支持相机 / 视频捕捉

* 不支持音频输入 ( 捕捉 ) ;但支持输出 ( 重放 )

* 不支持扩展耳机

* 不能确定连接状态

* 不能确定电池电量水平和交流充电状态

* 不能确定 SD 卡的插入 / 弹出

* 不支持蓝牙

2 、创建和启动 Android 模拟器

要玩 GPhone 的模拟器,当然需要先去 http://developer.android.com/sdk ( 如果打不开就用 http://androidappdocs.appspot.com/sdk/index.html ) 上面下载 Android SDK ,解压出来后在 SDK 的根目录下有一个 tools 文件夹,里面就是模拟器和一些非常有用的工具。( SDK 详细的安装过程请参照 http://blog.csdn.net/magicyu2/archive/2009/11/02/4755747.aspx

要正确的启动模拟,你必须先要 创建一个 AVD( Android Virtual Device 虚拟设备 ) ,你可以利用 AVD 创建基于不同版本 的模拟器,下面就介绍如何创建 AVD

(1)        查看当前支持版本 ( 在列出的版本中我们需要记住 id 值,这个值在第 2 步中使用 )

magicyu@magicyu-desktop:~$ android list target

你可以看到几个 Available Android targets ,比如: Name: Android 1.6 ,他们有各自的 id 号。

(2)        创建 AVD

magicyu@magicyu-desktop:~$ android create avd -n magicyu -t 2

-n 后面接需要创建 avd 的名字, -t 后面接需要创建虚拟器的类型, 2 即为步骤( 1 )中得到的类型 id 号。

(3)        查看是否创建成功 ( 如果成功会显示刚才我们创建的 avd 信息 )

magicyu@magicyu-desktop:~$ android list avd

(4)        启动模拟器:

magicyu@magicyu-desktop:~$ emulator @magicyu 或 者

emulator -avd magicyu

其中 @ -avd 后接的是你创建过的 avd 名字

(5)        选择启动的皮肤

magicyu@magicyu-desktop:~$ emulator -avd magicyu -skin QVGA

skin 后面接所要 启动皮肤的类型,所有的类型可以在 <SDK>/ platforms/android-1.*/skins 目录下找到, * 为所指的版本。如在 1.6 版本的 SDK 下有 HVGA QVGA   WVGA800 WVGA854 几种。按 Ctrl+F11 ,可以直接改变模拟器的横纵摆放。

      

当然 AVD 也可以在 Eclipse 中创建和启动。关于 Eclipse+ADT+SDK 的安装请参见 http://blog.csdn.net/magicyu2/archive/2009/11/02/4755747.aspx

运行 Eclipse Window->Android SDK and AVD Manager ,就能得到如下的界面,选择新建即可新建一 个 AVD

 

 eclipse_create_avd

3 Android 模拟器的一些工具

1 adb:

ADB(Android Debug Bridge) Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态还可以进行以下的操 作:

a 、快速更新设备或 手机模拟器中的代码,如应用或 Android 系统升级;

b 、在设备上运行 shell 命令;

c 、管理设备或手机 模拟器上的预定端口;

d 、在设备或手机模 拟器上复制或粘贴文件

一些常用的操作:

进入 Shell: adb shell

通过上面的命令,就可以进入设 备或模拟器的 shell 环境中,在这个 Linux Shell 中,你可以执行各种 Linux 的命令,另外如果只想执行一条 shell 命令,可以采用以下的方式:

adb shell [command]

如: adb shell dmesg 会打印出内核的调试信息。

(Android linux shell 做了大量精简,很多 linux 常用指令都不支持 )

上传文件 : adb push <PC 文件 > </tmp/...>

下载文件 : adb pull </tmp/...> <PC 文件 >

安装程序 : adb install <*.apk>

卸载软件 : adb shell rm /data/app/<*.apk>

补充一点,通过 adb 安装的软件 (*.apk) 都在 "/data/app/" 目录下,所以安装时不必制定路径,卸载只需要简单的执行 "rm" 就行。

结束 adb: adb kill-server

显示 android 模拟器状态 :

adb devices ( 端口信息 )

adb get-product ( 设备型号 )

adb get-serialno ( 序列号 )

等待正在运行的设备 : adb wait-for-device

端口转发 : adb forward adb forward tcp:5555 tcp:1234

( 将默认端口 TCP 5555 转发到 1234 端口上 )

查看 bug 报告 : adb bugreport

adb shell sqlite3 访问数据库 SQLite3

adb shell logcat -b radio 记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时 没必要去记录,但我们还是可以通过命令,设置记录

 

应用程序配置文件 :

"AndroidManifest.xml"

"<category android:name="android.intent.category.LAUNCHER" />"

决定是否应用程序是否显示在 Panel

 

2 am 指令 ( shell 内使用 am 来加载 android 应用 ):

am [start|instrument]   

 

am start [-a <ACTION>]

  [-d <DATA_URI>]

  [-t <MIME_TYPE>]    

  [-c <CATEGORY> [-c <CATEGORY>] ...] 

  [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]

  [-n <COMPONENT>] [-D] [<URI>]       

am instrument [-e <ARG_NAME> <ARG_VALUE>]

  [-p <PROF_FILE>]          

  [-w] <COMPONENT>

启动浏览器 :

am start -a android.intent.action.VIEW -d http://www.google.cn/

拨打电话 :

am start -a android.intent.action.CALL -d tel:10086

启动 google map 直接定位到北京 :

am start -a android.intent.action.VIEW geo:0,0?q=beijing

 

3 )为模拟器加上 SD 卡:

emulator -sdcard <path>/sdcard.img

下面我们再来说说如何创建 "sdcard.img" 文件:

“tools” 目录 下还有另外一个很好用的工具 mksdcard ,一看名字就知 道 ——make sdcard 。对,就用它来创建一个 “SD

命令为:

mksdcard 1024M D:/sdcard.img

OK, 这样一个容量 为 1G SD 卡就创建完毕了。

使用 SDCard:

创建 : mksdcard <1024M> <sdcard.img>
(bytes(default)
K M)

连接到模拟器 : emulator -sdcard <path/sdcard.img>

传文件到 SDCard: adb push < 目录 /audio.mp3> </sdcard/audio.mp3>

 

4 Android 模拟器打电话发短信

GPhone 的模拟 器有个特有的号码: 15555218135 ,这个就类似我们 实体手机的 SIM 卡号码啦。要实现拨号,用手机?当 然不行!

更简单,三步:

1. 打开终端

2. 连接 : telnet localhost 5554 5554 是你打开模拟器后上面显示的数字)

3. 命令 :gsm call 15555218135

look !是不是模 拟器上显示来电了?接听 / 挂断和实体手机一样。

发短信也一样简单,重复上面 1 2 两步,第三部命令改一下:

sms send 15555218135 Hello,this is a Message.

 

4 Android 模拟器主要命令参数介绍

emulator [-<option> [<value>]] ... [-<qemu args>]
下面的 表总结了可用的参数

Help

-help 打印模拟 器参数列表。

-help-all 打 印所有启动参数明细。

-help-<option> 打印指定启动参数的信息。

-help-debug-tags 打印所有被 -debug <tags> 打开的列表。

-help-disk-images 打印正在使用的磁盘镜像信息。

-help-environment 打印模拟器环境变量信息。  

-help-keys 打 印当前的键盘映射。

-help-keyset-file 打印一个自定义的键盘映射文件的定义。

 

Disk Images

-cache <filepath> 使用 <filepath> 指定网络缓存分区镜像。

自定义,您可以指定一个当前工作 目录的相对路径。如果没有指定缓存文件,模拟器会指定一个零时文件作为缓存文件。更多信息请参考 -help-disk-images.

-data <filepath> 使用 <filepath> 作为用户数据磁盘镜像。

自定义,您可以指定一个当前工作 目录的相对路径。如果 -data 没有被使用,模拟器会在 <datadir> 指定的目录下寻找名叫 "userdata-qemu.img" 的镜像文件。默认情况下,模拟器会寻找 ~/.android (on Linux/Mac) 或者 C:/Documents and Settings/<user>/Local Settings/Application Data/Android (on Windows)

如果您使用了 -data <filepath> ,但是文件并不存在,模 拟器将创建同名文件。

更多信息请参见运行多个模拟器实 例和 -help-disk-images

-image <filepath> 使用 <filepath> 作为系统镜像。

自定义,您可以指定一个当前工作 目录的相对路径。默认为 <system>/system.img
-initdata <filepath>

重写用户数据镜像时, ( 使用 -wipe-data) ,复制此文件内容到新用户数据文件镜像中。默认方式下,模拟器拷贝 <system>/userdata.img

自定义,您可以指定一个当前工作 目录的相对路径。参见 -wipe-data

更多信息请参见 -help-disk-images

-kernel <filepath> 使用 <filepath> 作为模拟器内核。自定义,您可以指定一个当前工作目录的相对路径。

-nocache 启 动模拟器时无缓存分区。参见 -cache <file>

-ramdisk <filepath> 使用 <filepath> 作为虚拟内存镜像。默认为 <system>/ramdisk.img. 自定义,您可以指定一个当前工作目录的相对路径。更多信息请参见 -help-disk-images

-sdcard <filepath> 使用 <file> 作为 SD 卡镜像。默认为 <system>/sdcard.img. 自定义,您可以指定一个当前工作目录的相对路径。更多信息请参见 -help-disk-images

-system <dirpath> 在指定的 <dir> 下搜索系统、虚拟内存和用户数据镜像文件。 <dir> 为当前路径的相对目录。

-wipe-data 重 至用户数据镜像文件。 (that is, the file specified by -datadir and -data, or the default file). 模拟器删除所有用户数据, 然后复制右 -inidata 参数指定的数据到镜像文 件,在启动之前。参见 -initdata. 更多信息请参见 -help-disk-images

Debug

-debug <tags> 开启 / 关闭指定 tag 的调试信息。

<tags> 是一个被空格 / 逗号 / 纵列所分割的调试组建名称列表。更多信息参见 -help-debug-tags

-debug-<tag> 开启 / 关闭指定 tag 的调试信息。使用 -help-debug-tags 获得您可以指定为 <tag> 的调试组件列表。

-debug-no-<tag> 关闭指定 tag 的调试信息。

-logcat <logtags> 打开指定 tag 的日志输出。如果环境变量 ANDROID_LOG_TAGS 被指定且不为空,她的值将成为日志输出的默认值。

-shell 创建一 个拥有 root 权限的命令行窗口。即使模拟器的 UI 界面无法使用了,您依然可以使用命令行窗口。按 Ctr-c 键中断模拟器运行。

-shell-serial <device> 打开具有 root 权限的脚本窗口。 <device> 必须是一个 QEMU 类型的设备。参见 'serial -dev' http://www.bellard.org/qemu/qemu-doc.html#SEC10 上关于设备类型的列表信息。这儿有一些例子:

·         -shell-serial stdio is identical to -shell

·         -shell-serial tcp::4444,server,nowait 让您的 shell 可以通过 4444 端口通讯。

·         -shell-serial fdpair:3:6 让模拟器可以使用 3 (in) 6(out) 磁碟机。

·         -shell-serial fdpair:0:1 uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data.

-show-kernel <name> 显示内核信息。

-trace <name>Enable code profiling (press F9 to start), written to a specified file.

-verbose 开 启冗长输出。 Equivalent to -debug-init. 您可以定义 ANDROID_VERBOSE 环境变量作为冗长输出参数。定义你想用到的参数,用逗号分割。这样可以省略像 -debug-<tags> 这样的参数。下面是一个设置 ANDROID_VERBOSE 的例子,它带有 -debug-init -debug-modem 参数:

ANDROID_VERBOSE=init,modem 更多信息参见 <-help-debug-tags>.

Media
-audio <backend>
使用指定的音频后端。

-audio-in <backend> 使用指定的音频输入后端。

-audio-out <backend> 使用指定的音频输出后端。

-noaudio 在 当前虚拟机实例中关闭音频支持。

-radio <device> 重新定向收音机接口到本地的字节设备。

-useaudio 打 开模拟器实例的音频支持。默认为打开。

Network

-dns-server <servers> 使用指定的 DNS 服务器。 <servers> 必须是以逗号分割,多于 4 个的服务器名或 IP 地址。

-http-proxy <proxy> 配置 TCP 连接使用 HTTP/HTTPS 代理。

<proxy> 必须符合以下格式: http://<server>:<port >

http://<username>:<password>@<server>:<port > 前缀 http:// 可以被忽略。如果 -http-proxy <proxy> 未被指定,模拟器将寻找 http_proxy 环境变量,并且自动寻找所有符号格式要求的 <proxy> 值。

-netdelay <delay> 设置网络延迟默认值为 none 。参见 Network Delay Emulation 中关于 <delay> 的值。

-netfast 快 捷的 -netspeed full -netdelay none

-netspeed <speed> 指定模拟器网络速度为 <speed>. 默认值为 full 。参见表格 Network Speed Emulation 中的 <speed> 值。

-port <port> 指定模拟器网络端口为 <port>. 控制台端口号必须介于 5554 5584 之间,并且 <port>+1 必须留作 ADB 使用。

-report-console <socket> 启动前向第三方同志此模拟器实例的网络端口。 <socket> 必须是以下几种格式

tcp:<port>[,server][,max=<seconds>]

unix:<port>[,server][,max=<seconds>]

更多信息参见 -help-report-console
System

-cpu-delay <delay> 降低模拟器 CPU 的速度到 <delay> <delay> 支持 0 100 的整数。注意 <delay> 与具体的时钟或其他的绝对频率无关。它只表现为一种抽象的,相对于当前模拟器运行状况的速度调节。

-gps <device> 重定向 NMEA GPS 到字节设备。

使用此参数通知模拟器模拟一个 NMEA-compatible GPS ,连接到一个扩展的设备或 socket 端口。 <device> 格式必须符合 QEMU-specific 所指定的设备格式。更多信息参见 'serial -dev' http://www.bellard.org/qemu/qemu-doc.html#SEC10 .

-nojni Dalvik 运行时关闭 JNI 检查

-qemu 传递参数 到 qemu

-qemu -h 关 闭 qemu 帮助。

-radio <device> 重定向录音机模块到制定的字符设备。 <device> 格式必须符合 QEMU 规定的序列设备。详情参见 http://www.bellard.org/qemu/qemu-doc.html#SEC10 .

-timezone <timezone> 设定模拟器时区为 <timezone> ,替换为系统时区。 <timezone> 必须按照时区格式指定。比如: "America/Los_Angeles" "Europe/Paris"

-version 显 示模拟器版本号。

UI

-dpi-device <dpi> 修改模拟器的分辨率适配物理设备。默认值为 165 。参见 -scale.

-no-boot-anim 关闭模拟器启动时的动画。禁用启动动画可以加快启动速度。

-no-window 关 闭模拟器的绘制窗口。

-scale <scale> 调整模拟器窗口。 <scale> 是介于 0.1 3 的数字,它是调整屏幕的比例因子。您也可以指定一个 DPI 值,在添加 dpi 前缀的情况下。 Auto 参数告诉模拟器选择自己最合适的尺寸。

-raw-keys 关 闭 Unicode 键盘 reverse-mapping.

-noskin 不使 用任何模拟器皮肤。

-keyset <file> 用指定的键盘设置文件代替默认。指定宿主键盘和模拟器之间的键盘映射文件。更多信息参见 -help-keyset

-onion <image> 用图片覆盖屏幕。不支持 JPEG ,只支持 PNG

-onion-alpha <percent> 指定 onion 皮肤透明值(百分比) 默认为 50.

-onion-rotation <position> 指定 onion 皮肤旋转。 <position> 必须是 0, 1, 2, 3 中的一个。

-skin <skinID> 启动模拟器,搭配指定皮肤。

-skindir <dir> 在指定目录 <dir> 下搜索皮肤

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值