UnityをGradleプロジェクトにエクスポートしてAndroidStudioでビルドできました

「Gradle地獄」

Unity2021.2から

Androidアプリを作ろうと

apkファイルに

変換しようとしたら

突如現れた

「Gradle build failed」

Unity内では

いくらやっても

いっこうに

エラーが改善されず、

「エクスポートして

Android Studioに

インポートして

ビルドすると

できるらしい」

ということを聞きつけて

「その方法でやってみます!」

と、

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

というブログに書きました。

その方法で

やってみるも

やり方がわからず

七転八倒していたのが

やっとできました!

➀UnityでGradleプロジェクトを

エクスポートする。

②Android Studioを起動し、

…3点リーダーをクリックして

Import Projectを

クリックする。

Openでもいいです。

③File→Project Structure→Projectで

Android Gradle Plugin Versionを

4.01に

Gradle Versionを6.11にする。

④File→Project Structure→

Modulesで

SDK、NDK、JDKを

設定する。

まず

File→Project Structure→

Modules→lancherで

SDKのAPIを設定する。

「Compile Sdk Version 29

Build Tools Version 28.03」

(図では

「Compile Sdk Version 34

Build Tools Version 30.02」

になってるが

その時に合った

ビルドツールでいい。)

JDKが1.8だったことに

安心していたら

エラーメッセージに

JDKがJAVA_HOMEの

バージョンと違うと

出ていたので

調べてみたら

SDK Locationの

Gradle JDKが

このPCにインストールしてある

一番新しいJDK17に

なっていたので

JAVA_HOMEの

JDK1.8に直す。

それでも

1番下に

「Installed Build Tools 

revision 34.0.0 comupted.

Remove and install again

using the SDK Manager.」

と出て

エラーメッセージに

NDKが違うと出たので

File→Project Structure→SDK Location→Android SDK locationを

C:\Users\AppData\Local\Android\sdkにして

OKをクリックすると

ちゃんと

NDKも出るようになった。

⑤Create Device→Phone(Pixcel6)→Recommended(API)を選択する。

インストールできなかったら

Tools→SDK Managerで

APIをインストールする。

(画像では

API34をインストールしているが

API33でいい。)

⑥Build→Build Bundle(s)→

Build APK(s)で

apkファイルを作る。

⑦USBケーブルで

パソコンとAndroidを

つなぐ。

⑧設定→端末情報→

ビルド番号を

連続してタップし

開発向けオプションを

表示する。

USBデバッグをオンにする。

⑨Runをクリックする。

⑩スマホに無事移せました。

1番手こずったのは

Android Studioに

インポート

したのはいいけど

apkファイルにする方法が

わからなくて

調べても

「ビルドする」

しか書いてなくて

2023年9月6日に

「Gradle build failed」が

出てから

1か月、

ずっとこれにかかりっきりで

もう

心が折れて

投げ出しかけていたところ

③のapkファイルに

変換するやり方を

書いてある人の

ブログを見つけ

やっと、

エラーを直して

完成させました。

—————————

でも色んな

Unityバージョンで

調べましたが

今回分かったことは

➀「Unity自身で

Android用の

apkファイルを作るか」

②「Unityファイルをエクスポートして

Android Studioにインポートして

Android用のapkファイルを作るか」

Unityバージョンと

Gradleバージョンによって

やり方が変わるということ。

Unity2021.1では

Android Studioにエクスポートしたら

エラーが出てapkファイルが

作れないけど

Unityではapkファイルが作れる。

逆にUnity2021.3では

Unityでは

「Gradle build failed」

と出るけど

Android Studioでは

apkファイルが作れる。

「Unity

Androidアプリ

apkビルド問題」

解決しました。

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にインポートして

ビルドすればいいと

色んなサイトに

載っているので

次回は

これを試してみたいと

思います。