Unityエディターが使用中のadbを取得する
はじめに
UnityでAndroid開発をしている際に、 開発に使用中のUnityエディタが使用しているadbをCLIから呼び出したいことがあります。
例えば、 wi-fi経由でadb接続して無線で Build And Run
や Android 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