page.title=Android Debug Bridge
parent.title=Tools
parent.link=index.html
page.tags="adb"
@jd:body

<div id="qv-wrapper">
<div id="qv">
  <h2>In this document</h2>
<ol>
  <li><a href="#issuingcommands">Syntax</a></li>
  <li><a href="#commandsummary">Commands</a></li>
  <li><a href="#devicestatus">Querying for Emulator/Device Instances</a></li>
  <li><a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a></li>
  <li><a href="#move">Installing an Application</a></li>
  <li><a href="#forwardports">Forwarding Ports</a></li>
  <li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
  <li><a href="#shellcommands">Issuing Shell Commands</a>
    <ol>
      <li><a href="#am">Using activity manager (am)</a></li>
      <li><a href="#pm">Using package manager (pm)</a></li>
      <li><a href="#sqlite">Examining sqlite3 databases from a remote shell</a></li>
      <li><a href="#screenrecord">Recording a device screen</a></li>
      <li><a href="#monkey">UI/Application Exerciser Monkey</a></li>
      <li><a href="#othershellcommands">Other shell commands</a></li>
    </ol>
  </li>
  <li><a href="#logcat">Enabling logcat logging</a></li>
  <li><a href="#stopping">Stopping the adb server</a></li>
  <li><a href="#wireless">Wireless usage</a></li>
</ol>

</div>
</div>

<p>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an
emulator instance or connected Android-powered device. It is a client-server program that includes
three components: </p>

<ul>
  <li>A client, which runs on your development machine. You can invoke a client from a shell
by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create
adb clients. </li>
  <li>A server, which runs as a background process on your development machine. The server
manages communication between the client and the adb daemon running on an emulator or device. </li>
  <li>A daemon, which runs as a background process on each emulator or device instance. </li>
</ul>

<p>You can find the {@code adb} tool in {@code &lt;sdk&gt;/platform-tools/}.</p>

<p>When you start an adb client, the client first checks whether there is an adb server
process already running. If there isn't, it starts the server process. When the server starts,
it binds to local TCP port 5037 and listens for commands sent from adb clients&mdash;all adb
clients use port 5037 to communicate with the adb server. </p>

<p>The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports &mdash; an even-numbered port for console connections and an odd-numbered port for adb connections. For example: </p>

<p style="margin-left:2em">
Emulator 1, console: 5554<br/>
Emulator 1, adb: 5555<br>
Emulator 2, console: 5556<br>
Emulator 2, adb: 5557<br>
and so on...
</p>

<p>As shown, the emulator instance connected to adb on port 5555 is the same as the instance
whose console listens on port 5554. </p>

<p>Once the server has set up connections to all emulator instances, you can use adb commands to
access those instances. Because the server manages connections to emulator/device
instances and handles commands from multiple adb clients, you can control any emulator/device
instance from any client (or from a script).</p>


<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
to your computer, the system shows a dialog asking whether to accept an RSA key that allows
debugging through this computer. This security mechanism protects user devices because it ensures
that USB debugging and other adb commands cannot be executed unless you're able to unlock the
device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
higher.</p>


<h2 id="issuingcommands">Syntax</h2>

<p>You can issue adb commands from a command line on your development machine or from a script.
The usage is: </p>

<pre class="no-pretty-print">
adb [-d|-e|-s &lt;serialNumber&gt;] &lt;command&gt;
</pre>

<p>If there's only one emulator running or only one device connected, the adb command is
sent to that device by default. If multiple emulators are running and/or multiple devices are
attached, you need to use the <code>-d</code>, <code>-e</code>, or <code>-s</code>
option to specify the target device to which the command should be directed. </p>



<h2 id="commandsummary">Commands</h2>

<p>The table below lists all of the supported adb commands and explains their meaning and usage. </p>

<p class="table-caption"><strong>Table 1.</strong> Available adb commands</p>
<table>
<tr>
  <th>Category</th>
  <th>Command</th>
  <th>Description</th>
  <th>Comments</th>
</tr>

<tr>
<td rowspan="3">Target Device</td>
<td><code>-d</code></td>
<td>Direct an adb command to the only attached USB device.</td>
<td>Returns an error if more than one USB device is attached.</td>
</tr>

<tr>
<td><code>-e</code></td>
<td>Direct an adb command to the only running emulator instance.</td>
<td>Returns an error if more than one emulator instance is running. </td>
</tr>

<tr>
<td><code>-s&nbsp;&lt;serialNumber&gt;</code></td>
<td>Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as "emulator-5556").</td>
<td>See <a href="#directingcommands">Directing
Commands to a Specific Emulator/Device Instance</a>.</td>
</tr>

<tr>
<td rowspan="3">General</td>
<td><code>devices</code></td>
<td>Prints a list of all attached emulator/device instances.</td>
<td>See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information.</td>
</tr>

<tr>
<td><code>help</code></td>
<td>Prints a list of supported adb commands.</td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>version</code></td>
<td>Prints the adb version number. </td>
<td>&nbsp;</td>
</tr>

