Skip to content

Hello, Here is a small Java project that allows you to install the Google SDK and manage Android devices, i.e. create, start and delete them.

Notifications You must be signed in to change notification settings

NmurtasDev/AndroidEmulatorManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Android Emulator Manager

Java CI with Maven CodeQL License: MIT Java Version Platform Version

A modern Java-based GUI tool to download, install, and manage Android SDK and emulators.

Features

  • Automated SDK Setup: Download and install Android SDK automatically with license agreement
  • Card-Based Device UI: Modern card interface with pagination (10 devices per page)
  • Smart Accordions: Auto-collapsing SDK configuration and expandable logs
  • Cross-Platform: Works on Windows, Linux, and macOS
  • Emulator Management: Create, start, stop, rename, and delete Android Virtual Devices (AVDs)
  • Device Information: Display Android version, device type, and running status
  • AVD Name Validation: Prevent invalid characters and spaces in AVD names
  • Dark Theme Support: Automatically adapts to system theme (Gnome, KDE, Windows)
  • Modern Architecture: Built with Java 21 and Maven
  • Automated Releases: GitHub Actions pipeline for multi-platform builds
  • Logging: Comprehensive logging with SLF4J and Logback

Requirements

  • Java 21 or higher
  • Maven 3.8+ (for building from source)
  • Internet connection (for SDK download)

Quick Start

Download Pre-built JAR

Download the latest release from the Releases page and run:

java -jar android-emulator-manager-3.0.0.jar

Build from Source

git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
cd AndroidEmulatorManager
mvn clean package
java -jar target/android-emulator-manager-3.0.0-jar-with-dependencies.jar

Build with EXE output (require java)

git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
cd AndroidEmulatorManager
mvn clean package -Pwindows

Build with EXE output (dont require java)

git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
cd AndroidEmulatorManager
jlink --output jre --add-modules java.base,java.desktop --strip-debug --compress=2 --no-header-files --no-man-pages
mvn clean package -Pwindows-standalone

Build macOS App Bundle

git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
cd AndroidEmulatorManager
mvn clean package -Pmacos
# Output: target/AndroidEmulatorManager.app/

Build Linux App Bundle

git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
cd AndroidEmulatorManager
mvn clean package -Plinux
# Output: target/AndroidEmulatorManager/ (executable: bin/AndroidEmulatorManager)

Build Linux DEB Package

git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
cd AndroidEmulatorManager
mvn clean package -Plinux-deb
# Output: target/android-emulator-manager_3.0.0_amd64.deb

Platform-Specific Distributions

Platform Profile Output Includes JRE
Windows windows .exe (requires Java)
Windows windows-standalone .exe (standalone)
macOS macos .app bundle
Linux linux app-image
Linux linux-deb .deb package
All default .jar (universal)

Usage

  1. Launch the application
  2. SDK Configuration (if not already configured):
    • Expand the SDK Configuration accordion
    • Click "Download SDK" and accept the Android SDK License Agreement
    • Wait for automatic download and installation
  3. Create AVDs:
    • Click "Create New AVD"
    • Choose API level and device type
    • Enter a valid name (letters, numbers, underscores, hyphens only)
  4. Manage Devices:
    • View devices as cards showing Android version, device type, and status
    • Use ▶ to start, ■ to stop, ✎ to rename, 🗑 to delete
    • Navigate pages if you have more than 10 devices
  5. Monitor Activity:
    • Click the Log accordion to view detailed operation logs
    • Use "Clear" button to reset the log

SDK Installation Paths

  • Default: $HOME/Android/sdk (user home directory)
  • Custom: Use the "Sfoglia" button to select a different location

The tool follows Google's official Android SDK documentation.

Project Structure

AndroidEmulatorManager/
├── src/
│   ├── main/
│   │   ├── java/net/nicolamurtas/android/emulator/
│   │   │   ├── AndroidEmulatorManager.java    # Main application
│   │   │   ├── service/                       # Business logic
│   │   │   ├── ui/                            # Swing UI components
│   │   │   └── util/                          # Utilities
│   │   └── resources/
│   │       └── logback.xml                    # Logging configuration
│   └── test/
│       └── java/                              # Unit tests
├── pom.xml                                    # Maven configuration
└── README.md

Architecture Improvements (v3.0)

This version introduces major architectural improvements over previous versions:

Technical Improvements

  • Proper separation of concerns (UI, Service, Util layers)
  • Modern Java 21 features (text blocks, records, switch expressions)
  • Maven build system for dependency management
  • Professional logging with SLF4J/Logback
  • Security improvements (no command injection vulnerabilities)
  • Better error handling and user feedback
  • Unit tests for critical functionality
  • Cross-platform compatibility tested on Windows, Linux (Gnome/KDE), macOS

UI/UX Improvements

  • Card-based device interface with pagination
  • Smart accordions for SDK and logs (auto-collapse/expand)
  • Android SDK License Agreement dialog before download
  • Real-time device info (Android version, device type, running status)
  • AVD name validation to prevent errors
  • Dark theme support with automatic system theme detection
  • Rename AVD functionality directly from UI

CI/CD

  • Automated releases via GitHub Actions on tag push
  • Multi-platform builds (JAR, Windows EXE)
  • Pre-release support for beta/RC versions
  • CodeQL security scanning on every commit

Release Pipeline

This project uses automated releases via GitHub Actions. When a version tag is pushed, the pipeline automatically:

  1. Builds Universal JAR and Windows EXE
  2. Creates a GitHub Release (stable or pre-release based on tag format)
  3. Uploads all binaries automatically
  4. Generates release notes from commits

Creating a Release

See RELEASE.md for detailed instructions on creating releases.

Quick example:

# For a stable release
git tag v3.0.0
git push origin v3.0.0

# For a pre-release (beta, RC, alpha)
git tag v3.0.0-beta
git push origin v3.0.0-beta

The pipeline detects pre-releases automatically (tags containing -) and marks them accordingly on GitHub.

Previous Versions

Older versions (v1 and v2) are available in the OLD/ directory for reference.

Key Differences:

  • V1: Single file, saves SDK to user home
  • V2: Single file, hardcoded path to C:\Android\sdk
  • V3 (current): Modular architecture, card UI, accordions, automated releases, Java 21

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

MIT License - see LICENSE file for details

Author

Nicola Murtas Adobe Experience Manager Developer 📧 [email protected] 🔗 nicolamurtas.net 🐙 GitHub

Feedback

If you have suggestions, questions, or encounter any issues, please open an issue on GitHub or contact me directly.


Note: This tool requires Java 21. Tested on Windows 11, Ubuntu 22.04, and macOS Ventura.

About

Hello, Here is a small Java project that allows you to install the Google SDK and manage Android devices, i.e. create, start and delete them.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages