mcpField
G
genymotion

genymotion

github.com/genymobileテスト・品質950 回インストール34 週間前に更新
リポジトリ

genymotion について

genymotionは、クラウドまたはローカルのGenymotion仮想デバイスを管理する統合スキルです。環境の確認から操作、状態検証までを案内します。

主な機能

  1. 01SaaSクラウドとDesktopローカルのデバイス管理
  2. 02CLIツールと認証またはライセンスの確認
  3. 03プラットフォーム別ガイドに沿った操作
  4. 04デバイスの起動・停止状態の検証
  5. 05クラウド表示とCI/CDワークフローへの対応

活用シーン

  1. 01クラウドAndroidデバイスの起動とAPKのインストール
  2. 02ローカルデバイスの起動とログ取得
  3. 03ウェブページでのクラウドデバイス表示
  4. 04SaaSを使ったCI/CDテストの設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/genymobile/genymotion-skills --skill genymotion

インストール後、Claude Code で/genymotionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
references/
device-web-player-reference.md
gmtool-reference.md
cicd-reference.md
setup-gmsaas.md
setup-gmtool.md
gmsaas-reference.md
templates/
device-web-player.html
tests/
trigger-tests.md

詳細

Genymotion 統合スキル

このスキルは、Genymotion の仮想デバイス管理タスクすべての主要なエントリーポイントです。 gmsaas 経由の Genymotion SaaS と、gmtool 経由の Genymotion Desktop の両方を扱います。


ステップ 1 — 対象プラットフォームを確認する

ユーザーの依頼で Cloud か Local かが明確に指定されていない場合は、作業を進める前に確認してください。

AskUserQuestion:
  "Which platform do you want to use?"
  Options:
    - "Genymotion SaaS / Cloud (gmsaas) — remote device in the cloud"
    - "Genymotion Desktop / Local (gmtool) — local device on this machine"

Cloud を示すキーワード:「cloud」、「SaaS」、「remote」、「gmsaas」、「Genymotion Cloud」 Local を示すキーワード:「local」、「desktop」、「gmtool」、「on my machine」


ステップ 2 — 前提条件を確認する

Genymotion SaaS(gmsaas)の場合

ステップ 2a — gmsaas の場所を特定する

まず OS を判別し、gmsaas が PATH で利用可能か確認します。

  • Linux / macOS:which gmsaas

  • Windows(PowerShell):where.exe gmsaas

  • PATH で見つかった場合:以降のすべてのコマンドで gmsaas を直接使用します。

  • PATH で見つからない場合:自分でディレクトリを検索してはいけません。ユーザーに尋ねてください。

「gmsaas が PATH に見つかりませんでした。gmsaas がインストールされている Python 仮想環境はありますか?」

  • はい — venv のパスをお知らせください
  • いいえ — gmsaas をインストールする必要があります
  • ユーザーから venv のパスが提供された場合は、適切なバイナリを使用します。
    • Linux / macOS:<venv_path>/bin/gmsaas
    • Windows:<venv_path>\Scripts\gmsaas
  • gmsaas がインストールされていない場合は、references/setup-gmsaas.md に従います。

ステップ 2b — 認証を確認する

gmsaas の場所を特定したら、gmsaas doctor を実行して設定を確認します。

gmsaas が見つかっているものの、認証されていない場合は、gmsaas doctor で問題を特定し、ユーザーの設定を案内してください。

セキュリティ — Bash ツール経由で gmsaas auth token <token> を決して実行しないでください。 トークンがシェルの履歴に露出します。代わりに、ユーザー自身のターミナルで実行できるよう、コマンドを表示してください。

# Linux / macOS:
export GENYMOTION_API_TOKEN="your_token"

# Windows (PowerShell):
$env:GENYMOTION_API_TOKEN = "your_token"

Genymotion Desktop(gmtool)の場合

実行:gmtool version

gmtool が見つからない場合は、references/setup-gmtool.md に従います。

gmtool が見つかったものの、ライセンスが無効な場合(終了コード 9):

gmtool license info                  # Check licence status
gmtool license register <key>        # Register a licence key

ステップ 3 — 依頼された操作を実行する

プラットフォームが確認され、前提条件が満たされたら、該当するリファレンスファイルを読み、その指示に従います。

  • Genymotion SaaS(gmsaas)の場合 → references/gmsaas-reference.md を読みます
  • Genymotion Desktop(gmtool)の場合 → references/gmtool-reference.md を読みます

リファレンスファイルは references/ ディレクトリにあります。

  • references/gmsaas-reference.md
  • references/gmtool-reference.md