<tr>
<td rowspan="3">Debug</td>
<td ><code>logcat&nbsp;[option] [filter-specs]</code></td>
<td>Prints log data to the screen. </td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>bugreport</code></td>
<td>Prints <code>dumpsys</code>, <code>dumpstate</code>, and <code>logcat</code> data to the screen, for the purposes of bug reporting. </td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>jdwp</code></td>
<td>Prints a list of available JDWP processes on a given device. </td>
<td>You can use the <code>forward jdwp:&lt;pid&gt;</code> port-forwarding specification to connect to a specific JDWP process. For example: <br>
    <code>adb forward tcp:8000 jdwp:472</code><br>
    <code>jdb -attach localhost:8000</code></p>
 </td>
</tr>

<tr>
<td rowspan=3">Data</td>
<td><code>install&nbsp;&lt;path-to-apk&gt;</code></td>
<td>Pushes an Android application (specified as a full path to an .apk file) to an emulator/device. </td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>pull&nbsp;&lt;remote&gt;&nbsp;&lt;local&gt;</code></td>
<td>Copies a specified file from an emulator/device instance to your development computer. </td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>push&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
<td>Copies a specified file from your development computer to an emulator/device instance. </td>
<td>&nbsp;</td>
</tr>

<tr>
<td rowspan="2">Ports and Networking</td>
<td><code>forward&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
<td>Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. </td>
<td>Port specifications can use these schemes:
<ul><li><code>tcp:&lt;portnum&gt;</code></li>
<li><code>local:&lt;UNIX domain socket name&gt;</code></li>
<li><code>dev:&lt;character device name&gt;</code></li>
<li><code>jdwp:&lt;pid&gt;</code></li></ul>
</td>
</tr>

<tr>
<td><code>ppp&nbsp;&lt;tty&gt;&nbsp;[parm]...</code></td>
<td>Run PPP over USB.
<ul>
<li><code>&lt;tty&gt;</code> &mdash; the tty for PPP stream. For example <code>dev:/dev/omap_csmi_ttyl</code>. </li>
<li><code>[parm]... </code> &mdash; zero or more PPP/PPPD options, such as <code>defaultroute</code>, <code>local</code>, <code>notty</code>, etc.</li></ul>

<p>Note that you should not automatically start a PPP connection. </p></td>
<td></td>
</tr>

<tr>
<td rowspan="3">Scripting</td>
<td><code>get-serialno</code></td>
<td>Prints the adb instance serial number string.</td>
<td rowspan="2">See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information. </td>
</tr>

<tr>
<td><code>get-state</code></td>
<td>Prints the adb state of an emulator/device instance.</td>
</td>
</tr>

<tr>
<td><code>wait-for-device</code></td>
<td>Blocks execution until the device is online &mdash; that is, until the instance state is <code>device</code>.</td>
<td>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:
<pre class="no-pretty-print">adb wait-for-device shell getprop</pre>

Note that this command does <em>not</em> 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 <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as

<pre class="no-pretty-print">adb wait-for-device install &lt;app&gt;.apk</pre>

would issue the <code>install</code> 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. </td>
</tr>



<tr>
<td rowspan="2">Server</td>
<td><code>start-server</code></td>
<td>Checks whether the adb server process is running and starts it, if not.</td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>kill-server</code></td>
<td>Terminates the adb server process.</td>
<td>&nbsp;</td>
</tr>



<tr>
<td rowspan="2">Shell</td>
<td><code>shell</code></td>
<td>Starts a remote shell in the target emulator/device instance.</td>
<td rowspan="2">See <a href="#shellcommands">Issuing Shell Commands</a> for more information. </td>
</tr>

<tr>
<td><code>shell&nbsp;[shellCommand]</code></td>
<td>Issues a shell command in the target emulator/device instance and then exits the remote shell.</td>
</tr>

</table>










<h2 id="devicestatus">Querying for Emulator/Device Instances</h2>

<p>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 <code>devices</code> command: </p>

  <pre class="no-pretty-print">adb devices</pre>

<p>In response, adb prints this status information for each instance:</p>

<ul>
  <li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its
    console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>.
    Here's an example serial number: <code>emulator-5554</code></li>
  <li>State &mdash; The connection state of the instance may be one of the following:
    <ul>
      <li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
      <li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not
        imply that the Android system is fully booted and operational, since the instance connects to adb
        while the system is still booting. However, after boot-up, this is the normal operational state of
        an emulator/device instance.</li>
      <li><code>no device</code> &mdash; there is no emulator/device connected.
    </ul>
  </li>
</ul>

<p>The output for each instance is formatted like this: </p>

  <pre class="no-pretty-print">[serialNumber] [state]</pre>

<p>Here's an example showing the <code>devices</code> command and its output:</p>

  <pre class="no-pretty-print">adb devices
List of devices attached
emulator-5554&nbsp;&nbsp;device
emulator-5556&nbsp;&nbsp;device
emulator-5558&nbsp;&nbsp;device</pre>






<h2 id="directingcommands">Directing Commands to a Specific Emulator/Device Instance</h2>

<p>If multiple emulator/device instances are running, you must specify a target instance
when issuing adb commands. To do so, use the <code>-s</code> option in the commands. The usage
for the <code>-s</code> option is:</p>

<pre class="no-pretty-print">adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>

