LoginSignup
0
0

More than 1 year has passed since last update.

Unity2019.4 + Android11でビルドエラーになったときの対策

Last updated at Posted at 2021-09-30

経緯/現象

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を使用して設定を行う。

  1. Android Studioをインストール2
  2. Android Studioを起動
  3. More Actions → SDK Manager
  4. 左メニューのAppearance & Behavior → System Settings → Android SDK
    • Android SDK Locationを好きな場所に設定しておく(ここでは xxx\Android\SDK とする)
    • SDK Platformsタブで、Android 10や11にチェック
    • SDK Toolsタブで、Android SDK Platform-Toolsにチェック
    • OKしてインストール(時間がかかる)
  5. 左メニューのAppearance & Behavior → System Settings → Updates
    • 右上のCheck Nowボタン
    • これで全部最新になる

Unity側の設定

Android Studio側の設定が終わったら、Unity 2019.4側の設定を変更して、落としてきたAndroid SDKを参照するようにする。

  1. ツールバーからEdit → Preferences
  2. 左メニューのExternal Tools
  3. Android SDK Tools Installed with Unity の左にあるチェックを外す
  4. Browseボタンを押して、先ほどのAndroid SDK Locationに指定したフォルダ(xxx\Android\SDK)を設定する

いざ再ビルド

設定を終えたら、サンプルプロジェクトのBuild and Runをする。

無事、Android実機上でサンプルコードが実行できた!


  1. エラーメッセージを見る限りではADBだけ最新にすることでも解決しそうな気がするものの、Unity側の設定がAndroid SDK単位でしかフォルダ指定できないので、仕方なくAndroid SDKを丸ごと最新にしている。 

  2. 執筆時点のAndroid Studioバージョンは2020.3.1 Patch2 for Windows 64-bit 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0