起動/停止操作を検証する

起動または停止コマンドを実行した後は、必ず実際の状態を確認してください。 コマンドの終了コードやエラー出力がないことだけを根拠に、成功したと判断してはいけません。

Genymotion SaaS(gmsaas)

gmsaas instances start の実行後:

次の方法で、ステータスが ONLINE になるまでポーリングします。

Repeat up to 10 times (max ~5 minutes):
  Run: gmsaas instances get <instance_uuid>
  If status = "ONLINE"  → proceed, inform the user the instance is ready
  If status = "BOOTING" → wait 30 seconds, then retry
  If status is anything else (ERROR, DELETING, unknown) → stop polling, inform the user and suggest checking https://cloud.geny.io/instances

If still not ONLINE after 10 attempts (~5 minutes):
  → Inform the user: "The instance is taking longer than expected to start.
     You can check its status at https://cloud.geny.io/instances or run:
     gmsaas instances get <instance_uuid>"
  → Do not proceed with ADB connect or further steps

ポーリングのたびに、何をしているのかをユーザーに伝えてください。「インスタンスは BOOTING 状態です。30 秒後に再確認します(N/10 回目)…」

gmsaas instances adbconnect の実行後:

adb devices
# Expected: instance appears in the list (e.g. "localhost:5555  device")
# If list is empty despite successful adbconnect:
#   → The local ADB daemon may not be running. Start it:
gmsaas adb start
#   → Then retry: adb devices
# If still empty: run gmsaas doctor to check the Android SDK path configuration

gmsaas instances stop の実行後:

gmsaas instances list
# Expected: instance no longer appears in the list
# Or: gmsaas instances get <instance_uuid> → status = "STOPPED" / "OFFLINE"
# If instance still appears as running: retry the stop command or ask the user to check the cloud dashboard
Genymotion Desktop(gmtool)

gmtool admin start <device> の実行後:

gmtool admin list --running
# Expected: device appears in the list with State = On
# If not listed: check exit code, try gmtool admin details <device> for more info

gmtool admin stop <device> の実行後:

gmtool admin list --off
# Expected: device appears with State = Off
# If still listed as running: retry stop or ask the user to close Genymotion Desktop

検証した状態をユーザーに伝えてください。「デバイスが起動しました」とは言わず、「デバイスが実行中であることを確認しました。gmtool admin list --running に State = On と表示されています」と伝えてください。


SaaS インスタンスを停止する

このフローを開始するキーワード:「stop」、「arrêter」、「delete」、「supprimer」、「shut down」、「kill」と、「instance」、「cloud」、「gmsaas」のいずれかの組み合わせ

SaaS インスタンスは実行中の間、料金が発生します。ユーザーのタスクが完了したとき、または料金を避ける方法を尋ねられたときは、必ずインスタンスの停止を提案してください。

1 つのインスタンスを停止する
# List running instances to get the UUID
gmsaas instances list

# Stop the instance
gmsaas instances stop <instance_uuid>
実行中のすべてのインスタンスを停止する

ユーザーがすべてを一度に停止したい場合:

# List all running instances and stop each one
gmsaas instances list
# Then for each instance UUID:
gmsaas instances stop <instance_uuid>

先回りした案内:SaaS インスタンスを起動するワークフロー(APK のインストール、テスト、表示など)の後には、料金が発生しないよう、終了後にインスタンスを停止するようユーザーに必ず伝えてください。 「終了したら、料金が発生しないようにインスタンスを停止することをお忘れなく:gmsaas instances stop <instance_uuid>」


SaaS インスタンスを表示する

このフローを開始するキーワード:「display」「open」「show」「view」と、「cloud instance」「SaaS instance」または「gmsaas instance」の組み合わせ

ユーザーが実行中の SaaS インスタンスを表示したい場合は、次の選択肢を提示してください。

AskUserQuestion:
  "How would you like to display your Genymotion SaaS instance?"
  Options:
    - "Open in the Genymotion Cloud web interface"
    - "Open via gmsaas instances display (opens and copies the link to clipboard)"
    - "Embed it in a custom web page (device-web-player SDK)"
前提条件
  • 実行中の SaaS インスタンス(まだ起動していない場合は、先に起動します。ステップ 2 を参照)
  • まだわからない場合は、インスタンス UUID を取得します:gmsaas instances list

レシピは、仮想デバイスの構成(Android のバージョンとハードウェアプロファイル)を定義します。 デバイスのテンプレートと考えてください。インスタンスを起動する前に、レシピ UUID を選択する必要があります。 次のコマンドで利用可能なレシピを一覧表示します:gmsaas recipes list

