ヘビーなIDEを開かずにエミュレータを起動する方法

Flutter、React Native、ネイティブスタックを使ってモバイルプラットフォーム向けに開発している場合、このルーティンに馴染みがあるかもしれません。古いPixelや新しいiPhoneでレイアウトを素早く確認したいとき、電力消費の激しいAndroid StudioやXcodeを開いたままにするか、emulator -avdとxcrun simctl bootのコマンド構文を毎回思い出さなければならないかのどちらかです。
最近、simutilという小さなユーティリティを見つけました。テキストベースのユーザーインターフェース(TUI)を備えており、仮想デバイスと物理デバイスをすべて1つのターミナルウィンドウにまとめます。

このツールできること
インターフェースは整理されたパネルに分かれています。iOSシミュレータ、Androidエミュレータ、接続された物理デバイスのリストを確認できます。ナビゲーションは矢印キーで行い、マウスは不要です。
このツールが時間を節約できる実用的なシナリオは次のとおりです:
- ワンクリック起動。デバイスを選択してEnterを押すだけで、バックグラウンドで起動します。
- Android起動モード選択。Spaceを押すとメニューが開き、通常起動、コールドブート、音声なし起動、音声なしコールドスタートを選択できます。
- ワイヤレスADB接続。物理スマートフォンをIP、6桁のペアリングコード、ターミナル内のQRコードで接続できます。
- 組み込みLogcatビューア。選択したAndroidデバイスからシステムログを読み取り、その場でフィルタリングでき、ユーティリティから離れる必要はありません。
- クイックXcodeキャッシュクリーンアップ。macOSでは、
xキーを押すとDerivedDataフォルダのサイズが表示され、削除を提案します。

YAMLによるカスタムプラグイン
興味深い詳細として、著者はすべての外部ツールをバイナリにハードコードせず、configによるプラグインシステムを作成しました。
初回起動時に、~/.simutil/settings.yamlファイルが作成されます。この中で任意のコンソールユーティリティの呼び出しを記述し、ホットキーにバインドできます。たとえば、Android画面ミラーリング用のscrcpyとの готовый 統合は次のようになります:
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
実行中のデバイスでsを押すと、scrcpyウィンドウが開きます。configは{device.id}や{device.name}などの置換変数をサポートしているため、Maestroテスト実行や任意のカスタムbashスクリプトを簡単に追加できます。設定ファイルを編集するには、インターフェース内でeを押すだけです。
技術的な詳細
このプロジェクトはDartで書かれています。ターミナルインターフェース構築にはNoctermライブラリが使用されており、その構文はFlutterでおなじみのウィジェットベースのアプローチに得非常によく似ています。
プラットフォームについては:simutil自体はmacOS、Linux、Windowsで動作します。しかし、回避できないOSの制限があります。iOSシミュレータは、Appleのシステムユーティリティ(simctlやdevicectlなど)に依存しているため、macOS exclusvelyでのみ動作します。LinuxとWindowsでは、Android、Logcat、ワイヤレスADBの操作のみに焦点が当てられています。
インストールとセットアップ
simutilはいくつかの方法でインストールできます。
macOSおよびLinuxでのHomebrew経由:
brew tap dungngminh/simutil
brew install simutil
универсальный インストールスクリプトを使用する場合:
curl -fsSL https://raw.githubusercontent.com/dungngminh/simutil/main/install.sh | bash
WindowsでのPowerShell経由:
powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dungngminh/simutil/main/install.ps1 | iex"
Dart SDKがすでにインストール済みの場合は:
dart pub global activate simutil
インストール後、次のコマンドを実行します:
simutil
誰が役立つのか
このツールは、VS Code、Zed、Neovimなどの軽量エディタを好み、重い開発環境を単にエミュレータマネージャのために開きたくない人々にアピールします。基本的なテストニーズと、数回のキー操作でのデバイス間の切り替えをカバーしています。
関連プロジェクト