注:其中部分内容参考网上资源
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
。
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
。