2009年12月

<p> </p> <p>Android模拟器入门</p><p> </p><p>要玩GPhone的模拟器,当然需要先去google上面下载Android的SDK,解压出来后在SDK的根目录下有一个tools文件夹,里面就是模拟器和一些非常有用的工具。</p><p>双击“emulator.exe”,直接启动模拟器,简单吧。当然,如果要对模拟器进行一些定制,还是要从命令行调用,带上参数启动。下面就来介绍一下启动是常用的几个参数:</p><p>1.模拟器外观的定制:</p><p>480x320, landscape: emulator -skin HVGA-L</p><p>320x480, portrait : emulator -skin HVGA-P (default)</p><p>320x240, landscape: emulator -skin QVGA-L</p><p>240x320, portrait : emulator -skin QVGA-P</p><p>2.为模拟器加上SD卡:</p><p>emulator -sdcard D:sdcard.img</p><p>下面我们再来说说如何创建"sdcard.img"文件:</p><p>“tools”目录下还有另外一个很好用的工具“mksdcard.exe”,一看名字就知道——make sdcard。对,就用它来创建一个“SD卡”。</p><p>命令为:</p><p>mksdcard 1024M D:sdcard.img</p><p>OK,这样一个容量为1G的SD卡就创建完毕了。</p><p>使用SDCard:</p><p>创建: mksdcard <1024M> <sdcard.img></p><p>(bytes(default),K,M)</p><p>连接到模拟器: emulator -sdcard <目录/sdcard.img></p><p>传文件到SDCard: adb push <目录/audio.mp3> </sdcard/audio.mp3></p><p> </p><p>玩过手机模拟器的人一般最感兴趣的当然是模拟器能做什么呢?下面一一道来:</p><p>GPhone的模拟器有个特有的号码:15555218135,这个就类似我们实体手机的SIM卡号码啦。要实现拨号,用手机?当然不行!</p><p>更简单,三步:</p><p>1.运行 cmd</p><p>2.连接: telnet localhost 5554</p><p>3.命令:gsm call 15555218135</p><p>look!是不是模拟器上显示来电了?接听/挂断和实体手机一样。</p><p>发短信也一样简单,重复上面1,2两步,第三部命令改一下:</p><p>sms send 15555218135 Hello,this is a Message.</p><p>来说说PC与模拟器文件传输的方法吧。这里需要用到另一个重要工具,也在“tools”目录下,“adb.exe”。</p><p>adb:</p><p>adb(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机 模拟器 的状态 。还可以进行以下的操作:</p><p>1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;</p><p>2、在设备上运行shell命令;</p><p>3、管理设备或手机模拟器上的预定端口;</p><p>4、在设备或手机模拟器上复制或粘贴文件</p><p>一些常用的操作:</p><p>进入Shell: adb shell</p><p>通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,另外如果只想执行一条shell命令,可以采用以下的方式:</p><p>adb shell [command]</p><p>如:adb shell dmesg会打印出内核的调试信息。</p><p>(Android的linux shell做了大量精简,很多linux常用指令都不支持)</p><p>上传文件: adb push <PC文件> </tmp/...></p><p>下载文件: adb pull </tmp/...> <PC文件></p><p>安装程序: adb install <.apk></p><p>卸载软件: adb shell rm /data/app/<.apk></p><p>补充一点,通过adb安装的软件(.apk)都在"/data/app/"目录下,所以安装时不必制定路径,卸载只需要简单的执行"rm"就行。</p><p>结束adb: adb kill-server</p><p>显示android模拟器状态:</p><p>adb devices (端口信息)</p><p>adb get-product (设备型号)</p><p>adb get-serialno (序列号)</p><p>等待正在运行的设备: adb wait-for-device</p><p>端口转发: adb forward adb forward tcp:5555 tcp:1234</p><p>(将默认端口TCP 5555转发到1234端口上)</p><p>查看bug报告: adb bugreport</p><p>adb shell sqlite3 访问数据库SQLite3</p><p>adb shell logcat -b radio 记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:</p><p>应用程序配置文件:</p><p>"AndroidManifest.xml"中</p><p>"<category android:name="android.intent.category.LAUNCHER" />"</p><p>决定是否应用程序是否显示在Panel上</p><p>-----------------------------------------------------------------------------------</p><p>am指令(在shell内使用am来加载android应用):</p><p>am [start|instrument]   </p><p>   </p><p>am start [-a <ACTION>]</p><p>   [-d <DATA_URI>]</p><p>   [-t <MIME_TYPE>]                </p><p>   [-c <CATEGORY> [-c <CATEGORY>] ...] </p><p>   [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]</p><p>   [-n <COMPONENT>] [-D] [<URI>]       </p><p>am instrument [-e <ARG_NAME> <ARG_VALUE>]</p><p>   [-p <PROF_FILE>]                </p><p>   [-w] <COMPONENT></p><p>启动浏览器:</p><p>am start -a android.intent.action.VIEW -d http://www.google.cn/</p><p>拨打电话:</p><p>am start -a android.intent.action.CALL -d tel:10086</p><p>启动google map直接定位到北京:</p><p>am start -a android.intent.action.VIEW geo:0,0?q=beijing</p><p>-----------------------------------------------------------------------------------</p><p>目录:</p><p># ls</p><p>ls</p><p>sqlite_stmt_jou</p><p>cache</p><p>sdcard</p><p>etc</p><p>init</p><p>init.goldfish.r</p><p>init.rc</p><p>data</p><p>system</p><p>proc</p><p>sys</p><p>sbin</p><p>default.prop</p><p>root</p><p>dev</p><p>这里要说明下,从andorid中得到的文件流的字符串的顺序是按“类型+权限+拥有者+数组+大小+日期+名称+链接到”顺序排列的,其中类型“d”表示的是文件夹,"l"表示的是链接,'-'表示的是文件。</p><p>例如d rwxrwx--- system   cache                2009-01-09 11:46              cache</p><p>上面的目录就是通过解析ls命令返回的字符串进行解析的。</p><p>-----------------------------------------------------------------------------------</p><p>数据库:</p><p>联络人(含通话记录)数据库:/data/data/com.android.providers.contacts/databases/contacts.db</p><p>媒体库(貌似记录铃声设置等信息): /data/data/com.android.providers.media/internal.db</p><p>系统设置: /data/data/com.android.providers.settings/databases/settings.db</p><p>短信库: /data/data/com.android.providers.telephony/databases/mmssms.db</p><p>Web设置: /data.data/com.android.settings/databases/webview.db</p><p>地图搜索历史记录:/data/data/com.google.android.apps.maps/databases/search_history.db</p><p>帐号库?(内含androidId信息) : /data/data/com.google.android.googleapps/databases/accounts.db</p><p>铃声: /system/media/audio</p><p>时区设置: /data/property/persist.sys.timezone</p><p>-----------------------------------------------------------------------------------</p><p>目前的安装模式</p><p>  安装前:</p><p>  1. emulator -wipe-data</p><p>  2. adb push busybox ./</p><p>  3. adb shell ./busybox tar -cf /tmp/data.tar /data</p><p>  4. adb pull /tmp/data.tar .</p><p>  5. mkdir original</p><p>  6. cd original</p><p>  7. tar -xf ../data.tar</p><p>  安装后:</p><p>  1. adb shell ./busybox tar -cf /tmp/data.tar /data</p><p>  2. adb pull /tmp/data.tar .</p><p>  3. mkdir after_install</p><p>  4. cd after_install</p><p>  5. tar -xf ../data.tar</p><p>  </p><p>    目前来看,就是/data/app和data/data下多了两个相关文件,同时在/data/system/packages.xml中增加了安装的程序信息。似乎菜单也是从这个文件中得到是否新安装程序,以及如何显示相关信息比如名称什么的。</p><p>android模拟器和真机的不同之处:</p><p>    不支持呼叫和接听实际来电;但可以通过控制台模拟电话呼叫(呼入和呼出)</p><p>    不支持USB连接</p><p>    不支持相机/视频捕捉</p><p>    不支持音频输入(捕捉);但支持输出(重放)</p><p>    不支持扩展耳机</p><p>    不能确定连接状态</p><p>    不能确定电池电量水平和交流充电状态</p><p>    不能确定SD卡的插入/弹出</p><p>    不支持蓝牙</p><p>andoroid模拟器使用注意:</p><p>平时使用emulator测试开发的网友注意应该定期清理下C:Documents and SettingsshLocal SettingsTempAndroidEmulator文件夹,由于Android模拟器每次运行时会临时生成几个.tmp后缀的临时文件,没有几个月功夫简单一看竟然占用磁盘空间高达5GB之多。这些文件网友可以安全的删除。</p>