オプション 1 — Genymotion Cloud のウェブインターフェースで開く

ブラウザーで直接開ける URL をユーザーに提示します:

https://cloud.geny.io/instance/<instance_uuid>

事前に https://cloud.geny.io にログインしている必要があります。初めて利用する場合や、セッションの有効期限が切れている可能性がある場合は、ログインするようユーザーに伝えてください。

オプション 2 — gmsaas instances display で開く
gmsaas instances display <instance_uuid>

注:このコマンドはインスタンスの表示リンクをクリップボードにコピーし、既定のブラウザーで自動的に開く場合があります。リンクがクリップボードにコピーされたことをユーザーに伝えてください。

オプション 3 — カスタムウェブページに埋め込む

→ 下記の ウェブページに SaaS インスタンスを表示する(device-web-player) セクションに従ってください。


ウェブページに SaaS インスタンスを表示する(device-web-player)

このフローを開始するキーワード:「web page」「embed」「browser」「device-web-player」「html page」「integrate」「web player」と、「cloud instance」または「SaaS」の組み合わせ

references/device-web-player-reference.md を読み、ステップごとのワークフローセクションに従ってください。

常に適用する重要な動作:

  • Bash ツールから curl コマンドを絶対に実行しないでください — シークレットが返されます
  • トークンをチャットに貼り付けるよう、ユーザーに絶対に求めないでください — ユーザー自身のターミナルで実行するコマンドを提示してください
  • 常に 2 つの選択肢を提示してください:既定のテンプレート(templates/device-web-player.html)またはカスタムデザイン
  • WebRTC が動作するよう、file:// ではなく HTTP 経由で配信するようユーザーに伝えてください

CI/CD 統合

このフローを開始するキーワード:「CI/CD」「pipeline」「GitHub Actions」「Jenkins」「Bitrise」「CircleCI」「continuous integration」「automated tests」「Detox」「Appium」と、「Genymotion」または「SaaS」の組み合わせ

CI/CD 統合は Genymotion SaaS(gmsaas)でのみサポートされており、Genymotion Desktop(gmtool)ではサポートされていません。 ユーザーが Genymotion Desktop での CI/CD について尋ねた場合は、この制限を説明し、SaaS を案内してください。

プラットフォームごとのチュートリアルと一般的な統合パターンについては、references/cicd-reference.md を読んでください。


ワークフローの概要

1. Identify the target platform (Cloud or Local) → ask if ambiguous
2. Check prerequisites (gmsaas or gmtool installed + authenticated/licensed)
   → If missing: guide the user through installation step by step
3. Read the corresponding reference file
4. Identify the requested action
5. Collect missing parameters (name, UUID, profile…) via list + AskUserQuestion
6. Execute the command via Bash
7. Verify the result with the appropriate check command (see "Verify Start / Stop Operations")
8. Report the verified state to the user — never assume success without checking
9. Handle errors (show the message + suggest a solution)
10. [SaaS only] Remind the user to stop the instance when done to avoid charges

例

例 1 — Cloud インスタンスを起動して APK をインストールする

ユーザーの発言:「Genymotion Cloud で Pixel 8 を起動して、app.apk をインストールして」

操作:

  1. プラットフォームが Cloud であることを検出 → gmsaas を確認
  2. gmsaas recipes list → Pixel 8 のレシピを選ぶようユーザーに依頼
  3. gmsaas instances start <recipe_uuid> "pixel-8" --max-run-duration 3600
  4. gmsaas instances get <instance_uuid> → 続行する前にステータスが ONLINE であることを確認
  5. gmsaas instances adbconnect <instance_uuid>
  6. adb install app.apk
  7. 終了後に実行するコマンドをユーザーに伝えます:gmsaas instances stop <instance_uuid>

結果:稼働中の Cloud インスタンスに APK がインストールされ、実行されています。ADB 接続の前にインスタンスの状態を確認しました。料金が発生しないよう、インスタンスを停止するようユーザーに伝えています。


例 2 — ローカルのデスクトップデバイスを起動してデバッグする

ユーザーの発言:「Android 13 のデバイスをローカルで起動して、ログを見せてください」

操作:

  1. プラットフォーム = Local を検出 → gmtool を確認する
  2. gmtool admin list → Android 13 のデバイスを特定する
  3. gmtool admin start "Pixel 7 API 33"
  4. gmtool admin list --running → State = On でデバイスが表示されることを確認する
  5. gmtool device logcatdump -n "Pixel 7 API 33" ~/debug.log

