Jak przestać uruchamiać ciężkie IDE tylko po to, żeby uruchomić jeden emulator

Jeśli tworzysz aplikacje mobilne przy użyciu Flutter, React Native lub natywnego stosu technologicznego, prawdopodobnie znasz tę rutynową czynność. Chcesz szybko sprawdzić układ na starym Pixelu lub nowym iPhonie. W tym celu albo trzymasz otwarte prądożerne Android Studio i Xcode, albo musisz za każdym razem pamiętać składnię poleceń dla emulator -avd i xcrun simctl boot.
Ostatnio natknąłem się na simutil. To małe narzędzie z interfejsem tekstowym (TUI), które gromadzi wszystkie Twoje urządzenia wirtualne i fizyczne w jednym oknie terminala.

Co potrafi to narzędzie
Interfejs jest podzielony na przejrzyste panele. Możesz zobaczyć listę symulatorów iOS, emulatorów Androida i podłączonych urządzeń fizycznych. Nawigacja odbywa się za pomocą klawiszy strzałek, bez potrzeby używania myszy.
Oto praktyczne scenariusze, w których narzędzie oszczędza czas:
- Uruchomienie jednym kliknięciem. Wybierz urządzenie, naciśnij Enter, a uruchomi się w tle.
- Wybór trybu uruchomienia Androida. Naciśnięcie Spacji otwiera menu: normalne uruchomienie, Cold Boot, uruchomienie bez dźwięku lub zimny start bez dźwięku od razu.
- Bezprzewodowe połączenie ADB. Narzędzie może łączyć fizyczne smartfony przez IP, sześciocyfrowy kod parowania lub przez kod QR bezpośrednio w terminalu.
- Wbudowana przeglądarka Logcat. Możesz czytać logi systemowe z wybranego urządzenia Android i filtrować je w locie bez opuszczania narzędzia.
- Szybkie czyszczenie cache Xcode. Na macOS naciśnięcie klawisza
xpokaże rozmiar folderu DerivedData i zaproponuje jego usunięcie.

Wtyczki niestandardowe przez YAML
Interesujący szczegół: autor nie wpisał na twardo wszystkich możliwych zewnętrznych narzędzi w binarny plik wykonywalny, lecz stworzył system wtyczek poprzez konfigurację.
Przy pierwszym uruchomieniu tworzony jest plik ~/.simutil/settings.yaml. Możesz w nim opisać wywołania dowolnych narzędzi konsolowych, wiążąc je ze skrótami klawiszowymi. Na przykład tak wygląda gotowa integracja ze scrcpy do lustrzanego wyświetlania ekranu Androida:
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
Naciśnij s na działającym urządzeniu — otworzy się okno scrcpy. Konfiguracja obsługuje zmienne podstawienia, takie jak {device.id} i {device.name}, więc możesz łatwo dodać uruchomienia testów Maestro lub dowolne niestandardowe skrypty bash. Aby edytować plik ustawień, po prostu naciśnij e w interfejsie.
Szczegóły techniczne
Projekt jest napisany w Dart. Biblioteka Nocterm służy do budowania interfejsu terminala, a jej składnia jest bardzo podobna do znanego podejścia opartego na widżetach we Flutter.
Jeśli chodzi o platformy: simutil działa na macOS, Linuksie i Windows. Ale są ograniczenia systemowe, których nie można uniknąć. Symulatory iOS działają wyłącznie na macOS, ponieważ zależą od narzędzi systemowych Apple (simctl i devicectl). Na Linuksie i Windows narzędzie koncentruje się wyłącznie na pracy z Androidem, Logcat i bezprzewodowym ADB.
Instalacja i konfiguracja
Simutil można zainstalować na kilka sposobów.
Przez Homebrew na macOS i Linuksie:
brew tap dungngminh/simutil
brew install simutil
Za pomocą uniwersalnego skryptu instalacyjnego:
curl -fsSL https://raw.githubusercontent.com/dungngminh/simutil/main/install.sh | bash
Dla Windows przez PowerShell:
powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dungngminh/simutil/main/install.ps1 | iex"
Jeśli masz już zainstalowany Dart SDK:
dart pub global activate simutil
Po instalacji uruchom polecenie:
simutil
Dla kogo to będzie przydatne
Narzędzie spodoba się tym, którzy preferują lekkie edytory, takie jak VS Code, Zed czy Neovim, i nie chcą otwierać ciężkich środowisk programistycznych tylko po to, żeby zarządzać emulatorami. Zaspokaja podstawowe potrzeby testowania i przełączania się między urządzeniami za pomocą kilku naciśnięć klawiszy.
Powiązane projekty