UnityでAndroidアプリを作る時「Gradle build failed」となる

ゲームエンジンUnityで

Androidアプリを作って、

それをAndroid端末に

USBケーブルでつないで

移すには、

apkファイルにビルド(変換)

しなければなりません。

その為には

Android Studioという

アプリが必要で

Androidアプリ開発に必要な

SDK

はデフォルトで

C:¥User¥AppData¥Local

¥Android¥Sdk

に格納されます。

ところが

Unity2021.1までは

Android Studioの

SDK

の他に

Unityをインストールする時に

Unityと同時にインストールされる

Android SDKをモジュールとして

使ってもできます。

格納先が

C:¥Program Files¥Unity¥Hub

¥Editor¥2021.1f1

¥Editor¥Data¥PlaybackEngines

¥AndroidPlayer¥SDK

になります。

コマンドプロンプトで

Androidのプラットフォームを

インストールするには

C:¥Program Files¥Unity¥Hub

¥Editor¥2021.1f1

¥Editor¥Data¥PlaybackEngines

¥AndroidPlayer¥SDK

¥tools¥bin

¥sdkmanager.bat “platforms;

android-31″

とすれば

APIをインストールできます。

ところが

それをしても

2021.2からは

Exception in thread “main”java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

となります。

同じような症状の人は

他にもいるようで

Android Studioの中の

JavaをPATHに設定するといいと

書いてます

なんかうまくいきません。

今までは

Android Studioで

自分のプラットフォームの

ツールをインストールして

Player Settingに

記載すれば簡単だったのに

なんでこんな

手動で

プラットフォームを

インストールしたり

JDKの場所まで

変更になったりしたのか

わけわからない。

Unity2021.2

(2021年10月25日)からは

「Gradle build failed」

というのが出てきます。

まず

apkファイルに

ビルドしようとすると

この画面が出てきます。

Android Studioで

sdkのAPIバージョンを

設定したのにもかかわらず

「Update Android SDK」

しなさいと

警告が出ます。

今までは

Target API Levelは

「Automatic (highest installed)」

でよかったのだけれど

デフォルトだと

API28までしか

設定できなくなったみたいで

API29以上は

デフォルトでは

できなくなったので

Android Studioではなく

Unityをインストールする時

一緒にインストールされる

Androidモジュールの

sdkmanager.batで

コマンドで

インストールしなければ

ならなくなりました。

先ほど説明した通り

C:\Program Files\Unity\Hub\Editor\2021.2\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\bin>sdkmanager.bat “platforms;android-31”

でAPIがインストールされる

はずだったんです。

でもこれで設定しても

「Gradle build failed」となります。

Unityのバージョンによって

Gradleのバージョンと

Gradle プラグインのバージョンを

変えなければならないみたいなので

Edit > Preferences >

External Tools >

Gradleの欄に

C:\gradle-6.1.1

とし、

File > Build Setteings >

Player Settings >

Publishing Settings >

Build > Custom Base Gradle Template

にチェックを入れ

Assets > Plugins > Android > basePlojectTemplate.gradle

のclasspathを4.0.1に変える。

でもやっぱり

「Gradle build failed」となります。

Unity2021.1までは

Target API Levelは

「Automatic (highest installed)」で

できます。

でも

Unity2021.2からは

どうやっても

「Gradle build failed」が

出ます。

Gradleプロジェクトにして

エクスポートして

Android Studioにインポートして

ビルドすればいいと

色んなサイトに

載っているので

次回は

これを試してみたいと

思います。