首页 > 代码库 > adb shell
adb shell
执行Shell命令
Adb提供了shell来在模拟器或手机上运行各种各样的命令,这些命令的二进制形式存在于这个路径中:
/system/bin/...
无论是否进入adb远程shell,都可以使用 shell 命令来执。
在未进入远程shell的情况下可以按下述格式执行单条命令:
adb [-d|-e|-s {<serialNumber>}] shell <shellCommand>
启动远程shell使用下面的格式:
adb [-d|-e|-s {<serialNumber>}] shell
退出远程shell时使用CTRL+D 或 exit 终止会话。
以下是可以使用的shell命令的更多信息。
adb shell 在目标模拟器或手机上启动远程SHELL
adb shell [<shellCommand>] 在目标模拟器或手机上执行shellCommand然后退出远程SHELL
使用Monkey进行UI或应用程序测试
Monkey是运行于模拟器或手机上的一个程序,通过生成伪随机的大量的系统级的用户事件流来模拟操作,包括单击、触摸、手势等。从而为正在开发中的应用程序通过随机响应进行压力测试。
最简单使用monkey的方式是通过下面的命令行,它可以运行指定的应用程序并向其发送500个伪随机事件。
$ adb shell monkey -v -p your.package.name 500
详情 参考: http://developer.android.com/tools/help/monkey.html
adb shell dumpsys activity
列出目标设备上的activity栈(back stack)和任务(task)的信息, 还有其他组件的一些信息和一些关于进程的信息
adb shell dumpsys packages
列出一些系统信息和所有应用的信息。这个命令的输出很庞大,在三星nexus上的输出有12000多行。这些信息
都非常详细,包括Features,Activity Resolver Table等。以下是输出的主要信息:
还有两个比较好用的命令是adb shell am和adb shell pm,
这两个命令在frameworks/base/cmds下面。
am命令主要用于管理Activity,(可以理解为 activityManager)例如启动,停止Activity(eclipse在运行Activity就使用了这个命令),发送intent;
pm命令则主要用于管理应用package的管理,(可以理解为 packagesManager)有点像控制面板的添加和删除程序。
adb shell pm list permissions
列出目标平台上的所有权限
adb shell pm list packages
列出目标设备上安装的所有app的包名
adb shell pm list features
列出目标设备上的所有feature
使用adb命令启动一个Activity
adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。
- adb shell am start -n com.growingwiththeweb.example/.MainActivity
- adb shell am start -n com.growingwiththeweb.example/com.growingwiththeweb.example.MainActivity</s
su
1.作用
su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。
所有命令都是运用超级终端下的BUSYBOX工具集。以下简述
busybox
BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。
1、 BusyBox 的诞生
BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
2、busybox的用法
可以这样用busybox
#busybox ls
他的功能就相当运行ls命令
最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能.
#ln -s busybox ls
#ln -s busybox rm
#ln -s busybox mkdir
然后分别运行这三个链接:
#./ls
#./rm
#./mkdir
就可以分别完成了ls rm 和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox,但是只要链接名不同,完成的功能就不同,很多linux网站都提供busybox的源代码下载。
3、配置busybox
busybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置linux内核的朋友很容易上手.
#cp busybox-1.00.tar.gz /babylinux
#cd /babylinux
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig
下面是需要编译进busybox的功能选项。
General Configuration应该选的选项
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使它正常工作.
Installation Options
Don‘t use /usr
这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向它的链接.
其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。
4、编译并安装busybox
#make
#make install
编译好后在busybox目录下生成子目录_install,里面的内容:
drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
rwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.
adb shell