<p>As shown, you specify the target instance for a command using its adb-assigned serial number.
You can use the <code>devices</code> command to obtain the serial numbers of running
emulator/device instances. For example: </p>

<pre class="no-pretty-print">adb -s emulator-5556 install helloWorld.apk</pre>

<p>Note that, if you issue a command without specifying a target emulator/device instance
while multiple devices are available, adb generates an error.

<p>If you have multiple devices available (hardware or emulated), but only one is an emulator,
simply use the {@code -e} option to send commands to the emulator. Likewise if there's multiple
devices but only one hardware device attached, use the {@code -d} option to send commands to
the hardware device.




<h2 id="move">Installing an Application</h2>
<p>You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the <code>install</code> command. With the command, you must specify the path to the .apk file that you want to install:</p>

<pre class="no-pretty-print">adb install &lt;path_to_apk&gt;</pre>

<p>For more information about how to create an .apk file that you can install on an emulator/device
instance, see <a href="{@docRoot}tools/building/index.html">Building and Running</a></p>

<p>Note that, if you are using the Eclipse IDE and have the ADT plugin installed, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, the ADT plugin handles the packaging and installation of the application for you. </p>






<h2 id="forwardports">Forwarding Ports</h2>

    <p>You can use the <code>forward</code> command to set up arbitrary port forwarding &mdash; forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:</p>
<pre class="no-pretty-print">adb forward tcp:6100 tcp:7100</pre>
    <p>You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:</p>
<pre class="no-pretty-print">adb forward tcp:6100 local:logd </pre>





<h2 id="copyfiles">Copying Files to or from an Emulator/Device Instance</h2>

<p>You can use the adb commands <code>pull</code> and <code>push</code> to copy files to
and from an emulator/device instance. Unlike the <code>install</code> command,
which only copies an APK file to a specific location, the <code>pull</code> and <code>push</code>
commands let you copy arbitrary directories and files to any location in an
emulator/device instance. </p>

<p>To copy a file or directory (and its sub-directories) <em>from</em> the emulator or device, use</p>
<pre class="no-pretty-print">adb pull &lt;remote&gt; &lt;local&gt;</pre>

<p>To copy a file or directory (and its sub-directories) <em>to</em> the emulator or device, use</p>
    <pre class="no-pretty-print">adb push &lt;local&gt; &lt;remote&gt;</pre>

<p>In the commands, <code>&lt;local&gt;</code> and <code>&lt;remote&gt;</code> refer to the
paths to the target files/directory on your development machine (local) and on the
emulator/device instance (remote). For example: </p>
<pre class="no-pretty-print">adb push foo.txt /sdcard/foo.txt</pre>









<h2 id="shellcommands">Issuing Shell Commands</h2>

<p>Adb provides a Unix shell that you can use to run a variety of commands on an emulator
or connected device. The command binaries are stored in the file system of the emulator or device,
at <code>/system/bin/...</code>

<p>Two of the most common command tools are <a href="#am">activity manager</a> ({@code am}) and
<a href="#pm">package manager</a> ({@code pm}).</p>

<p>You can use the <code>shell</code> command to issue commands, with or without entering
the adb remote shell on the emulator/device. To issue a single command without entering a
remote shell, use the <code>shell</code> command like this: </p>

  <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>

<p>Or enter a remote shell on an emulator/device like this:</p>

  <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>

<p>When you are ready to exit the remote shell, press CTRL+D or type
<code>exit</code>. </p>





<h3 id="am">Using activity manager (am)</h3>

<p>Within an adb shell, you can issue commands with the activity manager ({@code am}) tool to
perform various system actions, such as start an activity, force-stop a process,
broadcast an intent, modify the device screen properties, and more. While in a shell,
the syntax is:</p>
<pre class="no-pretty-print">
am &lt;command>
</pre>

<p>You can also issue an activity manager command directly from adb
without entering a remote shell. For example:</p>
<pre class="no-pretty-print">
adb shell am start -a android.intent.action.VIEW
</pre>


<p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
<table>
<tr>
  <th>Command</th>
  <th>Description</th>
</tr>

<tr>
<td><code>
start [options] &lt;INTENT>
</code></td>
<td>Start an {@link android.app.Activity} specified by {@code &lt;INTENT>}. <p>See the
<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
<p>Options are:
<ul>
    <li>{@code -D}: Enable debugging.
    <li>{@code -W}: Wait for launch to complete.
    <li>{@code --start-profiler &lt;FILE>}: Start profiler and send results to {@code &lt;FILE>}.
    <li>{@code -P &lt;FILE>}: Like <code>--start-profiler</code>,
        but profiling stops when the app goes idle.
    <li>{@code -R}: Repeat the activity launch {@code &lt;COUNT>} times.  Prior to each repeat,
        the top activity will be finished.
    <li>{@code -S}: Force stop the target app before starting the activity.
    <li>{@code --opengl-trace}: Enable tracing of OpenGL functions.
    <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
        specified, then run as the current user.
</ul>
</td>
</tr>

