unityでいってみよう!

unityがチョットワカル位の人のブログ

UnityEditorからadbコマンドを実行してみよう!

概要

Android SDKに含まれるadbコマンドをUnityEditor上から実行する方法に関するお話しです。

結論

スクリプトリファレンスには記載が無いですが、実はUnityEditor.Android配下にADBクラスが存在しているのでそれを使えば簡単にUnityEditor上からadbコマンドを実行することが可能です。

スクリプトリファレンス

ADB

class in UnityEditor.Android

説明

UnityEditorからadbコマンドを実行する為のシングルトンクラスです。

Public関数

GetInstance

public static ADB GetInstance()

説明

ADBクラスのインスタンスを取得します。 ※ADBクラスはシングルトンであり、newではなくこちらのAPIを使用してインスタンスを取得します。

GetADBPath

public string GetADBPath()

説明

UnityEditorが参照しているadbへのパスを取得します。

Run

public string Run(string[] command,string errorMsg)

パラメータ
command adbコマンドに渡す引数
errorMsg エラーが発生した場合に表示する文字列
説明

引数で指定したコマンドをadbで実行します。

実行例

接続されているデバイス上で(X,Y)=(100,200)のスクリーン座標でTouchイベントを発生させる

var x = 100;
var y = 200;

ADB.GetInstance().Run(new string[] { "shell", "input", "touchscreen", "motionevent", "DOWN", $"{x}", $"{y}" }, "");

Runの引数が文字列の配列になっている為、コマンド単位で区切っていますが、string.Join(" ", command)としているだけなので、初めから連結して渡しても問題ありません。

接続されているデバイス上でバックボタン(ESCAPE)イベントを発生させる

ADB.GetInstance().Run(new string[] { "shell","input","keyboard","keyevent","4" }, "");

AndroidDeveloperリファレンスによるとESCAPEのキーコードは4です。

その他

エラーが出た場合、他の誰かがadbを実行している可能性が高いです。 タスクマネージャーからadbのプロセスをKILLしてから改めて試してみてください、

以上