Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Adb useful commands list
== Adb Server
adb kill-server
adb start-server
== Adb Reboot
adb reboot
adb reboot recovery
adb reboot-bootloader
== Shell
adb shell // Open or run commands in a terminal on the host Android device.
== Devices
adb usb
adb devices //show devices attached
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 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"
@AyoubMarouan

This comment has been minimized.

Copy link

commented Feb 3, 2018

Thank you so much!

@ucdevinda123

This comment has been minimized.

Copy link

commented Feb 21, 2018

Thank you very much love it !!!

@asitishere

This comment has been minimized.

Copy link

commented Feb 23, 2018

love it...

@chiptus

This comment has been minimized.

Copy link

commented Feb 27, 2018

thanks!

@K4TAY

This comment has been minimized.

Copy link

commented Mar 8, 2018

These are great. Especially adb bugreport! Here is a few goodies for your .bash_profile

alias adbimg='cd && adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png'
alias adbrec='cd && adb shell screenrecord --verbose /sdcard/adb.mp4'

@julialiuliu

This comment has been minimized.

Copy link

commented May 20, 2018

Thank you so much for sharing :)

@kobifp

This comment has been minimized.

Copy link

commented Jun 15, 2018

Thanks alot.bro

@varundtsfi

This comment has been minimized.

Copy link

commented Jun 21, 2018

Hi Can you tell me how to copy my host .android/adbkey.pub key inside the android device

@ericwork2008

This comment has been minimized.

Copy link

commented Jun 29, 2018

Great summary

@charEric

This comment has been minimized.

Copy link

commented Aug 20, 2018

First off, this is great! Thanks so much for sharing! I wanted to perhaps suggesting the following change for line 106:

adb shell input keyevent 26 // Lock/Unlock android device. It will toggle device screen ON/OFF.

The existing language confused me as I thought it actually powered down my entire device and then could also power it on (something that adb can't do unfortunately afaik).

@GENHEN

This comment has been minimized.

Copy link

commented Sep 28, 2018

Would like to request a command to use ADB to clear all text messages on my phone. I would like to programmatically clear messages somehow.

I found out how to do it

pm clear com.android.providers.telephony

@Sv443

This comment has been minimized.

Copy link

commented Oct 13, 2018

Pretty nice! Thanks a lot!

@diamondjohndroid

This comment has been minimized.

Copy link

commented Oct 28, 2018

I am trying to run/retrieve info on all the different available options for "content query", for example:

content query --uri content://settings/global

Which is dependent on the URI being of a valid content provider on the device. However, all I can find online are fixed lists for the "content://settings/global" but from my understanding, the value used here are specific to the phone, the apps installed etc. I have not found a shell command that will list valid content providers, on the device. eg https://github.com/jenzz/ContentProviderHelper

Anyone know how to get a list of all the valid URI's (content providers) on the running device using a shell command?

@nielsz

This comment has been minimized.

Copy link

commented Jan 24, 2019

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'

Is this really writing to a different file though?

@ubaierbhat

This comment has been minimized.

Copy link

commented Mar 11, 2019

Changing shared preference via broadcasts requires https://github.com/jfsso/PreferencesEditor

@bgdn12

This comment has been minimized.

Copy link

commented Mar 15, 2019

Is it possible to get copped text string from android device through adb?

@dl942702882

This comment has been minimized.

Copy link

commented Mar 26, 2019

love it

@Ip2507

This comment has been minimized.

Copy link

commented May 6, 2019

Is there any adb command to launch trusted certificate in settings app for android ??? Since that trusted certificate position keeps changing on OS version .

Need solution ASAP .

Thanks in advance,

@jimmyFlash

This comment has been minimized.

Copy link

commented Jun 15, 2019

Excellent work, Thank you

@kheldiente

This comment has been minimized.

Copy link

commented Jun 20, 2019

So far this is the best compilation. Thanks for sharing!

@mnomansadiq

This comment has been minimized.

Copy link

commented Jul 1, 2019

Is there any updated adb command for this: adb shell settings put secure enabled_notification_listeners ?

@adalenv

This comment has been minimized.

Copy link

commented Jul 8, 2019

how to create a contact if not exist using adb shell?

@reshma-epsilon

This comment has been minimized.

Copy link

commented Aug 6, 2019

Can we open a particular application thru adb commands?

@IntergalacticPenguin

This comment has been minimized.

Copy link

commented Aug 6, 2019

Can we open a particular application thru adb commands?

Yes, it is actually pretty easy, this is one of the possible ways: adb shell monkey -p <insert-package-name> -c android.intent.category.LAUNCHER 1

If you are interested in more ADB inspiration, see my repo https://github.com/IntergalacticPenguin/mobile-toolkit

@mnomansadiq

This comment has been minimized.

Copy link

commented Aug 6, 2019

Can we open a particular application thru adb commands?

What do you mean by open? if you mean to launch a particular application main activity through adb use this:
adb shell am start -n packageName/Activity

For example below command will launch the dialer app on Sony phone:
"adb shell am start -n com.sonyericsson.android.socialphonebook/.DialerEntryActivity"

@reshma-epsilon

This comment has been minimized.

Copy link

commented Aug 6, 2019

yes, this worked! adb shell am start packageName,

I again have one more question, can we click a particular email inside gmail ( android emulator ) through adb commands?

@jdougit

This comment has been minimized.

Copy link

commented Aug 29, 2019

possible to get an avd emulator's name?
found this on web, but it does not print out anything
adb -s emulator-5554 emu avd name
thanks

@IntergalacticPenguin

This comment has been minimized.

@jdougit

This comment has been minimized.

Copy link

commented Aug 29, 2019

thanks, @IntergalacticPenguin
got a solution: (use in a shell script)

name=`(sleep 0.5; echo 'avd name') | telnet localhost 5554 | sed '6!d'`
@escollapse

This comment has been minimized.

Copy link

commented Sep 13, 2019

Is there any adb command to launch trusted certificate in settings app for android ??? Since that trusted certificate position keeps changing on OS version .

Need solution ASAP .

Thanks in advance,

@Ip2507 try:
com.android.settings.TRUSTED_CREDENTIALS for system certs
com.android.settings.TRUSTED_CREDENTIALS_USER for user certs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.