ADB Shell Command to List Installed Packages on Android Devices

The Android Debug Bridge (ADB) is a powerful tool used for debugging and communicating with Android devices. One of the most commonly used ADB commands is the ability to list installed packages on a connected Android device. This capability is essential for developers and testers who need to analyze app installations or troubleshoot issues related to package management.

In this blog post, we’ll explore how to use the adb shell command to list installed packages, provide examples, and address potential issues you might encounter.

What is the ADB Shell Command for Listing Packages?

The ADB shell command cmd package list packages retrieves a list of all installed application packages on the connected Android device. These packages represent all the apps, both system and user-installed, currently on the device.

How to Use the Command

Step 1: Set Up ADB

Before executing the command, ensure ADB is correctly set up on your system:

  1. Install ADB tools using your package manager:
    • For Ubuntu/Linux: sudo apt install android-tools-adb
    • For macOS using Homebrew: brew install android-platform-tools
    • For Windows, download the tools from the official Android Developer website.
  2. Enable USB Debugging on your Android device:
    • Navigate to Settings > Developer Options > USB Debugging and toggle it on.
  3. Connect your device to the computer using a USB cable and ensure it is detected: adb devices

Step 2: List All Installed Packages

Use the following command to list all installed packages:

adb shell cmd package list packages

This will return a list of package names, such as:

package:com.android.chrome
package:com.whatsapp
package:com.android.settings

Filtering the Results

ADB allows you to filter the list of packages based on specific criteria. Here’s how you can refine your queries:

1. List Only System Packages

To display only system-installed packages:

adb shell cmd package list packages -s

Example Output:

package:com.android.systemui
package:com.google.android.gms

2. List Only User-Installed Packages

To view only user-installed (third-party) packages:

adb shell cmd package list packages -3

Example Output:

package:com.spotify.music
package:com.instagram.android

3. Search for Specific Package Names

To find a specific package, add a keyword at the end of the command. For example:

adb shell cmd package list packages | grep whatsapp

This will return:

package:com.whatsapp

Understanding the Output

Each line in the output represents a unique application package installed on the device. The format typically starts with package: followed by the fully qualified package name (e.g., com.android.chrome).


Common Issues and Solutions

1. Device Not Detected

If the device is not listed when running adb devices, try the following:

  • Ensure USB Debugging is enabled on the device.
  • Use a different USB cable or port.
  • Restart the ADB server: adb kill-server adb start-server

2. Insufficient Permissions

If you encounter a permissions error:

  • Confirm that USB Debugging is enabled.
  • On Linux, add your user to the plugdev group: sudo usermod -aG plugdev $USER

3. Command Not Found

If the cmd package command is not recognized:

  • Ensure your device is running Android 5.0 (Lollipop) or later.
  • Update your ADB tools to the latest version.

Advanced Usage

Export the Package List

You can save the output of the command to a file for further analysis:

adb shell cmd package list packages > packages.txt

Remove a Package

To uninstall a specific package:

adb uninstall com.package.name

Reinstall a Package

To reinstall an uninstalled package:

  1. Transfer the APK to the device: adb push app.apk /sdcard/
  2. Install the APK: adb install /sdcard/app.apk

Why Use the adb shell cmd package Command?

This command is invaluable for:

  • Debugging app installations.
  • Analyzing system and user-installed packages.
  • Managing app deployments during development and testing.

The adb shell cmd package list packages command is a simple yet powerful way to interact with installed applications on an Android device. By mastering its usage, you can streamline debugging, deployment, and package management tasks.

Leave a Comment