ADB Shell命令行

Android Debug Bridge(adb)提供了一个Unix Shell,使用这个你可以在一个模拟器或者一个连接设备上面运行各种命令行,这些命令的二进制执行文件时存储在模拟器或者连接设备的文件系统/system/bin/…中。

执行Unix Shell命令的方式有两种:

1、通过adb shell <shell_command>来执行

adb [-d|-e|-s <serialNumber>] shell <shell_command>

-d 直接发出一个命令到唯一的USB设备上,如果只有一个USB连接的时候,可以使用;如果连接有多个USB设备,将返回一个错误。

-e 直接发出一个命令到唯一的一个正在运行的模拟器上面,如果只有一个正在运行的模拟器,可以使用;如果有多个正在运行的模拟器,将返回一个错误。

-s 直接发出一个命令到一个指定的模拟器或者USB设备实例上面,serialNumber就是指定的设备码,可以通过adb devices得到。

例如:运行ls命令:

adb shell ls

2、使用adb shell进入远程设备shell中

adb [-d|-e|-s <serialNumber>] shell

例如:同样执行ls命令

adb shell
ls

另外可以通过 CTRL+D或者执行命令exit退出远程shell。

在设备的shell中我们可以使用下面两种命令:

使用activity manager(am)

am命令的源码在Am.java中,在shell环境下执行am命令实际是启动一个线程执行Am.java中的主函数(main方法),am命令后跟的参数都会当做运行时参数传递到主函数中,主要实现在Am.java的run方法中。

activity manager (am)工具可以执行各种系统动作,例如:启动一个activity,强制关闭一个进程,广播一个意图,修改设备屏幕属性等等,在设备的shell下面可以执行下面命令:

am <command>

例如:

am start -a android.intent.action.VIEW

下面为可以使用的am命令:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

上面的activity manager命令中带有Intent参数,关于Intent参数的指定可以带有下面这些选项:

-a <ACTION>

指定Intent的action,例如:"android.intent.action.VIEW"

-d <DATA_URI>

指定Intent的数据URI,例如:"content://contacts/people/1"

-t <MIME_TYPE>

指定Intent MIME类型,例如: "image/png"

-n <COMPONENT>

指定带有包名前缀的component名来创建隐式intent,例如:"com.example.app/.ExampleActivity"

-f <FLAGS>

给Intent添加flags,等同于setFlags()

--esn <EXTRA_KEY>

添加一个空的extra

-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>

加入可以key-value对的string数据

--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>

加入可以key-value对的boolean数据

--ei <EXTRA_KEY> <EXTRA_INT_VALUE>

加入可以key-value对的int数据

--el <EXTRA_KEY> <EXTRA_LONG_VALUE>

加入可以key-value对的long数据

--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>

加入可以key-value对的float数据

--eu <EXTRA_KEY> <EXTRA_URI_VALUE>

加入可以key-value对的URI数据

--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>

加入一个component名

--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]

加入一个integers类型数组

--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]

加入一个long类型数组

--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]

加入一个float类型数组

--grant-read-uri-permission

包含FLAG_GRANT_READ_URI_PERMISSION标签

--grant-write-uri-permission

包含FLAG_GRANT_WRITE_URI_PERMISSION标签

--debug-log-resolution

包含FLAG_DEBUG_LOG_RESOLUTION标签

--exclude-stopped-packages

包含FLAG_EXCLUDE_STOPPED_PACKAGES标签

--include-stopped-packages

包含FLAG_INCLUDE_STOPPED_PACKAGES标签

--activity-brought-to-front

包含FLAG_ACTIVITY_BROUGHT_TO_FRONT标签

--activity-clear-top

包含FLAG_ACTIVITY_CLEAR_TOP标签

--activity-clear-when-task-reset

包含FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET标签

--activity-launched-from-history

包含FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY标签

--activity-multiple-task

包含FLAG_ACTIVITY_MULTIPLE_TASK标签

--activity-no-animation

包含FLAG_ACTIVITY_NO_ANIMATION标签

--activity-no-history

包含FLAG_ACTIVITY_NO_HISTORY标签

--activity-no-user-action

包含bFLAG_ACTIVITY_NO_USER_ACTION标签

--activity-previous-is-top

包含FLAG_ACTIVITY_PREVIOUS_IS_TOP标签

--activity-reorder-to-front

包含FLAG_ACTIVITY_REORDER_TO_FRONT标签

--activity-reset-task-if-needed

包含FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标签

--activity-single-top

包含FLAG_ACTIVITY_SINGLE_TOP标签

--activity-clear-task

包含FLAG_ACTIVITY_CLEAR_TASK标签

--activity-task-on-home

包含FLAG_ACTIVITY_TASK_ON_HOME标签

--receiver-registered-only

包含FLAG_RECEIVER_REGISTERED_ONLY标签

--receiver-replace-pending

包含FLAG_RECEIVER_REPLACE_PENDING标签

--selector

需要使用-d和-t选项去设置intent数据和类型

<URI> <COMPONENT> <PACKAGE>

直接指定 URI, package name, 和 component名

例如:

拨打电话
命令:am start -a android.intent.action.CALL -d tel:电话号码
示例:am start -a android.intent.action.CALL -d tel:10086

打开一个网页
命令:am start -a android.intent.action.VIEW -d  网址
示例:am start -a android.intent.action.VIEW -d  http://www.baidu.com 

启动一个服务
命令:am startservice <服务名称>
示例:am startservice -n com.android.music/com.android.music.MediaPlaybackService

使用package manager (pm)

package manager (pm)可以执行动作并且查询安装在设备上的应用包,执行命令如下:

pm <command>

例如卸载应用:

pm uninstall com.example.MyApp

pm的相关命令如下:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

设备屏幕截图

screencap <filename>

例如:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

设备屏幕录制

screenrecord [options] <filename>

例如:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Ctrl-C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

命令选项:
这里写图片描述

其他shell命令

执行下面命令,可以列举出所有可用的shell命令:

adb shell ls /system/bin

这里写图片描述

原文链接:http://developer.android.com/tools/help/shell.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值