<tr>
<td><code>
startservice [options] &lt;INTENT>
</code></td>
<td>Start the {@link android.app.Service} specified by {@code &lt;INTENT>}. <p>See the
<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
<p>Options are:
<ul>
    <li>{@code --user &lt;USER_ID> | current}: Specify which user to run as; if not
        specified, then run as the current user.
</ul>
</td>
</tr>

<tr>
<td><code>
force-stop &lt;PACKAGE>
</code></td>
<td>Force stop everything associated with {@code &lt;PACKAGE>} (the app's package name).
</td>
</tr>

<tr>
<td><code>
kill  [options] &lt;PACKAGE>
</code></td>
<td> Kill all processes associated with {@code &lt;PACKAGE>}
  (the app's package name).  This command kills only
  processes that are safe to kill and that will not impact the user
  experience.
  <p>Options are:
  <ul>
      <li>{@code --user &lt;USER_ID> | all | current}: Specify user whose processes to kill;
        all users if not specified.
  </ul>
</td>
</tr>

<tr>
<td><code>
kill-all
</code></td>
<td>Kill all background processes.
</td>
</tr>

<tr>
<td><code>
broadcast [options] &lt;INTENT>
</code></td>
<td>Issue a broadcast intent. <p>See the
<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
<p>Options are:
<ul>
    <li>{@code [--user &lt;USER_ID> | all | current]}: Specify which user to send to; if not
        specified then send to all users.
</ul>
</td>
</tr>

<tr>
<td><code>
instrument [options] &lt;COMPONENT>
</code></td>
<td>Start monitoring with an {@link android.app.Instrumentation} instance.
  Typically the target {@code &lt;COMPONENT>}
  is the form {@code &lt;TEST_PACKAGE>/&lt;RUNNER_CLASS>}.  <p>Options are:
<ul>
    <li>{@code -r}: Print raw results (otherwise decode
        {@code &lt;REPORT_KEY_STREAMRESULT>}).  Use with
        {@code [-e perf true]} to generate raw output for performance measurements.

    <li>{@code -e &lt;NAME> &lt;VALUE>}: Set argument {@code &lt;NAME>} to {@code &lt;VALUE>}.
        For test runners a common form is {@code
        -e &lt;testrunner_flag> &lt;value>[,&lt;value>...]}.

    <li>{@code -p &lt;FILE>}: Write profiling data to {@code &lt;FILE>}.

    <li>{@code -w}: Wait for instrumentation to finish before returning.  Required for
        test runners.

    <li>{@code --no-window-animation}: Turn off window animations while running.
    <li>{@code --user &lt;USER_ID> | current}: Specify which user instrumentation runs in;
        current user if not specified.
</ul>

</td>
</tr>

<tr>
<td><code>
profile start &lt;PROCESS> &lt;FILE>
</code></td>
<td>Start profiler on {@code &lt;PROCESS>}, write results to {@code &lt;FILE>}.
</td>
</tr>

<tr>
<td><code>
profile stop &lt;PROCESS>
</code></td>
<td>Stop profiler on {@code &lt;PROCESS>}.
</td>
</tr>

<tr>
<td style="white-space:nowrap"><code>
dumpheap [options] &lt;PROCESS> &lt;FILE>
</code></td>
<td>Dump the heap of {@code &lt;PROCESS>}, write to {@code &lt;FILE>}. <p>Options are:
<ul>
    <li>{@code --user [&lt;USER_ID>|current]}: When supplying a process name,
        specify user of process to dump; uses current user if not specified.
    <li>{@code -n}: Dump native heap instead of managed heap.
</ul>
</td>
</tr>

<tr>
<td><code>
set-debug-app [options] &lt;PACKAGE>
</code></td>
<td>Set application {@code &lt;PACKAGE>} to debug.  <p>Options are:
<ul>
    <li>{@code -w}: Wait for debugger when application starts.
    <li>{@code --persistent}: Retain this value.
</ul>
</td>
</tr>

<tr>
<td><code>
clear-debug-app
</code></td>
<td>Clear the package previous set for debugging with {@code set-debug-app}.
</td>
</tr>

<tr>
<td><code>
monitor [options]
</code></td>
<td>Start monitoring for crashes or ANRs.  <p>Options are:
<ul>
    <li>{@code --gdb}: Start gdbserv on the given port at crash/ANR.
</ul>
</td>
</tr>

<tr>
<td><code>
screen-compat [on|off] &lt;PACKAGE>
</code></td>
<td>Control <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
compatibility</a> mode of {@code &lt;PACKAGE>}.</p>
</td>
</tr>

<tr>
<td><code>
display-size [reset|&lt;WxH>]
</code></td>
<td>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.
<p>Example:<br><code>am display-size 1280x800</code>
</td>
</tr>

<tr>
<td><code>
display-density &lt;dpi>
</code></td>
<td>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.
<p>Example:<br><code>am display-density 480</code>
</td>
</tr>

<tr>
<td><code>
to-uri &lt;INTENT>
</code></td>
<td>Print the given intent specification as a URI. <p>See the
<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
</td>
</tr>

<tr>
<td><code>
to-intent-uri &lt;INTENT>
</code></td>
<td>Print the given intent specification as an {@code intent:} URI. <p>See the
<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
</td>
</tr>
</table>





<h4 id="IntentSpec">
  <a href="" class="expandable" onclick="toggleExpandable(this,'.intents');
return false">Specification for &lt;INTENT> arguments</a></h4>

<div class="intents" style="display:none">

<p>For activity manager commands that take a {@code &lt;INTENT>} argument, you can
specify the intent with the following options:</p>

<dl>
  <dt>{@code -a &lt;ACTION>}</dt>
      <dd>Specify the intent action, such as "android.intent.action.VIEW".
      You can declare this only once.

  <dt>{@code -d &lt;DATA_URI>}</dt>
      <dd>Specify the intent data URI, such as "content://contacts/people/1".
      You can declare this only once.

  <dt>{@code -t &lt;MIME_TYPE>}</dt>
      <dd>Specify the intent MIME type, such as "image/png".
      You can declare this only once.

  <dt>{@code -c &lt;CATEGORY>}</dt>
      <dd>Specify an intent category, such as "android.intent.category.APP_CONTACTS".

  <dt>{@code -n &lt;COMPONENT>}</dt>
      <dd>Specify the component name with package name prefix to create an explicit intent, such
      as "com.example.app/.ExampleActivity".

  <dt>{@code -f &lt;FLAGS>}</dt>
      <dd>Add flags to the intent, as supported by {@link
        android.content.Intent#setFlags setFlags()}.

  <dt>{@code --esn &lt;EXTRA_KEY>}</dt>
      <dd>Add a null extra. This option is not supported for URI intents.

  <dt>{@code -e|--es &lt;EXTRA_KEY> &lt;EXTRA_STRING_VALUE>}</dt>
      <dd>Add string data as a key-value pair.

  <dt>{@code --ez &lt;EXTRA_KEY> &lt;EXTRA_BOOLEAN_VALUE>}</dt>
      <dd>Add boolean data as a key-value pair.

  <dt>{@code --ei &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>}</dt>
      <dd>Add integer data as a key-value pair.

  <dt>{@code --el &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>}</dt>
      <dd>Add long data as a key-value pair.

  <dt>{@code --ef &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>}</dt>
      <dd>Add float data as a key-value pair.

  <dt>{@code --eu &lt;EXTRA_KEY> &lt;EXTRA_URI_VALUE>}</dt>
      <dd>Add URI data as a key-value pair.

  <dt>{@code --ecn &lt;EXTRA_KEY> &lt;EXTRA_COMPONENT_NAME_VALUE>}</dt>
      <dd>Add a component name, which is converted and passed as
      a {@link android.content.ComponentName} object.

  <dt>{@code --eia &lt;EXTRA_KEY> &lt;EXTRA_INT_VALUE>[,&lt;EXTRA_INT_VALUE...]}</dt>
      <dd>Add an array of integers.

  <dt>{@code --ela &lt;EXTRA_KEY> &lt;EXTRA_LONG_VALUE>[,&lt;EXTRA_LONG_VALUE...]}</dt>
      <dd>Add an array of longs.

  <dt>{@code --efa &lt;EXTRA_KEY> &lt;EXTRA_FLOAT_VALUE>[,&lt;EXTRA_FLOAT_VALUE...]}</dt>
      <dd>Add an array of floats.

  <dt>{@code --grant-read-uri-permission}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}.

  <dt>{@code --grant-write-uri-permission}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}.

  <dt>{@code --debug-log-resolution}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_DEBUG_LOG_RESOLUTION}.

  <dt>{@code --exclude-stopped-packages}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES}.

  <dt>{@code --include-stopped-packages}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES}.

  <dt>{@code --activity-brought-to-front}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT}.

  <dt>{@code --activity-clear-top}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.

  <dt>{@code --activity-clear-when-task-reset}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}.

  <dt>{@code --activity-exclude-from-recents}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS}.

  <dt>{@code --activity-launched-from-history}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY}.

  <dt>{@code --activity-multiple-task}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.

  <dt>{@code --activity-no-animation}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_ANIMATION}.

  <dt>{@code --activity-no-history}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_HISTORY}.

  <dt>{@code --activity-no-user-action}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_USER_ACTION}.

  <dt>{@code --activity-previous-is-top}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP}.

  <dt>{@code --activity-reorder-to-front}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_REORDER_TO_FRONT}.

  <dt>{@code --activity-reset-task-if-needed}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED}.

  <dt>{@code --activity-single-top}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}.

  <dt>{@code --activity-clear-task}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK}.

  <dt>{@code --activity-task-on-home}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_TASK_ON_HOME}.

  <dt>{@code --receiver-registered-only}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REGISTERED_ONLY}.

  <dt>{@code --receiver-replace-pending}</dt>
      <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REPLACE_PENDING}.

  <dt>{@code --selector}</dt>
      <dd>Requires the use of {@code -d} and {@code -t} options to set the intent data and type.

  <dt>{@code &lt;URI> &lt;COMPONENT> &lt;PACKAGE>}</dt>
      <dd>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.

</dl>
</div><!-- end 'intents' -->
<script>
  $(window).hashchange( function(){
    if ((location.hash == "#IntentSpec") && !($("#IntentSpec a").hasClass("expanded"))) {
      $("#IntentSpec a").click();
    }
  });
</script>



<h3 id="pm">Using package manager (pm)</h3>

<p>Within an adb shell, you can issue commands with the package manager ({@code pm}) tool to
perform actions and queries on application packages installed on the device. While in a shell,
the syntax is:</p>
<pre class="no-pretty-print">
pm &lt;command>
</pre>

<p>You can also issue a package manager command directly from adb
without entering a remote shell. For example:</p>
<pre class="no-pretty-print">
adb shell pm uninstall com.example.MyApp
</pre>

<p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
<table>
<tr>
  <th>Command</th>
  <th>Description</th>
</tr>

<tr>
<td><code>
list packages [options] &lt;FILTER>
</code></td>
<td>Prints all packages, optionally only
  those whose package name contains the text in {@code &lt;FILTER>}.  <p>Options:
<ul>
    <li>{@code -f}: See their associated file.
    <li>{@code -d}: Filter to only show disabled packages.
    <li>{@code -e}: Filter to only show enabled packages.
    <li>{@code -s}: Filter to only show system packages.
    <li>{@code -3}: Filter to only show third party packages.
    <li>{@code -i}: See the installer for the packages.
    <li>{@code -u}: Also include uninstalled packages.
    <li>{@code --user &lt;USER_ID>}: The user space to query.
