Droidkit
DroidKit is a comprehensive macOS desktop application for Android developers that provides essential ADB (Android Debug Bridge) tools through an intuitive graphical interface.
Install / Use
/learn @pavi2410/DroidkitREADME
DroidKit 🧑💻🩺📱
<div align="center"> <img src="public/droidkit-icon-128.png" alt="DroidKit" width="128" height="128" /> <h3>Android Toolkit for macOS</h3> <p><strong>DroidKit</strong> is a comprehensive macOS desktop application for Android developers that provides essential ADB (Android Debug Bridge) tools through an intuitive graphical interface.</p> </div>✨ Features
📟 Device Management
- Auto-discovery of connected Android devices and emulators
- Real-time status monitoring with connection indicators
- Multiple device support with easy switching
- Device information display (model, Android version, API level, serial)
🚀 AVD (Android Virtual Device) Management
- List available AVDs from your Android SDK
- Launch emulators directly from the app
- Quick access AVD controls in sidebar
- Automatic device detection after AVD launch
⚙️ Configuration & Settings
- Automatic ANDROID_HOME detection from environment variables
- Common SDK path discovery (macOS standard locations)
- SDK path configuration with validation
- Persistent settings storage
📁 File Explorer
- Browse device filesystem with intuitive navigation
- File and folder management with permissions display
- Download files from device to local machine
- Path navigation with breadcrumbs and history
- File size and permission details
📋 App Management
- List all installed applications (system and user)
- Search and filter applications by name
- Distinguish system vs user apps with badges
- Package name and app info display
- Future: Install/uninstall APKs
📊 Logcat Viewer
- Real-time log monitoring with configurable line count
- Log level filtering with color-coded output
- Search and filter logs by keywords
- Export logs to text files
- Terminal-style display with syntax highlighting
🛠️ Tech Stack
- Frontend: React 19 + TypeScript + Tailwind CSS
- UI Components: Shadcn UI component library
- Backend: Tauri 2.0 + Rust
- ADB Integration:
adb_clientRust crate - Build Tool: Bun for fast package management
- Platform: macOS (with potential for cross-platform expansion)
🚀 Getting Started
Prerequisites
-
Node.js & Bun: Install Bun for package management
curl -fsSL https://bun.sh/install | bash -
Rust: Required for Tauri backend
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -
Android SDK: Install Android Studio or standalone SDK
- Set
ANDROID_HOMEenvironment variable - Ensure
adbis in your PATH
- Set
Installation
-
Clone the repository
git clone <repository-url> cd droidkit -
Install dependencies
bun install -
Run in development mode
bun run tauri dev -
Build for production
bun run tauri build
📖 Usage
Connecting Devices
- USB Devices: Enable USB debugging on your Android device and connect via USB
- Emulators: Launch AVDs directly from DroidKit or use Android Studio
- Network Devices: Future feature for wireless ADB connections
File Management
- Navigate using folder icons or path breadcrumbs
- Click files to view details, folders to navigate
- Use the download button to save files to your Desktop
- Use back/home buttons for quick navigation
Log Monitoring
- Adjust line count for log buffer size
- Use search to filter logs by keywords
- Export logs for debugging or sharing
- Color-coded log levels (Verbose, Debug, Info, Warning, Error, Fatal)
App Management
- Search installed apps by name or package
- View system vs user applications
- Future: Install APKs, view app details, manage permissions
🏗️ Project Structure
droidkit/
├── src/ # React frontend
│ ├── components/ # UI components
│ │ ├── ui/ # Shadcn UI base components
│ │ ├── Header.tsx # App header with branding
│ │ ├── Sidebar.tsx # Device list and AVD controls
│ │ ├── MainContent.tsx # Tabbed main interface
│ │ ├── FileExplorer.tsx # File browser component
│ │ ├── AppManager.tsx # App management interface
│ │ ├── LogcatViewer.tsx # Log monitoring component
│ │ └── SettingsDialog.tsx # Configuration modal
│ ├── lib/ # Utilities
│ └── App.tsx # Main application
├── src-tauri/ # Tauri backend
│ ├── src/
│ │ ├── adb_commands.rs # ADB operations
│ │ ├── lib.rs # Tauri commands
│ │ └── main.rs # Application entry
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
├── public/ # Static assets
└── README.md # Documentation
🔧 Available Commands
Frontend Commands
bun run dev- Start Vite development serverbun run build- Build for productionbun run preview- Preview production build
Tauri Commands
bun run tauri dev- Run app in development modebun run tauri build- Build production appbun run tauri info- Show environment info
🎯 Roadmap
Phase 1 ✅ (Completed)
- [x] Basic device detection and information
- [x] File browser with download capability
- [x] App listing and management
- [x] Logcat viewer with filtering
- [x] AVD management and launching
- [x] Settings and configuration
Phase 2 🚧 (Future)
- [ ] Real-time logcat streaming
- [ ] APK installation and app uninstalling
- [ ] Screenshot capture and screen recording
- [ ] Network ADB connections
- [ ] Performance monitoring (CPU, memory, battery)
- [ ] Interactive ADB shell terminal
Phase 3 🔮 (Vision)
- [ ] Plugin system for custom tools
- [ ] Multi-device operations
- [ ] Automated testing integration
- [ ] Device farm management
- [ ] Cloud device support
🤝 Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Tauri - For the excellent Rust-based app framework
- Shadcn UI - For beautiful, accessible UI components
- adb_client - For Rust ADB integration
- Lucide - For consistent iconography
- Android Open Source Project - For ADB and development tools
📞 Support
If you encounter any issues or have questions:
- Check the Issues page for existing solutions
- Create a new issue with detailed information
- Join our community discussions
Built with ❤️ for the Android developer community
