1、Android 的 ADB 工具使用 在 SDK 的 Tools 文件夹下包含着 Android 模拟器操作的重要命令 ADB, ADB 的全称为 Android Debug Bridge,就是调试桥的作用,借助这个工具,我们可以管理设备或手机模拟器的状态 ,还可以进行以下的操作: ( 1) 快速更新设备或手机模拟器中的代码,如应用或 Android 系统升级; ( 2) 在设备上运行 Shell 命令; ( 3) 管理设备或手机模拟器上的预定端口; ( 4) 在设备或手机模拟器上复制或粘贴文件 。 ADB 的工作方式比较特殊采用监听 Socket TCP 5554 等端口的方式让 IDE 和
2、 Qemu 通 信 ,默认情况下 ADB 会daemon 相关的网络端口,所以当我们运行 Eclipse 时 ADB 进程就会自动运行,在 Eclipse 中通过 DDMS 来调试Android 程序;也可以通过手动方式调用,以下为一些常用的操作供参考。 1.版本信息 D:unsetupandroid-sdk-windows-1.0_r1toolsadb version Android Debug Bridge version 1.0.20 2.安装应用到模拟器 adb install -l -r 。 其中 file 是 需要安装的 apk 文件的决定路径 。 3.卸载已经安装的应用 ( 1)
3、方法 1: adb uninstall -k 。 其中 package 表示需要卸载的应用的包的名字, k 表示是否保留应用的配置信息和 cache 数据 。 ( 2)手动删除 。 adb shell cd /data/app rm app.apk 4.进入设备或模拟器的 Shell adb shell 通过上面的命令,就可以进入设备或模拟 器的 Shell 环境中,在这个 Linux Shell 中, 可以执行各种 Linux 的命令,另外如果只想执行一条 Shell 命令,可以采用以下的方式: adb shell command 如: D:unsetupandroid-sdk-window
4、s-1.0_r1toolsadb shell df /dev: 49564K total, 0K used, 49564K available (block size 4096) /sqlite_stmt_journals: 4096K total, 0K used, 4096K available (block size 4096) /system: 69120K total, 65508K used, 3612K available (block size 4096) /data: 76544K total, 63684K used, 12860K available (block siz
5、e 4096) /cache: 69120K total, 1244K used, 67876K available (block size 4096) 5.转发端口 可以使用 forward 命令进行任意端口的转 发 一个模拟器 /设备实例的某一特定主机端口向另一不同端口的转发请求。下面演示了如何建立从主机端口 7100 到模拟器 /设备端口 8100 的转发。 adb forward tcp:7100 tcp:8100 同样地,可以使用 ADB 来建立命名为抽象的 UNIX 域套接口,上述过程如下所示 : adb forward tcp:7100 local:logd 6.复制文件 可以使
6、用 adb pull ,push 命令将文件复制到一个模拟器 /设备实例的数据文件或是从 数据文件中复制。 install 命令只将一个 apk 文件复制到一个特定的位置,与其不同的是, pull 和 push 命令可 让用户 复制任意的目录和文件到一个模拟器 /设备实例的任何位置。 从模拟器或者设备中复制文件或目录,使用如下命 : adb pull 将文件或目录复制到模拟器或者设备,使用 如下命令 : adb push 在这些命令中, 和 分别指通向自己的发展机(本地)和模拟器 /设备实例(远程)上的目标文件 /目录的路径 。 下面是一个例子: : adb push foo.txt /sdc
7、ard/foo.txt 7.搜索模拟器 /设备的实例 取得当前运行的模拟器 /设备的实例的列表及每个实例的状态,如: D:unsetupandroid-sdk-windows-1.0_r1toolsadb devices List of devices attached HT843GZ03305 device 8.查看 bug 报告 D:unsetupandroid-sdk-windows-1.0_r1toolsadb bugreport = = dumpstate = - SYSTEM LOG - 04-12 16:59:46.521 D/ShowTrack(23968): MyOverla
8、y:darw.mDefCaption=Im Here. 04-12 16:59:46.531 D/ShowTrack(23968): MyOverlay:darw.mDefCaption=Im Here. 04-12 16:59:46.531 D/ShowTrack(23968): MyOverlay:darw.mDefCaption=Im Here. 04-12 16:59:46.541 D/ShowTrack(23968): MyOverlay:darw.mDefCaption=Im Here. 04-12 16:59:47.391 I/ActivityManager( 55): Star
9、ting activity: Intent comp=com.iceskysl.iTracks/com.iceskysl.iTracks.iTracks 04-12 16:59:47.641 D/iTracks (23968): renderListView. 04-12 16:59:47.671 D/ShowTrack(23968): MyOverlay:darw.mDefCaption=Im Here. 04-12 16:59:47.681 D/ShowTrack(23968): MyOverlay:darw.mDefCaption=Im Here. 9.记录无线通讯日志 一般来说,无线通
10、讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: D:unsetupandroid-sdk-windows-1.0_r1toolsadb shell # logcat -b radio logcat -b radio D/HTC_RIL ( 30): (t=1239390296) ATHTCPDPFD=0 D/HTC_RIL ( 30): (t=1239390296) AT+CSQ D/HTC_RIL ( 30): (t=1239390296) AT+CREG? D/HTC_RIL ( 30): (t=1239390296)adb get-serialno HT843G
11、Z03305 11.通过远程 Shell 端运行 AQLite3 连接数据库 通过 ADB 远程 Shell 端,可以通过 Android 的 软 AQLite 3 命令程序来管理数据库。 SQLite 3 工具包含了许多使用命令, 例 如 , .dump 显示表的内容, .schema 可以显示出已经存在的表空间的 SQL CREATE 结果集。 SQLite3 还允许远程执行 sql 命令 。 通过 SQLite 3 , 按照前 面 的方法登 录 模拟器的远程 Shell 端,然后启动工具就可以使用 SQLite 3 命令。当SQLite 3 启动以后, 还可以指定 想查看的数据库的完整路
12、径。 模拟器 /设备实例会在文件夹中保存 SQLite3 数据库/data/data/ /databases /。 示例如下 : $ adb shell # sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db SQLite version 3.3.12 Enter “.help“ for instructions . enter commands, then quit. sqlite .exit 当启动 SQLite 3 的时候,就可以通过 Shell 端发送 SQLite 3,命令了。用 exi
13、t 或 组合键 退出 ADB 远程Shell 端 。 12.ADB 命令列表 下列表格列出了 adb 支持的所有命令 ,并对它们的意义和使用方法做了说明 . Category Command Description Comments Options -d 仅仅通过 USB 接口来管理 abd 如果不只是用 USB 接口来管理则返回错误 -e 仅仅通过模拟器实例来管理 adb 如果不是仅仅通过模拟器实例管理则返回错误 -s 通过模拟器 /设备的允许命令号码来发送命令来管理 adb (如 “emulator -5556) 如果没有指定号码,则会报错 General devices 查看所有连接模拟
14、器 /设备的设施的清 单 查看 Querying for Emulator/Device Instances 获取更多相关信息 help 查看 adb 所支持的所有命令 version 查看 adb 的版本序列号 Debug logcat 将日志数据输出到屏幕上 bugreport 查看 bug 的报告,如dumpsys ,dumpstate ,和 logcat 信息 jdwp 查看指定 设施的可用的 JDWP 信息 可以用 forward jdwp:端口映射信息来连接指定的 JDWP 进程 , 例如: adb forward tcp:8000 jdwp:472 jdb -attach loc
15、alhost:8000 Data install 安装 Android 为(可以模拟器 /设施的数据文件 .apk 指定完整的路径) pull 将指定的文件从模拟器 /设施 拷贝到 计算机上 push 将指定的文件从 计算机 上拷贝到模拟器 /设备中 Ports and Networking forward 用本地指定的端口通过 Socket 方法远程连接模拟器 /设施 端口需要描述下列信息 : tcp: local: dev: jdwp: ppp parm 通过 USB 运行 ppp: the tty for PPP stream. For exampledev:/dev/omap_csmi
16、_ttyl. parm &mdash zero or more PPP/PPPD options, such as defaultroute ,local , notty , etc. 需要提醒 的不能自动启动 PDP 连接 Scripting get-serialno 查看 adb 实例的序列号 查看 Querying for Emulator/Device Instances 可以获得更多信息 get-state 查看模拟器 /设施的当前状态 wait-for-device 如果设备不联机就不让执行 ,也就是实例状态是 device 时 可以提前把命令转载在 adb 的命令器中 ,在命令器
17、中的命令在模拟器 /设备连接之前是不会执行其 他 命令的 , 示例如下 : adb wait-for-device shell getprop 需要提醒的是 , 这些命令在所有的系统启动起来之前是不会启动 adb 的 , 所以在所有的系统启动起来之前 也不能执行其 他 的命令 ,例 如 , 运用 install 的时候就需要Android 包,这些包 需要 系统完全启动 ,例如: adb wait-for-device install .apk 上面的命令只有连接上了模拟器 /设备连接上了 adb 服务才会被执行,而在Android 系统完全启动前执行就会有错误发生 Server start-server 选择服务是否启动 adb 服务进程 kill-server 终止 adb 服务进程 Shell shell 通过远程 Shell 命令来控制模拟器 /设备实例 查看获取更多信息 for more information shell 连接模拟器 /设施执行 Shell 命令 ,执行完毕后退出远程 Shell 端 l