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".[INDENT]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.[/INDENT]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.[INDENT]EX. On a mac you would do the following:
cd /Users/[I]yourusername[/I]/android-sdk-mac/tools[/INDENT](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:adb -s [yourdeviceserialnumberhere] shellThe 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:
adb -s [yourdeviceserialnumberhere] pull /system /somedirectoryonyourmachineThis 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:[INDENT]/dev
/proc
/sys
/system[/INDENT]I did 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.
One last thing. I noticed the "adb root" command too, but I get an error back saying that you can not root on a production build of android. Perhaps there is a way to fool adb into thinking you have a developer device/build, maybe by altering the "build.properties" file. I haven't looked into that, nor do I really know if it would work. I'm really not an android developer, but if anyone out there is, maybe they could tell us what lets the adb shell know that a device is a production build, rather than a development build.
I better get going now. Have fun hacking your Droid!!"






