</ul>
</td>
</tr>

<tr>
<td><code>
list permission-groups
</code></td>
<td>Prints all known permission groups.
</td>
</tr>

<tr>
<td><code>
list permissions [options] &lt;GROUP>
</code></td>
<td>Prints all known permissions, optionally only
  those in {@code &lt;GROUP>}.  <p>Options:
<ul>
    <li>{@code -g}: Organize by group.
    <li>{@code -f}: Print all information.
    <li>{@code -s}: Short summary.
    <li>{@code -d}: Only list dangerous permissions.
    <li>{@code -u}: List only the permissions users will see.
</ul>
</td>
</tr>

<tr>
<td><code>
list instrumentation
</code></td>
<td>List all test packages.  <p>Options:
  <ul>
    <li>{@code -f}: List the APK file for the test package.
    <li>{@code &lt;TARGET_PACKAGE>}: List test packages for only this app.
  </ul>
</td>
</tr>

<tr>
<td><code>
list features
</code></td>
<td>Prints all features of the system.
</td>
</tr>

<tr>
<td><code>
list libraries
</code></td>
<td>Prints all the libraries supported by the current device.
</td>
</tr>

<tr>
<td><code>
list users
</code></td>
<td>Prints all users on the system.
</td>
</tr>

<tr>
<td><code>
path &lt;PACKAGE>
</code></td>
<td>Print the path to the APK of the given {@code &lt;PACKAGE>}.
</td>
</tr>

<tr>
<td><code>
install [options]  &lt;PATH>
</code></td>
<td>Installs a package (specified by {@code &lt;PATH>}) to the system.  <p>Options:
  <ul>
    <li>{@code -l}: Install the package with forward lock.
    <li>{@code -r}: Reinstall an exisiting app, keeping its data.
    <li>{@code -t}: Allow test APKs to be installed.
    <li>{@code -i &lt;INSTALLER_PACKAGE_NAME>}: Specify the installer package name.
    <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
    <li>{@code -f}: Install package on the internal system memory.
    <li>{@code -d}: Allow version code downgrade.
  </ul>
</td>
</tr>

<tr>
<td><code>
uninstall [options] &lt;PACKAGE>
</code></td>
<td>Removes a package from the system. <p>Options:
  <ul>
    <li>{@code -k}: Keep the data and cache directories around after package removal.
  </ul>
</td>
</tr>

<tr>
<td><code>
clear &lt;PACKAGE>
</code></td>
<td>Deletes all data associated with a package.
</td>
</tr>

<tr>
<td><code>
enable &lt;PACKAGE_OR_COMPONENT>
</code></td>
<td>Enable the given package or component (written as "package/class").
</td>
</tr>

<tr>
<td><code>
disable &lt;PACKAGE_OR_COMPONENT>
</code></td>
<td>Disable the given package or component (written as "package/class").
</td>
</tr>

<tr>
<td style="white-space:nowrap"><code>
disable-user [options] &lt;PACKAGE_OR_COMPONENT>
</code></td>
<td><p>Options:
  <ul>
    <li>{@code --user &lt;USER_ID>}: The user to disable.
  </ul>
</td>
</tr>

<tr>
<td><code>
grant &lt;PACKAGE_PERMISSION>
</code></td>
<td>Grant permissions
  to applications.  Only optional permissions the application has
  declared can be granted.
</td>
</tr>

<tr>
<td><code>
revoke &lt;PACKAGE_PERMISSION>
</code></td>
<td>Revoke permissions
  to applications.  Only optional permissions the application has
  declared can be revoked.
</td>
</tr>

<tr>
<td><code>
set-install-location &lt;LOCATION>
</code></td>
<td>Changes the default install location. Location values:
<ul>
    <li>{@code 0}: Auto&mdash;Let system decide the best location.
    <li>{@code 1}: Internal&mdash;install on internal device storage.
    <li>{@code 2}: External&mdash;install on external media.
