adb 是android debug bridge 的简称
语法
adb [-d|-e|-s <serialNumber>] <command>
3. 命令
Category | Command | Description | Comments |
---|---|---|---|
Target Device | -d |
Direct an adb command to the only attached USB device. | Returns an error if more than one USB device is attached. |
-e |
Direct an adb command to the only running emulator instance. | Returns an error if more than one emulator instance is running. | |
-s <serialNumber> |
Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as "emulator-5556"). | See Directing Commands to a Specific Emulator/Device Instance. | |
General | devices |
Prints a list of all attached emulator/device instances. | See Querying for Emulator/Device Instancesfor more information. |
help |
Prints a list of supported adb commands. | ||
version |
Prints the adb version number. | ||
Debug | logcat [option] [filter-specs] |
Prints log data to the screen. | |
bugreport |
Prints dumpsys , dumpstate , and logcat data to the screen, for the purposes of bug reporting. |
||
jdwp |
Prints a list of available JDWP processes on a given device. | You can use the forward jdwp:<pid> port-forwarding specification to connect to a specific JDWP process. For example: adb forward tcp:8000 jdwp:472 jdb -attach localhost:8000 |
|
Data | install <path-to-apk> |
Pushes an Android application (specified as a full path to an .apk file) to an emulator/device. | |
pull <remote> <local> |
Copies a specified file from an emulator/device instance to your development computer. | ||
push <local> <remote> |
Copies a specified file from your development computer to an emulator/device instance. | ||
Ports and Networking | forward <local> <remote> |
Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. | Port specifications can use these schemes:
|
ppp <tty> [parm]... |
Run PPP over USB.
Note that you should not automatically start a PPP connection. |
||
Scripting | get-serialno |
Prints the adb instance serial number string. | See Querying for Emulator/Device Instancesfor more information. |
get-state |
Prints the adb state of an emulator/device instance. | ||
wait-for-device |
Blocks execution until the device is online — that is, until the instance state is device . |
You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example:adb wait-for-device shell getpropNote that this command does not cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the install requires the Android package manager, which is available only after the system is fully booted. A command such asadb wait-for-device install <app>.apkwould issue the install command as soon as the emulator or device instance connected to the adb server, but before the Android system was fully booted, so it would result in an error. |
|
Server | start-server |
Checks whether the adb server process is running and starts it, if not. | |
kill-server |
Terminates the adb server process. | ||
Shell | shell |
Starts a remote shell in the target emulator/device instance. | See Issuing Shell Commands for more information. |
shell [shellCommand] |
Issues a shell command in the target emulator/device instance and then exits the remote shell. |
Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the devices
command:
adb devices
如果有多个设备,则可以指定要执行的设备
adb -s <serialNumber> <command>
例如:
adb -s emulator-5556 install helloWorld.apk
如果有多个设备,但是这些设备中只有一个模拟器,想对模拟器执行命令,则可以用
adb -e 对模拟器执行命令
如果有多个设备,但是只有一个是硬件设备,则可用
adb -d对这个硬件设备执行命令
安装应用:
adb install <path_to_apk>
转发端口
可以使用转发命令设置任意端口来转发。处理从主机端口到设备端口的请求。
如:
adb forward tcp:6100 tcp:7100
tcp:6100是电脑主机的端口,tcp:7100是设备端口
拷贝文件
adb pull <remote> <local>
把设备上的文件拷贝到电脑本地
adb push <local> <remote>
把本地的文件拷贝到设备端
例如:
adb push foo.txt /sdcard/foo.txt
执行shell命令
shell 命令以二进制存在system/bin...路径下
常用的连个命令工具:
am 即:activity manager 和pm 即: package manager
命令格式如下:
adb [-d|-e|-s <serialNumber>] shell <shell_command>
或者
adb [-d|-e|-s <serialNumber>] shell
退出远程shell 命令:exit 或者ctrl+D
使用am命令管理activity
语法:
am <command>
例如:
adb shell am start -a android.intent.action.VIEW
可用的am命令
start [options] <INTENT> |
Start an Activity specified by <INTENT> .See the Specification for <INTENT> arguments. Options are:
|
startservice [options] <INTENT> |
Start the Service specified by <INTENT> .See the Specification for <INTENT> arguments. Options are:
|
force-stop <PACKAGE> |
Force stop everything associated with <PACKAGE> (the app's package name). |
kill [options] <PACKAGE> |
Kill all processes associated with <PACKAGE> (the app's package name). This command kills only processes that are safe to kill and that will not impact the user experience.Options are:
|
kill-all |
Kill all background processes. |
broadcast [options] <INTENT> |
Issue a broadcast intent. See the Specification for <INTENT> arguments. Options are:
|
instrument [options] <COMPONENT> |
Start monitoring with an Instrumentation instance. Typically the target<COMPONENT> is the form <TEST_PACKAGE>/<RUNNER_CLASS> .Options are:
|
profile start <PROCESS> <FILE> |
Start profiler on <PROCESS> , write results to <FILE> . |
profile stop <PROCESS> |
Stop profiler on <PROCESS> . |
dumpheap [options] <PROCESS> <FILE> |
Dump the heap of <PROCESS> , write to <FILE> .Options are:
|
set-debug-app [options] <PACKAGE> |
Set application <PACKAGE> to debug.Options are:
|
clear-debug-app |
Clear the package previous set for debugging with set-debug-app . |
monitor [options] |
Start monitoring for crashes or ANRs. Options are:
|
screen-compat [on|off] <PACKAGE> |
Control screen compatibility mode of <PACKAGE> . |
display-size [reset|<WxH>] |
Override emulator/device display size. This command is helpful for testing your app across different screen sizes by mimicking a small screen resolution using a device with a large screen, and vice versa. Example: |
display-density <dpi> |
Override emulator/device display density. This command is helpful for testing your app across different screen densities on high-density screen environment using a low density screen, and vice versa. Example: |
to-uri <INTENT> |
Print the given intent specification as a URI. See the Specification for <INTENT> arguments. |
to-intent-uri <INTENT> |
Print the given intent specification as an intent: URI.See the Specification for <INTENT> arguments. |
For activity manager commands that take a <INTENT>
argument, you can specify the intent with the following options:
-a <ACTION>
Specify the intent action, such as "android.intent.action.VIEW". You can declare this only once.
-d <DATA_URI>
Specify the intent data URI, such as "content://contacts/people/1". You can declare this only once.
-t <MIME_TYPE>
Specify the intent MIME type, such as "image/png". You can declare this only once.
-c <CATEGORY>
Specify an intent category, such as "android.intent.category.APP_CONTACTS".
-n <COMPONENT>
Specify the component name with package name prefix to create an explicit intent, such as "com.example.app/.ExampleActivity".
-f <FLAGS>
Add flags to the intent, as supported by setFlags()
.
--esn <EXTRA_KEY>
Add a null extra. This option is not supported for URI intents.
-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>
Add string data as a key-value pair.
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>
Add boolean data as a key-value pair.
--ei <EXTRA_KEY> <EXTRA_INT_VALUE>
Add integer data as a key-value pair.
--el <EXTRA_KEY> <EXTRA_LONG_VALUE>
Add long data as a key-value pair.
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>
Add float data as a key-value pair.
--eu <EXTRA_KEY> <EXTRA_URI_VALUE>
Add URI data as a key-value pair.
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>
Add a component name, which is converted and passed as a ComponentName
object.
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]
Add an array of integers.
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]
Add an array of longs.
--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]
Add an array of floats.
--grant-read-uri-permission
Include the flag FLAG_GRANT_READ_URI_PERMISSION
.
--grant-write-uri-permission
Include the flag FLAG_GRANT_WRITE_URI_PERMISSION
.
--debug-log-resolution
Include the flag FLAG_DEBUG_LOG_RESOLUTION
.
--exclude-stopped-packages
Include the flag FLAG_EXCLUDE_STOPPED_PACKAGES
.
--include-stopped-packages
Include the flag FLAG_INCLUDE_STOPPED_PACKAGES
.
--activity-brought-to-front
Include the flag FLAG_ACTIVITY_BROUGHT_TO_FRONT
.
--activity-clear-top
Include the flag FLAG_ACTIVITY_CLEAR_TOP
.
--activity-clear-when-task-reset
Include the flag FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
.
--activity-exclude-from-recents
Include the flag FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
.
--activity-launched-from-history
Include the flag FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
.
--activity-multiple-task
Include the flag FLAG_ACTIVITY_MULTIPLE_TASK
.
--activity-no-animation
Include the flag FLAG_ACTIVITY_NO_ANIMATION
.
--activity-no-history
Include the flag FLAG_ACTIVITY_NO_HISTORY
.
--activity-no-user-action
Include the flag FLAG_ACTIVITY_NO_USER_ACTION
.
--activity-previous-is-top
Include the flag FLAG_ACTIVITY_PREVIOUS_IS_TOP
.
--activity-reorder-to-front
Include the flag FLAG_ACTIVITY_REORDER_TO_FRONT
.
--activity-reset-task-if-needed
Include the flag FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
.
--activity-single-top
Include the flag FLAG_ACTIVITY_SINGLE_TOP
.
--activity-clear-task
Include the flag FLAG_ACTIVITY_CLEAR_TASK
.
--activity-task-on-home
Include the flag FLAG_ACTIVITY_TASK_ON_HOME
.
--receiver-registered-only
Include the flag FLAG_RECEIVER_REGISTERED_ONLY
.
--receiver-replace-pending
Include the flag FLAG_RECEIVER_REPLACE_PENDING
.
--selector
Requires the use of -d
and -t
options to set the intent data and type.
<URI> <COMPONENT> <PACKAGE>
You can directly specify a URI, package name, and component name when not qualified by one of the above options. When an argument is unqualified, the tool assumes the argument is a URI if it contains a ":" (colon); it assumes the argument is a component name if it contains a "/" (forward-slash); otherwise it assumes the argument is a package name.
pm命令:
语法:
pm <command>
例如:
adb shell pm uninstall com.example.MyApp
pm可用的命令表:
Command | Description |
---|---|
list packages [options] <FILTER> |
Prints all packages, optionally only those whose package name contains the text in <FILTER> .Options:
|
list permission-groups |
Prints all known permission groups. |
list permissions [options] <GROUP> |
Prints all known permissions, optionally only those in<GROUP> .Options:
|
list instrumentation |
List all test packages. Options:
|
list features |
Prints all features of the system. |
list libraries |
Prints all the libraries supported by the current device. |
list users |
Prints all users on the system. |
path <PACKAGE> |
Print the path to the APK of the given <PACKAGE> . |
install [options] <PATH> |
Installs a package (specified by <PATH> ) to the system.Options:
|
uninstall [options] <PACKAGE> |
Removes a package from the system. Options:
|
clear <PACKAGE> |
Deletes all data associated with a package. |
enable <PACKAGE_OR_COMPONENT> |
Enable the given package or component (written as "package/class"). |
disable <PACKAGE_OR_COMPONENT> |
Disable the given package or component (written as "package/class"). |
disable-user [options] <PACKAGE_OR_COMPONENT> |
Options:
|
grant <PACKAGE_PERMISSION> |
Grant permissions to applications. Only optional permissions the application has declared can be granted. |
revoke <PACKAGE_PERMISSION> |
Revoke permissions to applications. Only optional permissions the application has declared can be revoked. |
set-install-location <LOCATION> |
Changes the default install location. Location values:
Note: This is only intended for debugging; using this can cause applications to break and other undesireable behavior. |
get-install-location |
Returns the current install location. Return values:
|
set-permission-enforced <PERMISSION> [true|false] |
Specifies whether the given permission should be enforced. |
trim-caches <DESIRED_FREE_SPACE> |
Trim cache files to reach the given free space. |
create-user <USER_NAME> |
Create a new user with the given <USER_NAME> , printing the new user identifier of the user. |
remove-user <USER_ID> |
Remove the user with the given <USER_IDENTIFIER> , deleting all data associated with that user |
get-max-users |
Prints the maximum number of users supported by the device. |
例如:
adb -s emulator-5554 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
记录设备屏幕:
screenrecord
例如:
$ adb shell screenrecord /sdcard/demo.mp4
Stop the screen recording by pressing Ctrl-C, otherwise the recording stops automatically at three minutes or the time limit set by --time-limit
.
例如:
$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Ctrl-C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4
screenrecord
options
Options | Description |
---|---|
--help |
Displays a usage summary. |
--size <WIDTHxHEIGHT> |
Sets the video size, for example: 1280x720 . The default value is the device's main display resolution (if supported), 1280x720 if not. For best results, use a size supported by your device's Advanced Video Coding (AVC) encoder. |
--bit-rate <RATE> |
Sets the video bit rate for the video, in megabits per second. The default value is 4Mbps. You can increase the bit rate to improve video quality or lower it for smaller movie files. The following example sets the recording bit rate to 6Mbps:screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit <TIME> |
Sets the maximum recording time, in seconds. The default and maximum value is 180 (3 minutes). |
--rotate |
Rotates the output 90 degrees. This feature is experimental. |
--verbose |
Displays log information on command line screen. If you do not set this option, the utility does not display any information while running. |
monkey命令:
adb shell monkey -v -p your.package.name 500
列出所有可以使用的命令:
adb shell ls /system/bin
其他命令:
Some other adb shell commands
Shell Command | Description | Comments |
---|---|---|
dumpsys |
Dumps system data to the screen. | The Dalvik Debug Monitor Server (DDMS) tool offers integrated debug environment that you may find easier to use. |
dumpstate |
Dumps state to a file. | |
logcat [option]... [filter-spec]... |
Enables system and app logging and prints output to the screen. | |
dmesg |
Prints kernel debugging messages to the screen. | |
start |
Starts (restarts) an emulator/device instance. | |
stop |
Stops execution of an emulator/device instance. |
使用无线连接也可以用命令,这样就可以告别数据线:
adb is usually used over USB. However, it is also possible to use over Wi-Fi, as described here.
Connect Android device and adb host computer to a common Wi-Fi network accessible to both. We have found that not all access points are suitable; you may need to use an access point whose firewall is configured properly to support adb.
Connect the device with USB cable to host.
Make sure adb is running in USB mode on host.
$ adb usb
restarting in USB mode
Connect to the device over USB.
######## device
Restart host adb in tcpip mode.
$ adb tcpip 5555
restarting in TCP mode port: 5555
Find out the IP address of the Android device: Settings -> About tablet -> Status -> IP address. Remember the IP address, of the form #.#.#.#
.
Connect adb host to device:
#.#.#.##.#.#.#:5555
Remove USB cable from device, and confirm you can still access device:
#.#.#.#:5555 device
You're now good to go!
If the adb connection is ever lost:
Make sure that your host is still connected to the same Wi-Fi network your Android device is.
Reconnect by executing the "adb connect" step again.
Or if that doesn't work, reset your adb host:
adb kill-server
and then start over from the beginning.