>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Dart

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

SimUtil

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.

Simutil Showcase

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 x verrà mostrata la dimensione della cartella DerivedData e verrà offerta la possibilità di eliminarla.

Simutil Showcase Image

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