Come evitare di aprire IDE pesanti solo per avviare un singolo emulatore

Se sviluppi per piattaforme mobile usando Flutter, React Native o uno stack nativo, probabilmente conosci questa routine. Hai bisogno di controllare rapidamente il layout su un vecchio Pixel o su un nuovo iPhone. Per farlo, o tieni aperti Android Studio e Xcode che consumano molte risorse, oppure devi ricordare la sintassi dei comandi per emulator -avd e xcrun simctl boot ogni volta.
Recentemente ho scoperto simutil. È una piccola utility con un'interfaccia basata su testo (TUI) che riunisce tutti i tuoi dispositivi virtuali e fisici in un'unica finestra del terminale.

Cosa può fare questo strumento
L'interfaccia è suddivisa in pannelli ordinati. Puoi vedere l'elenco dei simulatori iOS, degli emulatori Android e dei dispositivi fisici connessi. La navigazione funziona con i tasti freccia, senza bisogno del mouse.
Ecco scenari pratici in cui lo strumento fa risparmiare tempo:
- Avvio con un clic. Seleziona un dispositivo, premi Invio e si avvia in background.
- Selezione della modalità di avvio Android. Premendo Spazio si apre un menu: avvio normale, Cold Boot, avvio senza audio, o avvio a freddo senza audio fin da subito.
- Connessione ADB wireless. L'utility può connettere smartphone fisici tramite IP, un codice di accoppiamento a sei cifre, o attraverso un codice QR direttamente nel terminale.
- Visualizzatore Logcat integrato. Puoi leggere i log di sistema dal dispositivo Android selezionato e filtrarli al volo senza uscire dall'utility.
- Pulizia rapida della cache Xcode. Su macOS, premendo il tasto
xverrà mostrata la dimensione della cartella DerivedData e verrà offerta la possibilità di eliminarla.

Plugin personalizzati tramite YAML
Un dettaglio interessante: l'autore non ha hardcodato tutti gli strumenti esterni possibili nel binario, ma ha creato un sistema di plugin tramite configurazione.
Al primo avvio viene creato un file ~/.simutil/settings.yaml. Puoi descrivere chiamate a qualsiasi utility da console, associandole a hotkey. Ad esempio, ecco come appare un'integrazione pronta all'uso con scrcpy per il mirroring dello schermo Android:
theme: dark
last_selected_device_id: ~
plugins:
- id: scrcpy
label: scrcpy
description: Screen mirroring and control for Android
availability:
command: scrcpy
args: [--version]
commands:
- id: mirror
label: Screen Mirror
command: scrcpy
args: [-s, "{device.id}"]
platforms: [android]
requires_running: true
mode: detached
shortcut: s
Premi s su un dispositivo in esecuzione — si apre la finestra di scrcpy. La configurazione supporta variabili di sostituzione come {device.id} e {device.name}, quindi puoi facilmente aggiungere esecuzioni di test Maestro o qualsiasi script bash personalizzato. Per modificare il file delle impostazioni, basta premere e all'interno dell'interfaccia.
Dettagli tecnici
Il progetto è scritto in Dart. Viene utilizzata la libreria Nocterm per la costruzione dell'interfaccia del terminale, e la sua sintassi ricorda da vicino l'approccio familiare basato su widget in Flutter.
Per quanto riguarda le piattaforme: simutil funziona su macOS, Linux e Windows. Ma ci sono limitazioni del sistema operativo che non possono essere evitate. I simulatori iOS funzionano esclusivamente su macOS perché dipendono dalle utility di sistema Apple (simctl e devicectl). Su Linux e Windows, l'utility si concentra solo sul lavoro con Android, Logcat e ADB wireless.
Installazione e configurazione
Puoi installare simutil in diversi modi.
Tramite Homebrew su macOS e Linux:
brew tap dungngminh/simutil
brew install simutil
Con uno script di installazione universale:
curl -fsSL https://raw.githubusercontent.com/dungngminh/simutil/main/install.sh | bash
Per Windows tramite PowerShell:
powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dungngminh/simutil/main/install.ps1 | iex"
Se hai già installato il Dart SDK:
dart pub global activate simutil
Dopo l'installazione, esegui il comando:
simutil
A chi sarà utile
Lo strumento piacerà a chi preferisce editor leggeri come VS Code, Zed o Neovim e non vuole aprire ambienti di sviluppo pesanti solo per un gestore di emulatori. Copre le esigenze di test base e il passaggio tra dispositivi con un paio di tasti.
Progetti correlati