adb help // List all comands
== Adb Server |
adb kill-server |
adb start-server |
== Adb Reboot |
adb reboot |
adb reboot recovery |
adb reboot-bootloader |
adb root //restarts adb with root permissions |
== Shell |
adb shell // Open or run commands in a terminal on the host Android device. |
== Devices |
adb usb |
adb devices //show devices attached |
adb devices -l //devices (product/model) |
adb connect ip_address_of_device |
== Get device android version |
adb shell getprop ro.build.version.release |
== LogCat |
adb logcat |
adb 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.package |
adb 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 2048×1536 |
adb shell wm density 288 |
// And reset to default |
adb shell wm size reset |
adb 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.png |
— |
adb shell screenrecord /sdcard/NotAbleToLogin.mp4 |
$ adb shell |
shell@ $ screenrecord –verbose /sdcard/demo.mp4 |
(press Control + C to stop) |
shell@ $ exit |
$ adb pull /sdcard/demo.mp4 |
== Key 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/Paste |
0 –> “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” |
// https://developer.android.com/reference/android/view/KeyEvent.html |
== ShPref |
# 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’ |
== 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 contents) |
adb shell ls -s (print size of each file) |
adb shell ls -R (list subdirectories recursively) |
== Device onformation |
adb get-statе (print device state) |
adb get-serialno (get the serial number) |
adb shell dumpsys iphonesybinfo (get the IMEI) |
adb shell netstat (list TCP connectivity) |
adb shell pwd (print current working directory) |
adb shell dumpsys battery (battery status) |
adb shell pm list features (list phone features) |
adb shell service list (list all services) |
adb shell dumpsys activity <package>/<activity> (activity info) |
adb shell ps (print process status) |
adb shell wm size (displays the current screen resolution) |
dumpsys window windows | grep -E ‘mCurrentFocus|mFocusedApp’ (print current app’s opened activity) |
== Package info |
adb shell list packages (list package names) |
adb shell list packages -r (list package name + path to apks) |
adb shell list packages -3 (list third party package names) |
adb shell list packages -s (list only system packages) |
adb shell list packages -u (list package names + uninstalled) |
adb shell dumpsys package packages (list info on all apps) |
adb shell dump <name> (list info on one package) |
adb shell path <package> (path to the apk file) |
==Configure Settings Commands |
adb shell dumpsys battery set level <n> (change the level from 0 to 100) |
adb shell dumpsys battery set status<n> (change the level to unknown, charging, discharging, not charging or full) |
adb shell dumpsys battery reset (reset the battery) |
adb shell dumpsys battery set usb <n> (change the status of USB connection. ON or OFF) |
adb shell wm size WxH (sets the resolution to WxH) |
== Device Related Commands |
adb reboot-recovery (reboot device into recovery mode) |
adb reboot fastboot (reboot device into recovery mode) |
adb shell screencap -p “/path/to/screenshot.png” (capture screenshot) |
adb shell screenrecord “/path/to/record.mp4” (record device screen) |
adb backup -apk -all -f backup.ab (backup settings and apps) |
adb backup -apk -shared -all -f backup.ab (backup settings, apps and shared storage) |
adb backup -apk -nosystem -all -f backup.ab (backup only non-system apps) |
adb restore backup.ab (restore a previous backup) |
adb 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 URL) |
adb shell am start -t image/* -a android.intent.action.VIEW (opens gallery) |
== Logs |
adb logcat [options] [filter] [filter] (view device log) |
adb 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 === |
@Source (https://jonfhancock.com/bash-your-way-to-better-android-development-1169bc3e0424) |
=== 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 |
— Example 1 |
alias tellMeMore=echo |
tellMeMore “hi there” |
Output => hi there |
— Example 2 |
// 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 |
— Example 3 |
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 |
— Example 4 |
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) |
— Example 5 |
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″ |
alias clearapp=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell pm clear $1″ |
=============================================================== |
Sources: |
– Internet |
– https://www.automatetheplanet.com/adb-cheat-sheet/ – https://gist.github.com/Pulimet/5013acf2cd5b28e55036c82c91bd56d8 |