Bigdra.Log

備忘録

Unityエディターが使用中のadbを取得する

はじめに

UnityでAndroid開発をしている際に、 開発に使用中のUnityエディタが使用しているadbをCLIから呼び出したいことがあります。

例えば、 wi-fi経由でadb接続して無線で Build And RunAndroid Logcat など使用したいときです。

https://qiita.com/niusounds/items/ceacb5291c80dcbb4041

このような場合には、Unityエディタが使用するadbでAndroidバイスと接続している必要があります。

そのためには、 Unityバージョン毎に適切なadbパスを指定して実行する必要がありますが、毎回長いadbのパスを指定するのも面倒です。

そこで、 カレントディレクトリのUnityバージョン用のadbを取得するシェル用の関数を用意しました。

本題

Unityで使用されるadbは、 Unityエディタの各バージョン毎に用意されています。

そして、 adbは次の場所にあります。

UnityEditorのインストール場所/20xx.x.xf1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/platform-tools/

UnityEditorのインストール場所はUnityHubの環境設定から確認できます。

Unityプロジェクトが使用しているエディタのバージョン情報は、 ProjectSettings/ProjectVersion.txt に記述されています。

m_EditorVersion: 2021.3.6f1
m_EditorVersionWithRevision: 2021.3.6f1 (7da38d85baf6)

ここからUnityバージョンのみ取り出します。

function unity-version {
    cat .\ProjectSettings\ProjectVersion.txt | Select-String "m_EditorVersion:" | %{$($_-split(" "))[1]}
}
function unity-version(){
    cat ./ProjectSettings/ProjectVersion.txt | grep "m_EditorVersion:" | awk -F" " '{print $2 }'
}

このコマンドをUnityプロジェクトのルートで実行すると、 2021.3.6f1 のようにそのプロジェクトのUnityエディタバージョンが出力されます。

次に、 adbパスを取得します。

function uadb {
    & "E:\archives/UnityEditor/$(unity-version)\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe" $args
}
function uadb {
    eval "/Applications/Unity/Hub/Editor/${unity-version}/PlayBackEngines/AndroidPlayer/SDK/platform-tools/adb" $@
}

Unityエディタのインストール場所は適宜置き換えてください。

これで、 uadb というコマンドでUnityエディタが使用しているadbを呼び出せるようになりました。

$ uadb --version                                                                      ─╯
Android Debug Bridge version 1.0.41
Version 30.0.4-6686687
Installed as E:\archives\UnityEditor\2021.3.6f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe