経緯/現象
Unity 2019.4 (LTS) を使用して、とあるサンプルプロジェクトを Android 11 (Pixel 4a(5G)) 上でBuild and Runしようとしたところ、以下のようなエラーダイアログが表示され、Android実機での実行に失敗した(実行できなかった)。
Unable to start ADB server. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.
使用環境は以下の通り。
- PC
- Windows 10 20H2
- Unity 2019.4.30f1
- Unity HubからUnity 2019.4をインストールする際、Android Build Supportにチェックを入れてAndroid SDKのモジュールもインストール
- 実機
- Google Pixel 4a (5G)
- Android 11
- PCとUSB接続し、開発者モードを有効化済み
原因
結論
先に結論から言うと、Unity HubからインストールしたAndroid SDKが古い。
Android 11内にあるADBとバージョンが合っていない模様。
原因調査の詳細
UnityのConsoleを見ると、以下のようなエラーメッセージが表示されている。
Unable to start ADB server.
とあるので、どうもADBコマンドが失敗しているように見える。
CommandWithNoStdoutInvokationFailure: Unable to start ADB server. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.
UnityEditor.Android.Command.RunWithShellExecute (System.String command, System.String args, System.String workingdir, System.String errorMsg) (at :0)
コマンドプロンプトを使用して、Unity内のADB(Platform Tools)のある場所に cd
して直接 adb devices
コマンドを打つと、実際にエラーになるのが確認できる。
※ADBのコマンドは https://developer.android.com/studio/command-line/adb?hl=ja を参照。
2019.4.30f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools>adb devices
List of devices attached
adb server version (39) doesn't match this client (40); killing...
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon
メッセージではADBのバージョンがマッチしないよと言っているので、 adb version
コマンドでバージョンを確認してみる。
2019.4.30f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools>adb version
Android Debug Bridge version 1.0.40
Version 4986621
Installed as 2019.4.30f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe
執筆時点でのADB最新バージョンは31.0.3なので、めちゃくちゃに古いことが分かる。
https://developer.android.com/studio/releases/platform-tools
解決策
Unity HubでインストールしたAndroid SDKを使用するのではなく、手動で最新のAndroid SDKをダウンロード&インストールして、それをUnity側に設定するようにする1。
最新のAndroid Studioのインストールと設定
最新のAndroid Studioをダウンロードし、同梱されているSDK Managerを使用して設定を行う。
- Android Studioをインストール2
- Android Studioを起動
- More Actions → SDK Manager
- 左メニューのAppearance & Behavior → System Settings → Android SDK
- Android SDK Locationを好きな場所に設定しておく(ここでは
xxx\Android\SDK
とする) - SDK Platformsタブで、Android 10や11にチェック
- SDK Toolsタブで、Android SDK Platform-Toolsにチェック
- OKしてインストール(時間がかかる)
- Android SDK Locationを好きな場所に設定しておく(ここでは
- 左メニューのAppearance & Behavior → System Settings → Updates
- 右上のCheck Nowボタン
- これで全部最新になる
Unity側の設定
Android Studio側の設定が終わったら、Unity 2019.4側の設定を変更して、落としてきたAndroid SDKを参照するようにする。
- ツールバーからEdit → Preferences
- 左メニューのExternal Tools
-
Android SDK Tools Installed with Unity
の左にあるチェックを外す - Browseボタンを押して、先ほどのAndroid SDK Locationに指定したフォルダ(
xxx\Android\SDK
)を設定する
いざ再ビルド
設定を終えたら、サンプルプロジェクトのBuild and Runをする。
無事、Android実機上でサンプルコードが実行できた!