</ul>
<p class="note"><strong>Note:</strong> This is only intended for debugging; using this can cause
  applications to break and other undesireable behavior.</p>
</td>
</tr>

<tr>
<td><code>
get-install-location
</code></td>
<td>Returns the current install location. Return values:
<ul>
  <li>{@code 0 [auto]}: Lets system decide the best location
  <li>{@code 1 [internal]}: Installs on internal device storage
  <li>{@code 2 [external]}: Installs on external media
</ul>
</td>
</tr>

<tr>
<td><code>
set-permission-enforced &lt;PERMISSION> [true|false]
</code></td>
<td>Specifies whether the given permission should be enforced.
</td>
</tr>

<tr>
<td><code>
trim-caches &lt;DESIRED_FREE_SPACE>
</code></td>
<td>Trim cache files to reach the given free space.
</td>
</tr>

<tr>
<td><code>
create-user &lt;USER_NAME>
</code></td>
<td>Create a new user with the given {@code &lt;USER_NAME>},
  printing the new user identifier of the user.
</td>
</tr>

<tr>
<td><code>
remove-user &lt;USER_ID>
</code></td>
<td>Remove the user with the given {@code &lt;USER_IDENTIFIER>},
  deleting all data associated with that user
</td>
</tr>

<tr>
<td><code>
get-max-users
</code></td>
<td>Prints the maximum number of users supported by the device.
</td>
</tr>

</table>







<h3 id="sqlite">Examining sqlite3 databases from a remote shell</h3>

<p>From an adb remote shell, you can use the
<a href="http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to
manage SQLite databases created by Android applications. The
<code>sqlite3</code> tool includes many useful commands, such as
<code>.dump</code> to print out the contents of a table and
<code>.schema</code> to print the SQL CREATE statement for an existing table.
The tool also gives you the ability to execute SQLite commands on the fly.</p>

<p>To use <code>sqlite3</code>, enter a remote shell on the emulator instance, as described above,
then invoke the tool using the <code>sqlite3</code> command. Optionally, when invoking
<code>sqlite3</code> you can specify the full path to the database you want to explore.
Emulator/device instances store SQLite3 databases in the folder
<code><span chatdir="1"><span chatindex="259474B4B070F261">/data/data/<em>&lt;package_name&gt;</em>/databases</span></span>/</code>. </p>

<p>Here's an example: </p>

<pre class="no-pretty-print">adb -s emulator-5554 shell
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter &quot;.help&quot; for instructions
<em>.... enter commands, then quit...</em>
sqlite&gt; .exit </pre>

<p>Once you've invoked <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the
shell. To exit and return to the adb remote shell, use <code>exit</code> or <code>CTRL+D</code>.




<h3 id="screenrecord">Recording a device screen</h3>

<p>The {@code screenrecord} command is a shell utility for recording the display of devices
  running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4
  file, which you can then download and use as part of a video presentation. This utility is useful
  for developers who want to create promotional or training videos without using a separate
  recording device.</p>

<p>To use the {@code screenrecord} from the command line, type the following:

<pre>
$ adb shell screenrecord /sdcard/demo.mp4
</pre>

<p>Stop the screen recording by pressing Ctrl-C, otherwise the recording stops automatically
at three minutes or the time limit set by {@code --time-limit}.</p>

<p>Here's an example recording session, using the adb shell to record the video and the
{@code pull} command to download the file from the device:<p>

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

<p>The {@code screenrecord} utility can record at any supported resolution and bit rate you
  request, while retaining the aspect ratio of the device display. The utility records at the native
  display resolution and orientation by default, with a maximum length of three minutes.</p>

<p>There are some known limitations of the {@code screenrecord} utility that you should be aware
  of when using it:</p>

<ul>
  <li>Some devices may not be able to record at their native display resolution.
    If you encounter problems with screen recording, try using a lower screen resolution.</li>
  <li>Rotation of the screen during recording is not supported. If the screen does rotate during
    recording, some of the screen is cut off in the recording.</li>
  <li>Audio is not recorded with the video file.</li>
</ul>


<p class="table-caption"><strong>Table 4.</strong> {@code screenrecord} options</p>

