おもちゃラボ

Unityで遊びを作ってます

【Unity2021対応】Androidビルドでエラーが出る場合の対処法

UnityでAndroidビルドした場合、さまざまなエラーに出くわすことになると思います。ここでは、Androidビルド時に出る各エラーについてその対処法をまとめています。

Unable to list target platformsのエラー

Unity側でAndroidSDKのパスは正しく設定されているのに次のようなエラーが出ることがあります。

Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details. See the Console for details.

f:id:nn_hokuson:20180503102242p:plain:w400

これは、UnityがAndroid Studioのバージョンに対応できていない場合に出るエラーです。次の手順でAndroidの中のtoolsフォルダを更新するとビルドできるようになりました。

toolsフォルダを確認する

上のようなエラーが出た場合は、/Users/ユーザ名/Library/Android/sdkフォルダの中にあるのtoolsフォルダの中身を確認してみて下さい。

toolsフォルダにはFinderのメニューバーから「移動」→「フォルダへ移動」を選択し、「フォルダの場所を入力」の欄に上記のパスを入力して下さい。

f:id:nn_hokuson:20170905200204p:plain:w320

toolsフォルダの中身が左図のような状態にだとエラーが出るようです。右図のような場合にはエラーは出ません。
f:id:nn_hokuson:20170905201148j:plain:w480

toolsフォルダを更新する

下記のURLより少し古いtoolsフォルダをダウンロードし、現在のtoolsフォルダと置換してみて下さい(心配な方はバックアップを取っておいて下さい)

http://dl.google.com/android/repository/tools_r22.0.5-macosx.zip

再度AndroidでビルドすればUnityEditor.BuildPlayerWindow+BuildMethodExceptionのエラーは出ずに、正しくビルドできるようになるはずです。エラーが出てうまくいかない!という方は一度試してみて下さい!

それでもエラーが出る場合

Android SDK自体が古い可能性があります。Android Studioを普通にインストールしただけではAndroid SDKが更新されないことがあるようです。

その場合は「/Users/ユーザ名/Library/Android」フォルダ以下を全て消去した上で、Android Studioを起動すると、自動的にAndroid SDKの更新が始まります。

上記の手順で最新のAndroid SDKを入れた上で、再度toolsフォルダのみ更新してみて下さい。

Gradle build failedが出る

Unityのプロジェクトがあるパスに日本語が含まれていた場合、Gradle build failedのエラーが出ることがあります。プロジェクト名や、上位のフォルダ名などに日本語が含まれていないことを確認してください。

Gradle build failedが出る(Unity2019から)

Unity2019からはBuild Settingsの項目から「Build System」が削除されました。
したがって、Unity2019からは上記の方法では問題を修正できません。

Build Settingsに「Export Project」という項目があるため
これにチェックを入れてプロジェクトをAndroid Studio用にExportして下さい。

f:id:nn_hokuson:20191018212425p:plain:w300

ExportしたプロジェクトをAndroid Studioで読み込むと
Gradleをアップグレードしますか?という画面が出てくるので
OKを押して、Gradleをアップグレードします。

その後、Unityを再起動し、BUild Settingsの「Export Project」のチェックを外してから
普通にビルドすると、正しくビルドできます。

Gradle build failedが出る(Unity2018まで)

Unity2017.3.1以降を使っている場合、次のようなエラーが出ることがあります。

f:id:nn_hokuson:20180503133229p:plain:w350

CommandInvokationFailure: Gradle build failed.
/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-4.0.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx2048m" "assembleRelease"

Unity2017.3からはBuild SystemとしてGradleが標準になったのですが、これが原因でビルドに失敗することがあるようです。

ビルドシステムをもとに戻すためにはメニューバーからFile→Build Settingsを選択し、Build Systemの項目をInternalに設定して下さい。

f:id:nn_hokuson:20180503133358p:plain:w400

ビルド中にSelect Android SDK root Folderが出る

Select Android SDK root Folderが出た場合は、Macであれば「/Users/ユーザ名/Library/Android/sdk」、WIndowsであれば「C:\Users\ユーザ名\AppData\ Local\Android\sdk\」を選択してOKボタンを押して下さい。

Android SDK is outdatedというエラーが出る

インストールされているAndroid SDKのバージョンが、Unityで指定したSDKバージョンよりも低い場合に出るエラーです。とりあえず動かしたい場合は「Use Highest Installed」を選択すれば大丈夫です。

f:id:nn_hokuson:20180503102917p:plain:w450

実機転送する時にエラーが出る

Android携帯をPCに接続しているにも関わらず、「No Android Device Found!」や「Couldn't find Android device」など、Androidデバイスが見つかりません系のエラーが出ることがあります。

Make sure USB debugging has been enabled
Check your device, in most cases there should be a small icon in the status bar telling you if the USB connection is up.
If you are sure that device is attached then it might be USB driver problem, for details please check Android SDK Setup section in Unity manual.

f:id:nn_hokuson:20170314194612p:plain
f:id:nn_hokuson:20170314194618p:plain

Android開発者向けオプションをオンにする

開発者向けオプションをオンにするためには、「設定」 →「端末情報」を開き、「ビルド番号」 を 7 回タップして下さい。
「デベロッパになりました」という文章が出てきたら、設定画面に戻り端末情報の上に開発者向けオプションが表示されていることを確認してください。

開発者向けオプションをタップして

  • 開発者向けオプションがONになっていること
  • USBデバッグにチェックが入っていること

を確認して下さい。

f:id:nn_hokuson:20170314200239p:plain

ドライバを最新にする

お使いのAndroidデバイスの最新ドライバをインストールしてPCを再起動して下さい。

USB接続モードを確認する

Androidアプリをインストールするためには、メディア転送モード(MTP)ではなくファイル転送モード(MSC)である必要があります。
転送モードの変更は「設定」→「Xperia 接続設定(名前は機種により変わります)」→「USB接続設定」→「USB接続モード」で選択できます。

AndroidでPCからのアクセスを許可する

次のようなエラーがアプリ転送時に出る場合は、Androidのロック画面を解除してPCからのアクセスを許可して下さい。
f:id:nn_hokuson:20180503133021p:plain:w350

Unable to retrieve device properties. Please make sure the Android SDK is installed and is properly configured in the Editor.

USBデバッグが許可できない

アプリを転送する時に、端末側でBecause an app is obscuring a permission request と表示されて、USBデバッグが許可できないことがあります。

これは、画面上にオーバーレイして表示するアプリ(例えばスクリーンキャプチャなど)が起動していることが原因です。

該当のアプリを終了するか、設定→アプリ→画面左上の詳細設定ボタン(歯車など)→特別なアクセス→ほかのアプリに重ねて表示(フローティング表示するアプリ)をオフにして下さい。

その他の対策

これでも認識されない場合は、次の項目を試して下さい。

  • プロジェクトフォルダのパスに日本語が含まれていないか確かめる
  • USBポートを別のポートに差し替える
  • USBケーブルには通信用と充電用があるので、通信用ケーブルを使用する
  • PCを再起動する