Sunday, February 24, 2013

ADB: All Commands and Options



ADB stands for "Android Debug Bridge". It comes with the android 2.0 sdk and can be run from the windows command prompt or a mac/linux terminal.

In order to run ADB from your machine, you will need to set up the following in your Droid "Settings".

Settings -> Application Settings -> Developement
Then check all of the boxes. Really, you only need the "USB Debugging" box checked, but I checked em all cause I'm cool like that.​


Once you have ADB and have your Droid set for developement, you can plud your Droid into your machine with the USB cable supplied with the device.

On a Mac or Linux machine, you will have to "cd" to the "Tools" directory, under where ever you put the the "android-sdk-(mac or linux)" folder.

EX. On a mac you would do the following:

CODE:cd /Users/[I]yourusername[/I]/android-sdk-mac/tools


(Its prettty much the same on a PC, but there are .bat files to run ADB for you in the "tools" folder)

Now that you can start adb here is how you can use it. I pulled the following from my terminal:

Android Debug Bridge version 1.0.25

 -d                            - directs command to the only connected USB device
                                 returns an error if more than one USB device is present.
 -e                            - directs command to the only running emulator.
                                 returns an error if more than one emulator is running.
 -s <serial number>            - directs command to the USB device or emulator with
                                 the given serial number. Overrides ANDROID_SERIAL
                                 envivornment variable.
 -p <product name or path>     - simple product name like 'sooner', or
                                 a relative/absolute path to a product
                                 out directory like 'out/target/product/sooner'.
                                 If -p is not specified, the ANDROID_PRODUCT_OUT
                                 environment variable is used, which must
                                 be an absolute path.
 devices                       - list all connected devices
 connect <host>:<port>         - connect to a device via TCP/IP 
 disconnect <host>:<port>      - disconnect from a TCP/IP device

device commands:
  adb push <local> <remote>    - copy file/dir to device
  adb pull <remote> <local>    - copy file/dir from device
  adb sync [ <directory> ]     - copy host->device only if changed
                                 (see 'adb help all')
  adb shell                    - run remote shell interactively
  adb shell <command>          - run remote shell command
  adb emu <command>            - run emulator console command
  adb logcat [ <filter-spec> ] - View device log
  adb forward <local> <remote> - forward socket connections
                                 forward specs are one of: 
                                   tcp:<port>
                                   localabstract:<unix domain socket name>
                                   localreserved:<unix domain socket name>
                                   localfilesystem:<unix domain socket name>
                                   dev:<character device name>
                                   jdwp:<process pid> (remote only)
  adb jdwp                     - list PIDs of processes hosting a JDWP transport
  adb install [-l] [-r] <file> - push this package file to the device and install it
                                 ('-l' means forward-lock the app)
                                 ('-r' means reinstall the app, keeping its data)
  adb uninstall [-k] <package> - remove this app package from the device
                                 ('-k' means keep the data and cache directories)
  adb bugreport                - return all information from the device
                                 that should be included in a bug report.

  adb help                     - show this help message
  adb version                  - show version num

DATAOPTS:
 (no option)                   - don't touch the data partition
  -w                           - wipe the data partition
  -d                           - flash the data partition

scripting:
  adb wait-for-device          - block until device is online
  adb start-server             - ensure that there is a server running
  adb kill-server              - kill the server if it is running
  adb get-state                - prints: offline | bootloader | device
  adb get-serialno             - prints: <serial-number>
  adb status-window            - continuously print device status for a specified device
  adb remount                  - remounts the /system partition on the device read-write
  adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
  adb root                     - restarts the adbd daemon with root permissions
  adb usb                      - restarts the adbd daemon listening on USB  
  adb tcpip <port>             - restarts the adbd daemon listening on TCP on the specified port

networking:
  adb ppp <tty> [parameters]   - Run PPP over USB.
 Note: you should not automatically start a PPP connection.
 <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
 [parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ <directory> ]
  <localdir> can be interpreted in several ways:

  - If <directory> is not specified, both /system and /data partitions will be updated.

  - If it is "system" or "data", only the corresponding partition
    is updated.


From the above, you should be able to see that you can send adb commands from your machine to your Droid using the following:

CODE:adb -s [yourdeviceserialnumberhere] shell


The above will start an interactive shell from your machine, but running on your device. So if you "cd" to a directory, it will be on your device. Use "ls" or "ls -l" to see what is in the directory that your are currently in. NOTE: Runing the adb shell directly has gotten me nowhere as far as rooting the device, but its a good place to start learning.

Now for the fun part!! You can "pull" some data from your device using:

CODE:adb -s [yourdeviceserialnumberhere] pull /system /somedirectoryonyourmachine


This will try and write all the files and folders from the "/system" directory on your Droid, to wherever you decide you want it on you machine.

I did the "pull" on a mac and I was able to get about 140mb of the data from the following directories on my Droid:

/dev
/proc
/sys
/system​

It both as an admin and a super user on the mac and I got about the same results. My Droid was in the regular boot mode. I have not tried booting into the restore or safe modes and tried a "pull" ... yet.

1 comment: