Unityとは別プロジェクトでAndroid SDKを使用している時は注意する
問題
背景
- Unityが参照するadbバージョンと別プロジェクト(Android Studio等でインストール)で使用中のadbバージョンが異なっていた
- Unity-editorでandroidのモジュールを追加した際、独自にandroid-sdkをインストールしている
- adbのありかは、
Applications/Unity/Hub/Editor/[unity-version]/PlaybackEngines/AndroidPlayer/SDK/Platform-tools/
- Unityが参照するAndroid SDKのパスは
Edit>Preferences>External Tools>Android>SDK
で確認可能
- Unityが参照するAndroid SDKのパスは
- 一方で、Android Studioで認識しているのは
~/Library/Android/sdk
- .zshrcにplatform-toolsへのパスを登録していた
.zshrc
export PATH="$PATH":"/Users/[username]/Library/Android/sdk/platform-tools/"
原因
- Unity起動中に
adb devices
などのコマンドを打つと、adbサーバーバージョンが異なるため、Android Studioが参照するadbサーバーに切り替わってしまい、Unity側から端末を認識できなかった。
$ adb devices
adb server version (40) doesn't match this client (41); killing...
補足
adbはadbクライアントとadbサーバーから構成される。
adbの仕組み
adb クライアントを起動すると、まず稼働中の adb サーバー プロセスがすでに存在していないかどうかがチェックされます。サーバー プロセスが存在しない場合は、クライアントによりサーバー プロセスが起動します。