Ubuntu下android学习——(3)Android模拟器使用

原创
2012/07/22 11:26
阅读数 4.7K

模拟器和真机的比较

    • android模拟器不具备的功能:
      不支持呼叫和接听实际来电;但可以通过控制台模拟电话呼叫(呼入和呼出)
      不支持USB连接
      不支持相机/视频捕捉
      不支持音频输入(捕捉);但支持输出(重放)
      不支持扩展耳机
      不能确定连接状态
      不能确定电池电量水平和交流充电状态
      不能确定SD卡的插入/弹出
      不支持蓝牙。

    • 模拟器具备的独特功能:
      apidemo
      ,这个API演示主要是ui部分,各种简单的控件使用技巧在里面都可以找到,
      devtools
      ,在devtools可以获取到一些debug时需要的信息。

  • 创建模拟器运行SDK目录中的sdksetup.exe文件,点击左侧VirtualDevices选项卡,点击New…



    图片
     
    在新弹出的窗口里填写:
    name:2.3.3 (给虚拟机起个名字)
    Target:2.3.3 
    选择版本
    SDcard
    100MB存储卡内存多少兆
    Skin
    :模拟器外观和屏幕尺寸
    Hardware
    :支持的硬件设备



    图片
     

    Android
    模拟器的启动速度很慢,大约需要2-3分钟,等待的时候不要担心有什么问题。下面是启动成功的画面。要注意的是用的模拟器不同,画面风格也会不同。



      图片

  • 模拟手机拨打电话和发送短信的功能

打电话和发短信需要至少2个模拟器。
注意模拟器标题上的数字“555455565558”就是这个模拟器的电话号码。

下面我们来研究下android模拟器命令

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

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

magicyu@magicyu-desktop:~$androidlist target

你可以看到几个AvailableAndroidtargets,比如:Name:Android1.6,他们有各自的id号。

2)创建AVD

magicyu@magicyu-desktop:~$androidcreate avd -n magicyu -t 2

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

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

magicyu@magicyu-desktop:~$androidlist avd

4)启动模拟器:

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

emulator-avdmagicyu

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

5)选择启动的皮肤

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

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


Android模拟器的一些工具

1adb:

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

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

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

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

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

一些常用的操作:

进入Shell:adbshell

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

adbshell[command]

如:adbshelldmesg会打印出内核的调试信息。

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

上传文件:adbpush

下载文件:adbpull

安装程序:adbinstall

卸载软件:adbshell rm /data/app/

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

结束adb:adbkill-server

显示android模拟器状态:

adbdevices(端口信息)

adbget-product(设备型号)

adbget-serialno(序列号)

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

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

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

查看bug报告:adbbugreport

adbshellsqlite3 访问数据库SQLite3

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

应用程序配置文件:

AndroidManifest.xml”

“”

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

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

am[start|instrument]

amstart[-a ]

[-d]

[-t]

[-c[-c] …]

[-e[-e...]

[-n][-D] []

aminstrument[-e ]

[-p]

[-w]

启动浏览器:

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

拨打电话:

amstart-a android.intent.action.CALL -d tel:10086

启动googlemap直接定位到北京:

amstart-a android.intent.action.VIEW geo:00?q=beijing

3)为模拟器加上SD卡:

emulator-sdcarddcard.img

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

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

命令为:

mksdcard1024MD:dcard.img

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

使用SDCard:

创建:mksdcard
(bytes(default)
KM)

连接到模拟器:emulator-sdcard

传文件到SDCard:adbpush

4Android模拟器打电话发短信

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

更简单,三步:

1.打开终端

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

3.命令:gsmcall15555218135

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

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

smssend15555218135 Hellothis is a Message.

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

emulator[-[]] … [-]
下面的表总结了可用的参数

Help

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

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

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

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

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

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

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

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

DiskImages

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

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

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

自定义,您可以指定一个当前工作目录的相对路径。如果-data没有被使用,模拟器会在指定的目录下寻找名叫”userdata-qemu.img”的镜像文件。默认情况下,模拟器会寻找~/.android(onLinux/Mac)

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

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

-image使用作为系统镜像。

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

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

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

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

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

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

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

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

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

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

Debug

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

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

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

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

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

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

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

·-shell-serialstdio is identical to -shell

·-shell-serialtcp::4444servernowait 让您的shell可以通过4444端口通讯。

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

·-shell-serialfdpair:0:1 uses the normal stdin and stdout fds exceptthat QEMU won’ttty-cook the data.

-show-kernel显示内核信息。

-traceEnablecode profiling (press F9 to start) written to a specifiedfile.

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

ANDROID_VERBOSE=initmodem更多信息参见.

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

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

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

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

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

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

Network

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

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

必须符合以下格式:http://:

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

-netdelay设置网络延迟默认值为none。参见NetworkDelayEmulation中关于的值。

-netfast快捷的-netspeedfull-netdelay none

-netspeed指定模拟器网络速度为.默认值为full。参见表格NetworkSpeedEmulation 中的值。

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

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

tcp:[server][max=]

unix:[server][max=]

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

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

-gps重定向NMEAGPS到字节设备。

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

-nojniDalvik运行时关闭JNI检查

-qemu传递参数到qemu

-qemu-h关闭qemu帮助。

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

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

-version显示模拟器版本号。

UI

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

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

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

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

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

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

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

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

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

-onion-rotation指定onion皮肤旋转。必须是 012 3中的一个。

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

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

展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部