結果:ログを取得する前にデバイスを起動し、実行中であることを確認しました。


例 3 — Web ページにクラウドインスタンスを埋め込む

ユーザーの発言:「Genymotion インスタンスを HTML ページに表示するにはどうすればよいですか?」

操作:

  1. フロー = device-web-player を検出する
  2. インスタンスが実行中か確認する → gmsaas instances list
  3. ユーザーに確認する:デフォルトのテンプレートにするか、カスタムデザインにするか
  4. templates/device-web-player.html をコピーする(またはカスタムで生成する)
  5. ユーザーがターミナルで実行する curl コマンドを表示する(webrtc_url + アクセストークン)
  6. REPLACE_WITH_WSS_ADDRESS と REPLACE_WITH_ACCESS_TOKEN を置き換えるようユーザーに指示する
  7. HTTP 経由で配信するよう注意を促す:python3 -m http.server 8080

結果:WebRTC 経由でデバイスをストリーミングする、すぐに使える HTML ページが完成します。


例 4 — GitHub Actions パイプラインに Genymotion を設定する

ユーザーの発言:「GitHub Actions の CI で Genymotion を使うにはどうすればよいですか?」

操作:

  1. フロー = CI/CD を検出する → references/cicd-reference.md を読む
  2. 明確にする:CI/CD は Genymotion SaaS でのみサポートされ、Desktop ではサポートされません
  3. GitHub Actions リソースを案内する:https://github.com/marketplace/actions/genymotion-saas-action
  4. 一般的な流れを示す:認証 → インスタンスを起動 → adbconnect → テストを実行 → インスタンスを停止
  5. GENYMOTION_API_TOKEN を CI シークレットとして保存するよう注意を促す

結果:ユーザーは CI パイプラインを構築するための実用的な出発点を得られます。


トラブルシューティング

PATH に gmsaas が見つからない

原因:gmsaas がインストールされていないか、PATH に設定されていません。 解決策:which gmsaas(Linux/macOS)または where.exe gmsaas(Windows)を実行します。見つからない場合は、references/setup-gmsaas.md を参照してください。virtualenv にインストールされている場合は、完全なパスを指定します:<venv>/bin/gmsaas または <venv>\Scripts\gmsaas。

認証エラー — 401 / Unauthorized

原因:API トークンが設定されていない、期限切れ、または取り消されています。 解決策:gmsaas doctor を実行して問題を特定します。環境変数でトークンを設定します(Bash ツールでは実行しないでください)。

  • Linux/macOS:export GENYMOTION_API_TOKEN="your_token"
  • Windows:$env:GENYMOTION_API_TOKEN = "your_token"
インスタンスが BOOTING のまま停止している

原因:クラウドインスタンスの起動には 1〜3 分かかることがあります。まれに、インスタンスの起動に失敗する場合があります。 解決策:gmsaas instances get <uuid> を 30 秒ごとに最大 10 回ポーリングします。5 分経っても ONLINE にならない場合は、ユーザーに伝え、https://cloud.geny.io/instances を案内してください。

adbconnect 後に adb devices が空になる

原因:ローカルの ADB デーモンが実行されていません。 解決策:gmsaas adb start を実行してから、adb devices を再試行します。それでも空の場合は、gmsaas doctor を実行して Android SDK のパスを確認します。

gmtool ライセンスが有効化されていない(終了コード 9)

原因:Genymotion Desktop のライセンスが登録されていません。 解決策:gmtool license info で状態を確認し、続けて gmtool license register <key> で有効化します。

gmtool でデバイスが見つからない(終了コード 5)

原因:デバイス名が正しくないか、デバイスがまだ作成されていません。 解決策:gmtool admin list を実行して、正確なデバイス名を確認します。デバイスが存在しない場合は、先に作成してください。

gmtool の仮想化エンジンが応答しない(終了コード 4)

原因:Genymotion Desktop が実行されていないか、ハイパーバイザーがクラッシュしました。 解決策:Genymotion Desktop を開き、準備が整うまで待ってから再試行します。


使用するツール

  • Bash — gmsaas と gmtool の実行に使用します
  • AskUserQuestion — プラットフォームを明確にし、不足しているパラメーターを収集するために使用します
  • Read — 参照ファイル references/gmsaas-reference.md、references/gmtool-reference.md、references/device-web-player-reference.md を読むために使用します
  • Glob / Read — ローカルの APK ファイルまたはアーカイブを探すために使用します

コメント