<table>
  <tr>
    <th>Options</th>
    <th>Description</th>
  </tr>

  <tr>
    <td><code>--help</code>
    </td>
    <td>Displays a usage summary.</td>
  </tr>

  <tr>
    <td style="white-space:nowrap">
      <code>--size &lt;WIDTHxHEIGHT&gt;</code>
    </td>
    <td>Sets the video size, for example: {@code 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.</td>
  </tr>

  <tr>
    <td><code>--bit-rate &lt;RATE&gt;</code></td>
    <td>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:
      <pre>screenrecord --bit-rate 6000000 &#47;sdcard&#47;demo.mp4</pre>
      </td>
  </tr>

  <tr>
    <td><code>--time-limit &lt;TIME&gt;</code></td>
    <td>Sets the maximum recording time, in seconds. The default and maximum value is 180
      (3 minutes).</td>
  </tr>

  <tr>
    <td><code>--rotate</code></td>
    <td>Rotates the output 90 degrees. This feature is experimental.</td>
  </tr>

  <tr>
    <td><code>--verbose</code></td>
    <td>Displays log information on command line screen. If you do not set this option,
      the utility does not display any information while running.</td>
  </tr>

</table>




<h3 id="monkey">UI/Application Exerciser Monkey</h3>

<p>The Monkey is a program that runs on your emulator or device and generates pseudo-random
streams of user events such as clicks, touches, or gestures, as well as a number of system-level
events.  You can use the Monkey to stress-test applications that you are developing,
in a random yet repeatable manner.</p>

<p>The simplest way to use the monkey is with the following command, which launches your
application and sends 500 pseudo-random events to it.</p>

<pre class="no-pretty-print">adb shell monkey -v -p your.package.name 500</pre>

<p>For more information about command options for Monkey, see the complete
<a href="{@docRoot}tools/help/monkey.html" title="monkey">UI/Application Exerciser Monkey</a> documentation page.</p>





<h3 id="othershellcommands">Other shell commands</h3>

<p>For a list of all the available shell programs, use the following command:</p>

<pre class="no-pretty-print">adb shell ls /system/bin</pre>

<p>Help is available for most of the commands. </p>

<p>Table 5 lists some of the more common adb shell commands.</p>

<p class="table-caption"><strong>Table 5.</strong> Some other adb shell commands</p>
<table>
<tr>
  <th>Shell Command</th>
  <th>Description</th>
  <th>Comments</th>
</tr>

<tr>
<td><code>dumpsys</code></td>
<td>Dumps system data to the screen.</td>
<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
(DDMS) tool offers integrated debug environment that you may find easier to use.</td>
</tr>

<tr>
<td><code>dumpstate</code></td>
<td>Dumps state to a file.</td>
</tr>

<tr>
<td><code>logcat&nbsp;[option]...&nbsp;[filter-spec]...</code></td>
<td>Enables system and app logging and prints output to the screen. </td>
</tr>

<tr>
<td><code>dmesg</code></td>
<td>Prints kernel debugging messages to the screen. </td>
</tr>

<tr>
<td><code>start</code></td>
<td>Starts (restarts) an emulator/device instance.</td>
<td>&nbsp;</td>
</tr>

<tr>
<td><code>stop</code></td>
<td>Stops execution of an emulator/device instance.</td>
<td>&nbsp;</td>
</tr>

</table>







<a name="stdout"></a>
<a name="usinglogcat"></a>
<a name="outputformat"></a>
<a name="filteringoutput"></a>
<a name="stdout"></a>
<a name="logcatoptions"></a>

<h2 id="logcat">Enabling logcat logging</h2>

<p>The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the <code>logcat</code> command.</p>

<p>You can use the <code>logcat</code> command to view and follow the contents of the system's log buffers. The general usage is:</p>

<pre class="no-pretty-print">[adb] logcat [option] ... [filter-spec] ...</pre>

<p>You can use the <code>logcat</code> command from your development computer  or from a remote adb shell in an emulator/device instance. To view log output in your development computer, you use</p>

<pre class="no-pretty-print">adb logcat</pre>

<p>and from a remote adb shell you use</p>

<pre class="no-pretty-print">logcat</pre>

<p>See <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a> for complete information about logcat commend options and filter specifications.</p>





<h2 id="stopping">Stopping the adb server</h2>

<p>In some cases, you might need to terminate the adb server process and then restart it. For example, if adb does not respond to a command, you can terminate the server and restart it and that may resolve the problem. </p>

<p>To stop the adb server, use the <code>kill-server</code> command.
You can then restart the server by issuing any other adb command. </p>


<h2 id="wireless">Wireless usage</h2>

<p>
adb is usually used over USB.  However, it is also possible to use over
Wi-Fi, as described here.
</p>

<ol>

<li>
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.
</li>

<li>
Connect the device with USB cable to host.
</li>

<li>
Make sure adb is running in USB mode on host.
<pre>
$ adb usb
restarting in USB mode
</pre>
</li>

<li>
Connect to the device over USB.
<pre>
$ adb devices
List of devices attached
######## device
</pre>
</li>

<li>
Restart host adb in tcpip mode.
<pre>
$ adb tcpip 5555
restarting in TCP mode port: 5555
</pre>
</li>

<li>
Find out the IP address of the Android device:
Settings -> About tablet -> Status -> IP address.
Remember the IP address, of the form <code>#.#.#.#</code>.
</li>

<li>
Connect adb host to device:
<pre>
$ adb connect #.#.#.#
connected to #.#.#.#:5555
</pre>
</li>

<li>
Remove USB cable from device, and confirm you can still access device:
<pre>
$ adb devices
List of devices attached
#.#.#.#:5555 device
</pre>

</ol>

<p>
You're now good to go!
</p>

<p>
If the adb connection is ever lost:
</p>

<ol>

<li>
Make sure that your host is still connected to the same Wi-Fi network your Android device is.
</li>

<li>
Reconnect by executing the "adb connect" step again.
</li>

<li>
Or if that doesn't work, reset your adb host:
<pre>
adb kill-server
</pre>
and then start over from the beginning.
</li>

</ol>
