\subsection{Use of ADB}
\begin{frame}
  \frametitle{ADB commands: Basics}
  \begin{description}
  \item[start-server] Starts the ADB server on the host
  \item[kill-server] Kills the ADB server on the host
  \item[devices] Lists accessible devices
  \item[connect] Connects to a remote ADBd using TCP port
    5555 by default
  \item[disconnect] Disconnects from a connected device
  \item[help] Prints available commands with help information
  \item[version] Prints the version number
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{ADB commands: Files and applications}
  \begin{description}
  \item[push] Copies a local file to the device
  \item[pull] Copies a remote file from the device
  \item[sync] There are three cases here:
    \begin{itemize}
    \item If no argument is passed, copies the local directories
      \code{system} and \code{data} if they differ from \code{/system}
      and \code{/data} on the target.
    \item If either \code{system} or \code{data} is passed, syncs this
      directory with the associated partition on the device
    \item Else, syncs the given folder
    \end{itemize}
  \item[install] Installs the given Android package (apk) on the device
  \item[uninstall] Uninstalls the given package name from the device
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{ADB commands: Debugging}
  \begin{description}
  \item[logcat] Prints the device logs. You can filter either on
    the source of the logs or their on their priority level
  \item[shell] Runs a remote shell with a command line interface. If an
    argument is given, runs it as a command and prints out the result
  \item[bugreport] Gets all the relevant information to generate a
    bug report from the device: logs, internal state of the device, etc.
  \item[jdwp] Lists the processes that support the JDWP protocol
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{ADB commands: Scripting 1/2}
  \begin{description}
  \item[wait-for-device] Blocks until the device gets connected to
    ADB. You can also add additional commands to
    be run when the device becomes available.
  \item[get-state] Prints the current state of the device,
    \code{offline}, \code{bootloader} or \code{device}
  \item[get-serialno] Prints the serial number of the device
  \item[remount] Remounts the \code{/system} partition on the device
    in read/write mode
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{ADB commands: Scripting 2/2}
  \begin{description}
  \item[reboot] Reboots the device. \code{bootloader} and
    \code{recovery} arguments are available to select the operation
    mode you want to reboot to.
  \item[reboot-bootloader] Reboots the device into the bootloader
  \item[root] Restarts ADBd with root permissions on the device
    \begin{itemize}
    \item Useful if the \code{ro.secure} property is set to \code{1}
      to force ADB into user mode. But \code{ro.debuggable} has to
      be set to \code{1} to allow to restart ADB as root
    \end{itemize}
  \item[usb] Restarts ADBd listening on USB
  \item[tcpip] Restarts ADBd listening on TCP on the given port
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{ADB commands: Easter eggs}
  \begin{description}
  \item[lolcat] Alias to \code{adb logcat}
  \item[hell] Equivalent to \code{adb shell}, with a different
    color scheme
  \end{description}
\end{frame}
