>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Dart

Stop met het openen van zware IDE's alleen om één emulator te starten

SimUtil

Als je voor mobiele platforms ontwikkelt met Flutter, React Native of een native stack, ben je waarschijnlijk bekend met deze routine. Je moet snel de layout controleren op een oude Pixel of een nieuwe iPhone. Om dit te doen houd je ofwel energieverslindende Android Studio en Xcode open, of je moet elke keer de commando-syntaxis voor emulator -avd en xcrun simctl boot onthouden.

Ik kwam onlangs simutil tegen. Het is een kleine utility met een tekstgebaseerde gebruikersinterface (TUI) die al je virtuele en fysieke apparaten samenbrengt in één terminalvenster.

Simutil Showcase

Wat dit tooltje kan doen

De interface is verdeeld in nette panelen. Je ziet de lijst met iOS-simulators, Android-emulators en verbonden fysieke apparaten. Navigatie werkt met pijltoetsen, muis is niet nodig.

Hier zijn praktische scenario's waarin het tooltje tijd bespaart:

  • Met één klik starten. Selecteer een apparaat, druk op Enter en het start op de achtergrond.
  • Android-opstartmodus selectie. Door op Spatie te drukken opent een menu: normale start, Cold Boot, starten zonder geluid, of koude start zonder audio direct.
  • Draadloze ADB-verbinding. De utility kan fysieke smartphones verbinden via IP, een zescijferige koppelingscode, of via een QR-code direct in de terminal.
  • Ingebouwde Logcat-viewer. Je kunt systeemlogs van het geselecteerde Android-apparaat lezen en ze direct filteren zonder de utility te verlaten.
  • Snelle Xcode-cache-opschoning. Op macOS toont het indrukken van de x-toets de grootte van de DerivedData-map en biedt het aan om deze te verwijderen.

Simutil Showcase Image

Aangepaste plugins via YAML

Een interessant detail: de auteur heeft niet alle mogelijke externe tools in de binary hard gecodeerd, maar heeft een plugin-systeem via config gemaakt.

Bij de eerste start wordt een ~/.simutil/settings.yaml bestand aangemaakt. Je kunt hierin aanroepen naar elke console-utility beschrijven, ze binden aan sneltoetsen. Hier is bijvoorbeeld hoe een kant-en-klare integratie met scrcpy voor Android-schermspiegeling eruitziet:

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

Druk op s op een draaiend apparaat — het scrcpy-venster opent. De config ondersteunt substitutievariabelen zoals {device.id} en {device.name}, dus je kunt eenvoudig Maestro-testruns of aangepaste bash-scripts toevoegen. Om het instellingenbestand te bewerken, druk je gewoon op e binnen de interface.

Technische details

Het project is geschreven in Dart. De Nocterm-bibliotheek wordt gebruikt voor het bouwen van de terminalinterface, en de syntaxis lijkt sterk op de vertrouwde widget-gebaseerde aanpak in Flutter.

Qua platforms: simutil zelf werkt op macOS, Linux en Windows. Maar er zijn OS-limitaties die niet vermeden kunnen worden. iOS-simulators draaien uitsluitend op macOS omdat ze afhankelijk zijn van Apple-systeemutilities (simctl en devicectl). Op Linux en Windows richt de utility zich alleen op het werken met Android, Logcat en draadloze ADB.

Installatie en setup

Je kunt simutil op verschillende manieren installeren.

Via Homebrew op macOS en Linux:

brew tap dungngminh/simutil
brew install simutil

Met een universeel installatiescript:

curl -fsSL https://raw.githubusercontent.com/dungngminh/simutil/main/install.sh | bash

Voor Windows via PowerShell:

powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dungngminh/simutil/main/install.ps1 | iex"

Als je de Dart SDK al geïnstalleerd hebt:

dart pub global activate simutil

Na installatie voer je het commando uit:

simutil

Voor wie is dit nuttig

Het tooltje zal aanspreken bij degenen die lichtgewicht editors zoals VS Code, Zed of Neovim verkiezen en geen zware ontwikkelomgevingen willen openen alleen voor een emulator-manager. Het dekt basis testbehoeften en schakelen tussen apparaten in een paar toetsaanslagen.

Gerelateerde projecten