Skip to content

Instantly share code, notes, and snippets.

@arlm
Forked from Pulimet/AdbCommands
Last active April 17, 2022 21:33
Show Gist options
  • Save arlm/141d5e4c948b675aeef9eb872e2d3552 to your computer and use it in GitHub Desktop.
Save arlm/141d5e4c948b675aeef9eb872e2d3552 to your computer and use it in GitHub Desktop.
Adb useful commands list

General ADB Commands

ADB Server

  • Ensures that there is an ADB server running: adb start-server
  • Kills the ADB server if it is running: adb kill-server

Device Rebooting

  • Reboots the device: adb reboot
  • Reboots the deice in recovery mode: adb reboot recovery
  • Reboots the device into the booloader for OS flashing: adb reboot-bootloader

Device Commands

  • Lists all attached devices: adb devices
  • Restarts ADB listening to USB: adb usb
  • Opens or run commands in a terminal on the host Android device: adb shell

Wireless Debugging up to Android 10

  • Restarts ADB listening to TCP on PORT_NUMBER: adb tcpip PORT_NUMBER
  • Connects to the device on the specified IP_ADDRESS: adb connect IP_ADDR

Wireless Debugging on Android 11+

  • Pairs to a device using the Wireless Debugging present on Android 11: add pair HOST_IP_ADDRESS:PORT_NUMBER

Device Properties

  • Gets device android version: adb shell getprop ro.build.version.release

Device Logs

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 ... -p ... 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

== List packages

pm list packages -f

== 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 2048x1536 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 // 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

== 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"

@sonhaile
Copy link

Ok

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment