渋谷ほととぎす通信

エンジニア社長によるUnityとAIのブログ & エンジニアの生存戦略

【Unity】Androidビルド失敗!JDK、NDK関連トラブル

【Unity】Androidビルド失敗!JDK、NDK関連トラブル

こんにちは、エンジニアのオオバです。

お悩みさん
お悩みさん
  • Androidビルドで失敗してしまう
  • JDKやNDKが足りないって言われる
  • Androidビルドを成功させたい
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    Android向け開発中のトラブルは絶えません。

    • ビルドができない
    • 実機に転送できない
    • ビルド時コンパイルに失敗する

    などなど。中でもトラブル頻度第1位は「ビルドトラブル」です。

    今回紹介するトラブルはコチラ。
    JDK not foundNDK not found

    Androidビルド時のエラーダイアログ

    【Unity】Androidビルド失敗!JDK、NDK関連トラブル_0

    【Unity】Androidビルド失敗!JDK、NDK関連トラブル_1

    このようなエラーログが出るパターン。

    JDK not found  
    Java Development Kit (JDK) directory is not  
    set or invalid. Please, fix it in  
    Edit / Unity -> Preferences -> External Tools  
    
    Android NDK not found  
    Android NDK not found or invalid. Please, fix it in Edit / Unity -> Preferences -> External Tools  
    

    このエラーはJDKまたはNDKが見つからなくてビルドに失敗しているということを指しています。

    新しいUnityエディタをインストールしたときによく起きるエラーです。

    そこで本記事ではAndroidビルドで必要なJDK、NDKを正しくインストールし、ビルドを成功させる方法を紹介していきます。

    Androidビルドで失敗しちゃって開発が滞ってしまっている方はぜひ読んでみてください。

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    Androidビルドに必要なJDK、NDKとは?

    そもそもAndroidビルドに必要なJDKとNDKとは何なのでしょうか。

    JDKとは

    JDKとは Java Development Kit の略でJavaという言語でアプリを開発・実行するために必要なツール一式が格納されています。

    • Javaのコンパイラ
    • Javaの実行環境
    • デバッガやドキュメント作成ツール

    など。

    Androidをビルドする際、ビルドスクリプトなどはJavaで実装されているためJDKが必要というわけです

    NDKとは

    NDKとは Native Development Kit の略で、CやC++ などのネイティブコード(機械語に近いコード) をAndroidアプリに組み込むための開発キットです。

    • C/C++用のコンパイラ(clangなど)
    • Android用の標準ライブラリ
    • Android向けヘッダーファイルやビルドツール

    などが格納されています。

    UnityのIL2CPPやプラグインにはC++で書かれた処理が含まれています。
    それをAndroid上で動かすにはNDKを使ってをビルドする必要があるためNDKが必要なのです。

    とはいえmonoビルドの場合はNDKは不要です。あくまでIL2CPPを使用した場合に必要ということです。

    しかしGoogle Playの要件として 64bit対応が必須 となっている現在32bitしか対応していないmonoビルドを使う理由はありません。

    したがって IL2CPPビルド一択 であり NDKも必須 ということになります。

    JDK、NDKはバージョンが重要

    UnityのAndroidビルド向けに必要なJDKとNDKはバージョンが非常に重要です。一昔前のUnityエディタではJDKとNDKのバージョンが合わず、ビルドするにも一苦労な時代がありました。

    • Unityのバージョン
    • JDKのバージョン
    • NDKのバージョン

    Unityのバージョンを変えるたびに残り2つのバージョンも調整する必要があったというわけです。

    後述しますが執筆時現在、バージョン問題は解決しています。

    Unityバージョンに合うJDKとNDKをインストールする方法

    ここからが本題で、あなたのUnityバージョンに合うJDKとNDKをインストールする方法を紹介していきます。

    結論からお伝えするとAndroidビルドに必要なJDKとNDKはUnityHubからインストールすれば大丈夫です。

    モジュールを追加する画面で、以下3つにチェックをいれてインストールします。

    1. Android Build Support
    2. OpenJDK
    3. Android SDK & NDK Tools

    【Unity】Androidビルド失敗!JDK、NDK関連トラブル_2

    以上で JDK not found はと NDK not found エラーは解決します。

    お悩みさん
    お悩みさん
    JDKとNDKはバージョンが重要なのでは?

    Unity Hub経由 でインストールしたJDKとNDKは バージョン問題も解決している ということです。

    バージョンのことは何も考えずUnity Hubからインストールすれば問題なくビルドできるようになるため、ぜひ活用してみてください。

    詳しいモジュールの追加方法はこちらの記事を参考にどうぞ。

    手動でJDKとNDKを導入する場合

    もちろんあなたのUnityエディタに個別のJDKとNDKを導入することも可能です。

    JDKよNDKにはいくつもバージョンが存在します。それらをパソコンにインストールしパスを通せば動作します。

    パスの通し方は Unityメニュー -> Settings のPreferencesウィンドウから行います。

    【Unity】Androidビルド失敗!JDK、NDK関連トラブル_3

    「External Tools」からJDK、NDKのチェックを 外して パスをセットします。

    しかしおすすめはUnity Hub経由のバージョンです。とにかくちょっとしたバージョン違いでAndroidビルドができなくなるためです。

    Androidビルドが何かおかしいときはPreferencesをチェック

    Androidビルドエラーもいろんな種類があるため、一概に言えませんが、JDK、NDK周りのエラーの場合、まず確認したいのはPreferencesです。

    【Unity】Androidビルド失敗!JDK、NDK関連トラブル_4

    メニューUnity -> Settings からPreferencesウィンドウを開き、External Toolsを確認します。

    【Unity】Androidビルド失敗!JDK、NDK関連トラブル_5
    Androidセクション周りで警告やエラーが起きていないかを確認しましょう。特にJDKとNDKのチェックが外れていたり、そもそもJDKとNDKをインストールしていない場合などが考えられます。

    その他にもさまざまなエラーが考えられるのでこちらの記事を参考にチェックしてみてください。

    Androidビルドで必要なJDK、NDKまとめ

    本記事ではAndroidビルドで必要なJDKとNDKについて解説してきました。記事の内容を簡単にまとめます。

    Androidビルドで必要なJDK、NDKまとめ

    ①JDKはJavaの開発ツール

    ②NDKはIL2CPPビルド時に使用(monoビルドでは不要)

    ③JDK、NDKともにバージョンが重要

    ④Unity Hub経由ならバージョン問題は解決

    こんな感じです。

    結論UnityでAndroidビルドする場合はUnity Hub経由でJDK、NDKどちらもインストールしておきましょうということです。

    そうすると問題になりがちなバージョンやビルドエラーに悩まされることがなくなります。

    ビルドエラーは本当に消費しがちな無駄な時間です。過去にビルドエラーでハマりにハマって結局諦めたこともあります。ぜひ正しい知識を入れて時間を有効活用していきましょう。

    本記事があなたのゲーム開発を前に進めるきっかけになったらうれしいです。

    Unityオブジェクトの描画順の制御って難しいですよね。
    この度、Unityの描画順を体系的に学べる「Unity描画順の教科書」を執筆しました。

    Unityの描画順を基礎から学びたい方はぜひ確認してみてください!
    Unity描画順の教科書

    最後まで読んでいただきありがとうございました!
    すばらしいAndroidビルドライフをお過ごしください。

    オススメ記事
    検証環境
    • Unity6000.0.32f1