A powerful Python tool to create a comprehensive inventory of all installed Android applications on your device via ADB, with Google Play Store integration to get real app names and descriptions.
- Complete App Discovery: Inventory all installed packages from Android devices
- Smart Filtering: Separate 3rd party apps from system apps automatically
- Google Play Store Integration: Get real app names and descriptions from the Play Store
- Multiple Output Formats: Generate both table format and simple lists
- Intelligent Caching: Avoid duplicate API requests for better performance
- Rate Limiting: Respectful API usage with built-in delays
- Fallback Logic: Generic name extraction when Play Store lookup fails
- Cross-Platform: Works on macOS, Linux, and Windows
# Install Homebrew if you don't have it
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Android Platform Tools (includes ADB)
brew install android-platform-tools
-
Download Android SDK Platform Tools from Google's official site
-
Extract the downloaded zip file
-
Add the platform-tools directory to your PATH:
echo 'export PATH="$PATH:/path/to/platform-tools"' >> ~/.zshrc source ~/.zshrc
adb --version
- Go to Settings → About Phone
- Tap Build Number 7 times to enable Developer Options
- Go to Settings → Developer Options
- Enable USB Debugging
- Connect your device via USB cable
- Accept the debugging authorization prompt on your device
- Python 3.7 or higher
requests
library for Google Play Store integration
-
Clone this repository:
git clone https://github.com/yourusername/android-app-inventory.git cd android-app-inventory
-
Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install requests
-
Connect your Android device via USB with USB debugging enabled
-
Verify ADB connection:
adb devices
-
Run the extractor:
python android_app_extractor.py
from android_app_extractor import AndroidAppExtractor
# Initialize without Play Store API
extractor = AndroidAppExtractor(use_play_store_api=False)
The script automatically separates 3rd party apps from system apps and generates separate files for each.
The script generates two markdown files:
third_party_android_apps.md
- Only user-installed 3rd party applications with Play Store namesall_android_apps.md
- Complete list of all installed packages (including system apps)
Each file contains:
- Summary with total app count
- Table format with app names and package identifiers
- Simple list of app names for easy copying
# 3rd Party Android Apps (with Play Store names)
Total apps: 108
| App Name | Package Name |
|----------|-------------|
| 1Password: Password Manager | com.onepassword.android |
| Airbnb | com.airbnb.android |
| Spotify: Music and Podcasts | com.spotify.music |
## App Names List
1Password: Password Manager
Airbnb
Spotify: Music and Podcasts
- ADB Connection: Connects to your Android device via ADB
- Package Discovery: Uses
adb shell pm list packages
to get all installed packages - System App Filtering: Intelligently filters out system apps using package name patterns
- Play Store Lookup: Queries Google Play Store web interface for real app names
- Smart Caching: Caches API results to avoid duplicate requests
- Fallback Processing: Uses generic name extraction for apps not found on Play Store
- Output Generation: Creates formatted markdown files with results
The script includes built-in rate limiting:
- Maximum 50 Play Store API requests per run
- 1-second delay every 5 requests
- Automatic caching to avoid duplicate requests
The script automatically identifies system packages using these patterns:
com.android.*
com.google.android.*
com.samsung.*
- OEM-specific packages (Xiaomi, Huawei, etc.)
# Check if device is connected
adb devices
# Restart ADB server if needed
adb kill-server
adb start-server
# Check if USB debugging is enabled
adb shell getprop ro.debuggable
- Ensure USB debugging is enabled on your device
- Accept the debugging authorization prompt
- Try a different USB cable or port
- The script will fall back to generic name extraction if Play Store requests fail
- Check your internet connection for Play Store integration
- No Personal Data Stored: The script only extracts package names and public app information
- Local Processing: All processing happens locally on your machine
- Respectful API Usage: Includes rate limiting and caching to be respectful to Google's servers
- No Authentication Required: Uses public Play Store web interface (no API keys needed)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Google for providing ADB and the Android platform
- The Android developer community for documentation and best practices
- Contributors and users who help improve this tool
- Initial release with basic ADB integration
- Google Play Store API integration
- Smart system app filtering
- Multiple output formats
- Rate limiting and caching
- Comprehensive error handling