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/ |