ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

Unity×Android Android環境にしたらビルドが通らない場合

f:id:tomo_mana:20220330165130p:plain

Android環境にしたらビルドが通らなくなった場合(インストールの確認)


UnityでAndroid向けにアプリ開発をする場合、Unity 用の Android SDK に内蔵されている Gradle というビルドシステム(コンパイラ・リンカ含む)を使用します。

f:id:tomo_mana:20220322223552p:plain
Unity Manual - Android Gradle

Android の Gradle - Unity マニュアル


この Gradle によって、Unityに置いてあるJavaファイルがビルド(コンパイル・リンク等)されるようになります。

f:id:tomo_mana:20220210173633p:plain
.java を Unity でコンパイルできるか

Java や Kotlin のソースファイルをプラグインとして使用 - Unity マニュアル

f:id:tomo_mana:20220322223241p:plain
C#ファイルとJavaファイルのアイコン(左がC#、右がJava


Unity の Android環境でビルドができるようになるまでに、いくつかつまづくポイントがあったのでまとめました。

Android環境にできるか確認

Android環境にできるか確認するには、File > Build Settings で、Android を選択します。

Android 用のビルド環境が整っていないと、以下の画面が表示されます。

f:id:tomo_mana:20220323195638p:plain
Build Settings → Platform → Android選択時(JDK、NDKがインストールされていない場合)

この場合、Unity Hub から Android 用のビルド環境をインストールします。ただし、上の画面からからUnity Hub を開くとうまくいかないことがあるようです。

インストールの仕方は、以下にまとめました。
tomo-mana.hatenablog.com

コンパイルできない

JDK が見つからない(バージョンが合っていない)

Android SDK は、使用できる Java JDK のバージョンが限られています

基本的に、Unity Hub からのインストールでAndroid SDK/NDK と Java JDK のバージョンを揃えます。


以下のエラーが出た場合、Android SDK に対して Java JDK のバージョンが合っていないと思われます。

f:id:tomo_mana:20220130123224p:plain
JDK バージョン不一致警告

Preference を表示すると、以下のようなエラー画面が出ています。

f:id:tomo_mana:20220323070214p:plain
Edit → Preference
f:id:tomo_mana:20220130121741p:plain
Preference で JDK関連のエラー

上記に示されている JDKAndroid SDKAndroid NDK の各ファイルパスに飛んでみて、ファイルが存在しなかったら、Unity Hub からインストールが必要です。

上記エラーが出た時の対処は、以下を参考にしました。
qiita.com

インストールしているのにファイルが無い場合は、さらに以下を参照します。

Java JDKAndroid SDK がうまくインストールされない

たとえば、以下の警告が出る場合、Java JDK がうまくインストールされなかったか、存在しない可能性があります。

f:id:tomo_mana:20220130121003p:plain
ビルドテスト(失敗)

Java JDKAndroid SDK がインストールされたかどうかは、Unity Hub→インストール→「f:id:tomo_mana:20220323164123p:plain」→「モジュールを加える」で確認できる…ことになっています。

f:id:tomo_mana:20220130111255p:plain
Unity Hub Android SDKインストール済

この「モジュールを加える」画面は、正常にインストールされていなくてもインストール済になっていることがあり、元のファイルがちゃんと存在しているか確認する必要があります。


元のファイルが存在するか確認するには、Edit→Preferenceから、External Tools を表示します。

f:id:tomo_mana:20220323070214p:plain
Edit → Preference
f:id:tomo_mana:20220130121741p:plain
Preference で JDK関連のエラー

Java JDKAndroid SDK、NDK それぞれの欄の「Copy Path」をクリックしてパスをコピーし、ファイルエクスプローラでそれぞれのアドレスを確認します。

正常にインストールされている場合、それぞれのアドレスに何らかのファイルが存在しています。

Java JDK

f:id:tomo_mana:20220323213329p:plain
Java JDK

Android SDK

f:id:tomo_mana:20220323213358p:plain
Android SDK

Android NDK(ファイル多いため抜粋)

f:id:tomo_mana:20220323213431p:plain
Android NDK(抜粋)


また、元のファイルが存在していなかった場合、Unity Hub から再インストールすることができません。かといって手動で持ってくることもできません。仕方がないのでUnity Hub まで含めて全アンインストールが必要になります。

JDK/SDKのインストールに失敗したら、Unity Hubごとアンインストール


Unity Hub まで含めたアンインストール・再インストール手順は、以下の記事を参考にしました。

UnityでOpenJDKがインストールされない場合の解決法(Windows) | liquidjumper

Java JDK用のパスが通ってない

以下の警告が出る場合は、JAVA_HOME へのパスが通っていない可能性があります。

f:id:tomo_mana:20220208114707p:plain
Gradleに関するエラー

Unity(Gradleビルドシステム)に限らず、Java JDKを使う場合、JAVA_HOME と Path にパスを通す必要があります。

環境設定の出し方はWindowsのバージョンによって変わるので、個々のサイトで探す必要があります。

環境設定では、以下のように設定します。

f:id:tomo_mana:20220323210146p:plain
External Tools → Java JDK のフォルダパス取得

それぞれ、「システム環境変数」側に以下の環境変数を追加します。
JAVA_HOME:上で取得したパス
Path:上で取得したパス\bin

f:id:tomo_mana:20220323210638p:plain
環境変数


JAVA_HOME と Path を修正した後、Unity Hub を再起動させる必要があります。Unity Hub を画面上で落としただけでは再起動したことにならないようです。手っ取り早いのはPC電源再起動でした。

(参考)
Unity2019で「Gradle failed to fetch dependencies.」というエラーがでる


私の場合、この2つでつまづきました。
他にもいろいろあるかもしれません。

補足:Javaファイルをプロジェクトに追加する

UnityEditorのメニューには、C#のように Java や Kotlin を作成するメニューが無さそうなので、先に適当なテキストファイルを UnityEditor の外で拡張子だけ変更して、それから UnityEditor の Assets フォルダにコピーする必要があります。

Kotlinのソースコードは確認できていませんが、Javaファイル自体は、Assetsフォルダ下においてあれば、C#ファイルと同じようにビルドの対象になります。
tomo-mana.hatenablog.com


(以上)