adb help - List a comands
Adb Server
adb kill-serveradb start-server
Adb Reboot
adb rebootadb reboot recoveryadb reboot-bootloaderadb root//restarts adb with root permissions
Shell
adb shell// Open or run commands in a terminal on the host Android device.
Devices
adb usbdb devices//show devices attachedadb devices -l//devices (product/model)adb connect ip_address_of_device
Get device android version
adb shell getprop ro.build.version.releaseadb -s <device_id> shell// get shell particular device
LogCat
adb logcatadb logcat -c// clear // The parameter -c will clear the current logs on the device.adb logcat -d > [path_to_file]// Save the logcat output to a file on the local system.adb bugreport > [path_to_file]// Will dump the whole device information like dumpstate, dumpsys and logcat output.
Files
adb push [source] [destination]// Copy files from your computer to your phone.adb pull [device file location] [local file location]// Copy files from your phone to your computer.
App install
adb -e install path/to/app.apk-d - directs command to the only connected USB device... -e - directs command to the only running emulator... -s <serial number> ... -p <product name or path> ...The flag you decide to use has to come before the actual adb command:
adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X install -r com.myAppPackage// Install the given app on all connected devices.
Uninstalling app from device
-
adb uninstall com.myAppPackage -
adb uninstall <app .apk name> -
adb uninstall -k <app .apk name> -> ""Uninstall .apk withour deleting data"" -
adb shell pm uninstall com.example.MyApp -
adb shell pm clear [package]// Deletes all data associated with a package. -
adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X uninstall com.myAppPackage//Uninstall the given app from all connected devices
Update app
adb install -r yourApp.apk// -r means re-install the app and keep its data on the device.adb install –k <.apk file path on computer>
Home button
adb shell am start -W -c android.intent.category.HOME -a android.intent.action.MAIN
Activity Manager
-
adb shell am start -a android.intent.action.VIEW -
adb shell am broadcast -a 'my_action' -
adb shell am start -a android.intent.action.CALL -d tel:+972527300294// Make a call
// Open send sms screen with phone number and the message:
adb shell am start -a android.intent.action.SENDTO -d sms:+972527300294 --es sms_body ""Test --ez exit_on_sent false
// Reset permissions
adb shell pm reset-permissions -p your.app.packageadb shell pm grant [packageName] [ Permission]// Grant a permission to an app.adb shell pm revoke [packageName] [ Permission]// Revoke a permission from an app.
// Emulate device
adb shell wm size 2048x1536adb shell wm density 288// And reset to defaultadb shell wm size resetadb shell wm density reset
Print text
adb shell input text 'Wow, it so cool feature'
Screenshot
adb shell screencap -p /sdcard/screenshot.png$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.pngadb shell screenrecord /sdcard/NotAbleToLogin.mp4$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4Key event
adb shell input keyevent 3 // Home btn adb shell input keyevent 4 // Back btn adb shell input keyevent 5 // Call adb shell input keyevent 6 // End call adb shell input keyevent 26 // Turn Android device ON and OFF. It will toggle device to on/off status. adb shell input keyevent 27 // Camera adb shell input keyevent 64 // Open browser adb shell input keyevent 66 // Enter adb shell input keyevent 67 // Delete (backspace) adb shell input keyevent 207 // Contacts adb shell input keyevent 220 / 221 // Brightness down/up adb shell input keyevent 277 / 278 /279 // Cut/Copy/Paste0 --> ""KEYCODE_0"" 1 --> ""KEYCODE_SOFT_LEFT"" 2 --> ""KEYCODE_SOFT_RIGHT"" 3 --> ""KEYCODE_HOME"" 4 --> ""KEYCODE_BACK"" 5 --> ""KEYCODE_CALL"" 6 --> ""KEYCODE_ENDCALL"" 7 --> ""KEYCODE_0"" 8 --> ""KEYCODE_1"" 9 --> ""KEYCODE_2"" 10 --> ""KEYCODE_3"" 11 --> ""KEYCODE_4"" 12 --> ""KEYCODE_5"" 13 --> ""KEYCODE_6"" 14 --> ""KEYCODE_7"" 15 --> ""KEYCODE_8"" 16 --> ""KEYCODE_9"" 17 --> ""KEYCODE_STAR"" 18 --> ""KEYCODE_POUND"" 19 --> ""KEYCODE_DPAD_UP"" 20 --> ""KEYCODE_DPAD_DOWN"" 21 --> ""KEYCODE_DPAD_LEFT"" 22 --> ""KEYCODE_DPAD_RIGHT"" 23 --> ""KEYCODE_DPAD_CENTER"" 24 --> ""KEYCODE_VOLUME_UP"" 25 --> ""KEYCODE_VOLUME_DOWN"" 26 --> ""KEYCODE_POWER"" 27 --> ""KEYCODE_CAMERA"" 28 --> ""KEYCODE_CLEAR"" 29 --> ""KEYCODE_A"" 30 --> ""KEYCODE_B"" 31 --> ""KEYCODE_C"" 32 --> ""KEYCODE_D"" 33 --> ""KEYCODE_E"" 34 --> ""KEYCODE_F"" 35 --> ""KEYCODE_G"" 36 --> ""KEYCODE_H"" 37 --> ""KEYCODE_I"" 38 --> ""KEYCODE_J"" 39 --> ""KEYCODE_K"" 40 --> ""KEYCODE_L"" 41 --> ""KEYCODE_M"" 42 --> ""KEYCODE_N"" 43 --> ""KEYCODE_O"" 44 --> ""KEYCODE_P"" 45 --> ""KEYCODE_Q"" 46 --> ""KEYCODE_R"" 47 --> ""KEYCODE_S"" 48 --> ""KEYCODE_T"" 49 --> ""KEYCODE_U"" 50 --> ""KEYCODE_V"" 51 --> ""KEYCODE_W"" 52 --> ""KEYCODE_X"" 53 --> ""KEYCODE_Y"" 54 --> ""KEYCODE_Z"" 55 --> ""KEYCODE_COMMA"" 56 --> ""KEYCODE_PERIOD"" 57 --> ""KEYCODE_ALT_LEFT"" 58 --> ""KEYCODE_ALT_RIGHT"" 59 --> ""KEYCODE_SHIFT_LEFT"" 60 --> ""KEYCODE_SHIFT_RIGHT"" 61 --> ""KEYCODE_TAB"" 62 --> ""KEYCODE_SPACE"" 63 --> ""KEYCODE_SYM"" 64 --> ""KEYCODE_EXPLORER"" 65 --> ""KEYCODE_ENVELOPE"" 66 --> ""KEYCODE_ENTER"" 67 --> ""KEYCODE_DEL"" 68 --> ""KEYCODE_GRAVE"" 69 --> ""KEYCODE_MINUS"" 70 --> ""KEYCODE_EQUALS"" 71 --> ""KEYCODE_LEFT_BRACKET"" 72 --> ""KEYCODE_RIGHT_BRACKET"" 73 --> ""KEYCODE_BACKSLASH"" 74 --> ""KEYCODE_SEMICOLON"" 75 --> ""KEYCODE_APOSTROPHE"" 76 --> ""KEYCODE_SLASH"" 77 --> ""KEYCODE_AT"" 78 --> ""KEYCODE_NUM"" 79 --> ""KEYCODE_HEADSETHOOK"" 80 --> ""KEYCODE_FOCUS"" 81 --> ""KEYCODE_PLUS"" 82 --> ""KEYCODE_MENU"" 83 --> ""KEYCODE_NOTIFICATION"" 84 --> ""KEYCODE_SEARCH"" 85 --> ""KEYCODE_MEDIA_PLAY_PAUSE"" 86 --> ""KEYCODE_MEDIA_STOP"" 87 --> ""KEYCODE_MEDIA_NEXT"" 88 --> ""KEYCODE_MEDIA_PREVIOUS"" 89 --> ""KEYCODE_MEDIA_REWIND"" 90 --> ""KEYCODE_MEDIA_FAST_FORWARD"" 91 --> ""KEYCODE_MUTE"" 92 --> ""KEYCODE_PAGE_UP"" 93 --> ""KEYCODE_PAGE_DOWN"" 94 --> ""KEYCODE_PICTSYMBOLS"" ... 122 --> ""KEYCODE_MOVE_HOME"" 123 --> ""KEYCODE_MOVE_END""
ShPref
// replace org.example.app with your application id
// Add a value to default shared preferences.
db shell 'am broadcast -a org.example.app.sp.PUT --es key key_name --es value ""hello world!""'
// Remove a value to default shared preferences.
adb shell 'am broadcast -a org.example.app.sp.REMOVE --es key key_name'
// Clear all default shared preferences.
adb shell 'am broadcast -a org.example.app.sp.CLEAR --es key key_name'
// It's also possible to specify shared preferences file.
adb shell 'am broadcast -a org.example.app.sp.PUT --es name Game --es key level --ei value 10'
Data types
adb shell 'am broadcast -a org.example.app.sp.PUT --es key string --es value ""hello world!""'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key boolean --ez value true'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key float --ef value 3.14159'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key int --ei value 2015'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key long --el value 9223372036854775807'
Restart application process after making changes
adb shell 'am broadcast -a org.example.app.sp.CLEAR --ez restart true'
Monkey
adb shell monkey -p com.myAppPackage -v 10000 -s 100// monkey tool is generating 10.000 random events on the real device
Paths
/data/data/<package>/databases (app databases)
/data/data/<package>/shared_prefs/ (shared preferences)
/data/app (apk installed by user)
/system/app (pre-installed APK files)
/mmt/asec (encrypted apps) (App2SD)
/mmt/emmc (internal SD Card)
/mmt/adcard (external/Internal SD Card)
/mmt/adcard/external_sd (external SD Card)
adb shell ls// list directory contentsadb shell ls -s// print size of each fileadb shell ls -R// list subdirectories recursively
Device onformation
adb get-statе// print device stateadb get-serialno// get the serial numberadb shell dumpsys iphonesybinfo// get the IMEIadb shell netstat// list TCP connectivityadb shell pwd// print current working directoryadb shell dumpsys battery// battery statusadb shell pm list features// list phone featuresadb shell service list// list all servicesadb shell dumpsys activity <package>/<activity>// activity infoadb shell ps// print process statusadb shell wm size// displays the current screen resolutiondumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'//print current app's opened activity
Package info
adb shell list packages// list package namesadb shell list packages -r// list package name + path to apksadb shell list packages -3// list third party package namesadb shell list packages -s// list only system packagesadb shell list packages -u// list package names + uninstalledadb shell dumpsys package packages// list info on all appsadb shell dump <name>// list info on one packageadb shell path <package>// path to the apk file
Configure Settings Commands
adb shell dumpsys battery set level <n>// change the level from 0 to 100adb shell dumpsys battery set status<n>// change the level to unknown, charging, discharging, not charging or fulladb shell dumpsys battery reset// reset the batteryadb shell dumpsys battery set usb <n>// change the status of USB connection. ON or OFFadb shell wm size WxH// sets the resolution to WxH
Device Related Commands
adb reboot-recovery// reboot device into recovery modeadb reboot fastboot// reboot device into recovery modeadb shell screencap -p ""/path/to/screenshot.png""// capture screenshotadb shell screenrecord ""/path/to/record.mp4""// record device screenadb backup -apk -all -f backup.ab// backup settings and appsadb backup -apk -shared -all -f backup.ab// backup settings, apps and shared storageadb backup -apk -nosystem -all -f backup.ab// backup only non-system appsadb restore backup.ab// restore a previous backupadb shell am start|startservice|broadcast <INTENT>[<COMPONENT>]-a <ACTION> e.g. android.intent.action.VIEW -c <CATEGORY> e.g. android.intent.category.LAUNCHER (start activity intent)adb shell am start -a android.intent.action.VIEW -d URL// open URLadb shell am start -t image/* -a android.intent.action.VIEW// opens gallery
Logs
adb logcat [options] [filter] [filter]// view device logadb bugreport// print bug reports
Other
adb backup// Create a full backup of your phone and save to the computer.adb restore// Restore a backup to your phone.adb sideload// Push and flash custom ROMs and zips from your computer.
fastboot devices
Check connection and get basic information about devices connected to the computer. This is essentially the same command as adb devices from earlier. However, it works in the bootloader, which ADB does not. Handy for ensuring that you have properly established a connection.
Shared Preferences
// replace org.example.app with your application id
// Add a value to default shared preferences.
adb shell 'am broadcast -a org.example.app.sp.PUT --es key key_name --es value ""hello world!""'
// Remove a value to default shared preferences.
adb shell 'am broadcast -a org.example.app.sp.REMOVE --es key key_name'
// Clear all default shared preferences.
adb shell 'am broadcast -a org.example.app.sp.CLEAR --es key key_name'
// It's also possible to specify shared preferences file.
adb shell 'am broadcast -a org.example.app.sp.PUT --es name Game --es key level --ei value 10'
// Data types
adb shell 'am broadcast -a org.example.app.sp.PUT --es key string --es value ""hello world!""'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key boolean --ez value true'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key float --ef value 3.14159'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key int --ei value 2015'
adb shell 'am broadcast -a org.example.app.sp.PUT --es key long --el value 9223372036854775807'
// Restart application process after making changes
adb shell 'am broadcast -a org.example.app.sp.CLEAR --ez restart true'
Few bash snippets
Using tail -n
//Use tail to remove the first line. Actually two lines. The first one is just a newline. The second is “List of devices attached.”
$ adb devices | tail -n +2
Using cut -sf
// Cut the last word and any white space off the end of each line.
$ adb devices | tail -n +2 | cut -sf -1
Using xargs -I
// Given the -I option, xargs will perform an action for each line of text that we feed into it. // We can give the line a variable name to use in commands that xargs can execute.
$ adb devices | tail -n +2 | cut -sf -1 | xargs -I X echo X aw yiss
Three options below together
// Will print android version of all connected devices
adb devices | tail -n +2 | cut -sf -1 | xargs -I X adb -s X shell getprop ro.build.version.release
Using alias
alias tellMeMore=echo
tellMeMore ""hi there""
Output => hi there
// Define alias
alias apkinstall=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1""
// And you can use it later
apkinstall ~/Downloads/MyAppRelease.apk // Install an apk on all devices
alias rmapp=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X uninstall $1""
rmapp com.example.myapp // Uninstall a package from all devices
alias clearapp=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell pm clear $1""
clearapp com.example.myapp // Clear data on all devices (leave installed)
alias startintent=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell am start $1""
startintent https://twitter.com/JonFHancock // Launch a deep link on all devices
-
Setting up your .bash_profile Finally, to make this all reusable even after rebooting your computer (aliases only last through the current session), we have to add these to your .bash_profile. You might or might not already have a .bash_profile, so let’s make sure we append to it rather than overwriting it. Just open a terminal, and run the following command
-
touch .bash_profile && open .bash_profile
This will create it if it doesn’t already exist, and open it in a text editor either way. Now just copy and paste all of the aliases into it, save, and close.
alias startintent=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell am start $1""
alias apkinstall=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1""
alias rmapp=""adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X uninstall $1""
Sources: