PageSourceSearch

https://shibuya24.info/_next/static/chunks/pages/entry/unity-jdk-ndk-not-found-4b7fe0470a29d9c9.js

js shibuya24.info collected 2026-10-03 23:36:09 UTC 20,145 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9761],{93960:(e,n,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/entry/unity-jdk-ndk-not-found",function(){return l(44621)}])},44621:(e,n,l)=>{"use strict";l.r(n),l.d(n,{default:()=>N,meta:()=>s}),l(96540);var t=l(15680),r=l(47199);l(78660),l(28770),l(72926);var i=l(46553),a=l(87380);l(2679),l(91106);var d=l(11945);l(93309),l(79991);var y=l(4653);l(5282),l(7352),l(88626),l(63356);var o=l(98990),u=l(76846);l(7288);var g=l(81253),p=l(62227);l(16258),l(88426),l(88575),l(58608),l(4437),l(378);let s={title:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル",url:"unity-jdk-ndk-not-found",date:"2025-04-08T07:38:35",updated:"2025-04-08T07:38:35",description:"Androidビルドで「JDKが見つからない」「NDKが見つからない」とエラーが出て困っていませんか?UnityではAndroidアプリをビルドする際に、JDKやNDKといった外部ツールが必要になります。本記事では、JDKとNDKの基本的な役割から、Unityで正しく設定・インストールする方法までを解説します。Unity Hubを使えばバージョンの不一致トラブルも回避可能。ビルドエラーに悩まされている方は、ぜひ最後までご覧ください。",image:"https://i.gyazo.com/7c01cfbe3c078a4c1eb90119d088c066.jpg#1920.0__1280.0",tags:["unity-practice"],no_top:0,noindex:0,show_follow:0,canonical:""},c={meta:s},m=e=>{let{children:n}=e;return(0,t.yg)(r.A,{meta:s},n)};function N(e){let{components:n,...l}=e;return(0,t.yg)(m,{...c,...l,components:n,mdxType:"MDXLayout"},(0,t.yg)("p",null,"こんにちは、エンジニアのオオバです。  "),(0,t.yg)(u.A,{nayami:" Androidビルドで失敗してしまう,JDKやNDKが足りないって言われる,Androidビルドを成功させたい",mdxType:"Onayami"}),(0,t.yg)("p",null,"Android向け開発中のトラブルは絶えません。  "),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},"ビルドができない"),(0,t.yg)("li",{parentName:"ul"},"実機に転送できない"),(0,t.yg)("li",{parentName:"ul"},"ビルド時コンパイルに失敗する")),(0,t.yg)("p",null,"などなど。中でもトラブル頻度第1位は「ビルドトラブル」です。  "),(0,t.yg)("p",null,"今回紹介するトラブルはコチラ。",(0,t.yg)("br",{parentName:"p"}),"\n",(0,t.yg)("em",{parentName:"p"},"JDK not found")," と ",(0,t.yg)("em",{parentName:"p"},"NDK not found"),"  "),(0,t.yg)("div",{className:"label"},"Androidビルド時のエラーダイアログ"),(0,t.yg)("p",null,(0,t.yg)("img",{parentName:"p",src:"https://cdn-ak.f.st-hatena.com/images/fotolife/e/esakun/20210523/20210523090012.png#562__206",alt:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル_0"}),"  "),(0,t.yg)("p",null,(0,t.yg)("img",{parentName:"p",src:"https://cdn-ak.f.st-hatena.com/images/fotolife/e/esakun/20210523/20210523092105.png#562__202",alt:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル_1"}),"  "),(0,t.yg)("p",null,"このようなエラーログが出るパターン。  "),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre"},"JDK not found  \nJava Development Kit (JDK) directory is not  \nset or invalid. Please, fix it in  \nEdit / Unity -> Preferences -> External Tools  \n")),(0,t.yg)("pre",null,(0,t.yg)("code",{parentName:"pre"},"Android NDK not found  \nAndroid NDK not found or invalid. Please, fix it in Edit / Unity -> Preferences -> External Tools  \n")),(0,t.yg)("p",null,"このエラーはJDKまたはNDKが見つからなくてビルドに失敗しているということを指しています。  "),(0,t.yg)("p",null,"新しいUnityエディタをインストールしたときによく起きるエラーです。  "),(0,t.yg)("p",null,"そこで本記事ではAndroidビルドで必要なJDK、NDKを正しくインストールし、ビルドを成功させる方法を紹介していきます。  "),(0,t.yg)("p",null,"Androidビルドで失敗しちゃって開発が滞ってしまっている方はぜひ読んでみてください。  "),(0,t.yg)(d.A,{local_url_key:"unity-build-android",query:"",mdxType:"RecommendBlock"}),(0,t.yg)(i.A,{type:"attension",mdxType:"MyAd"}),(0,t.yg)(i.A,{type:"before_toc",url:"unity-jdk-ndk-not-found",mdxType:"MyAd"}),(0,t.yg)("div",{id:"toc-container"},(0,t.yg)("div",{className:"toc-title"},"もくじ"),(0,t.yg)("ul",null,(0,t.yg)("li",null,(0,t.yg)("a",{href:"#Androidビルドに必要なJDK、NDKとは?"},"Androidビルドに必要なJDK、NDKとは?")),(0,t.yg)("ul",null,(0,t.yg)("li",{className:"inner"},(0,t.yg)("a",{href:"#JDKとは"},"JDKとは")),(0,t.yg)("li",{className:"inner"},(0,t.yg)("a",{href:"#NDKとは"},"NDKとは"))),(0,t.yg)("li",null,(0,t.yg)("a",{href:"#JDK、NDKはバージョンが重要"},"JDK、NDKはバージョンが重要")),(0,t.yg)("li",null,(0,t.yg)("a",{href:"#Unityバージョンに合うJDKとNDKをインストールする方法"},"Unityバージョンに合うJDKとNDKをインストールする方法")),(0,t.yg)("li",null,(0,t.yg)("a",{href:"#手動でJDKとNDKを導入する場合"},"手動でJDKとNDKを導入する場合")),(0,t.yg)("li",null,(0,t.yg)("a",{href:"#Androidビルドが何かおかしいときはPreferencesをチェック"},"Androidビルドが何かおかしいときはPreferencesをチェック")),(0,t.yg)("li",null,(0,t.yg)("a",{href:"#Androidビルドで必要なJDK、NDKまとめ"},"Androidビルドで必要なJDK、NDKまとめ")))),(0,t.yg)(i.A,{type:"after_toc",mdxType:"MyAd"}),(0,t.yg)("h2",null,"Androidビルドに必要なJDK、NDKとは?"),(0,t.yg)("p",null,"そもそもAndroidビルドに必要なJDKとNDKとは何なのでしょうか。  "),(0,t.yg)("h3",null,"JDKとは"),(0,t.yg)("p",null,"JDKとは ",(0,t.yg)("em",{parentName:"p"},"Java Development Kit")," の略でJavaという言語でアプリを開発・実行するために必要なツール一式が格納されています。  "),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},"Javaのコンパイラ"),(0,t.yg)("li",{parentName:"ul"},"Javaの実行環境"),(0,t.yg)("li",{parentName:"ul"},"デバッガやドキュメント作成ツール")),(0,t.yg)("p",null,"など。  "),(0,t.yg)("p",null,"Androidをビルドする際、ビルドスクリプトなどはJavaで実装されているためJDKが必要というわけです  "),(0,t.yg)("h3",null,"NDKとは"),(0,t.yg)("p",null,"NDKとは ",(0,t.yg)("em",{parentName:"p"},"Native Development Kit")," の略で、CやC++ などのネイãƒ
1†ã‚£ãƒ–コード(機械語に近いコード) をAndroidアプリに組み込むための開発キットです。  "),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},"C/C++用のコンパイラ(clangなど)"),(0,t.yg)("li",{parentName:"ul"},"Android用の標準ライブラリ"),(0,t.yg)("li",{parentName:"ul"},"Android向けヘッダーファイルやビルドツール")),(0,t.yg)("p",null,"などが格納されています。  "),(0,t.yg)("p",null,"UnityのIL2CPPやプラグインにはC++で書かれた処理が含まれています。",(0,t.yg)("br",{parentName:"p"}),"\n","それをAndroid上で動かすにはNDKを使ってをビルドする必要があるためNDKが必要なのです。  "),(0,t.yg)("p",null,"とはいえmonoビルドの場合はNDKは不要です。あくまでIL2CPPを使用した場合に必要ということです。  "),(0,t.yg)("p",null,"しかしGoogle Playの要件として ",(0,t.yg)("em",{parentName:"p"},"64bit対応が必須")," となっている現在32bitしか対応していないmonoビルドを使う理由はありません。  "),(0,t.yg)("p",null,"したがって ",(0,t.yg)("em",{parentName:"p"},"IL2CPPビルド一択")," であり ",(0,t.yg)("em",{parentName:"p"},"NDKも必須")," ということになります。  "),(0,t.yg)(d.A,{local_url_key:"unity-error-il2cpp-build",query:"",mdxType:"RecommendBlock"}),(0,t.yg)("h2",null,"JDK、NDKはバージョンが重要"),(0,t.yg)("p",null,"UnityのAndroidビルド向けに必要なJDKとNDKはバージョンが非常に重要です。一昔前のUnityエディタではJDKとNDKのバージョンが合わず、ビルドするにも一苦労な時代がありました。  "),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},"Unityのバージョン"),(0,t.yg)("li",{parentName:"ul"},"JDKのバージョン"),(0,t.yg)("li",{parentName:"ul"},"NDKのバージョン")),(0,t.yg)("p",null,"Unityのバージョンを変えるたびに残り2つのバージョンも調整する必要があったというわけです。  "),(0,t.yg)("p",null,"後述しますが執筆時現在、バージョン問題は解決しています。  "),(0,t.yg)(i.A,{tag:"unity-practice",order:"0",url:"unity-jdk-ndk-not-found",mdxType:"MyAd"}),(0,t.yg)("h2",null,"Unityバージョンに合うJDKとNDKをインストールする方法"),(0,t.yg)("p",null,"ここからが本題で、あなたのUnityバージョンに合うJDKとNDKをインストールする方法を紹介していきます。  "),(0,t.yg)("p",null,"結論からお伝えするとAndroidビルドに必要なJDKとNDKはUnityHubからインストールすれば大丈夫でã
1™ã€‚  "),(0,t.yg)("p",null,"モジュールを追加する画面で、以下3つにチェックをいれてインストールします。  "),(0,t.yg)("ol",null,(0,t.yg)("li",{parentName:"ol"},"Android Build Support"),(0,t.yg)("li",{parentName:"ol"},"OpenJDK"),(0,t.yg)("li",{parentName:"ol"},"Android SDK & NDK Tools")),(0,t.yg)("p",null,(0,t.yg)("img",{parentName:"p",src:"https://i.gyazo.com/06f9cb5bdce378f7938db2147484c837.jpg#694__500",alt:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル_2"}),"  "),(0,t.yg)("p",null,"以上で ",(0,t.yg)("em",{parentName:"p"},"JDK not found")," はと ",(0,t.yg)("em",{parentName:"p"},"NDK not found")," エラーは解決します。  "),(0,t.yg)(a.A,{msg:"JDKとNDKはバージョンが重要なのでは?",isLeft:"true",mdxType:"BalloonMsg"}),(0,t.yg)("p",null,(0,t.yg)("em",{parentName:"p"},"Unity Hub経由")," でインストールしたJDKとNDKは ",(0,t.yg)("strong",{parentName:"p"},"バージョン問題も解決している")," ということです。  "),(0,t.yg)("p",null,"バージョンのことは何も考えずUnity Hubからインストールすれば問題なくビルドできるようになるため、ぜひ活用してみてください。  "),(0,t.yg)("p",null,"詳しいモジュールの追加方法はこちらの記事を参考にどうぞ。  "),(0,t.yg)(d.A,{local_url_key:"unity-add-module",query:"",mdxType:"RecommendBlock"}),(0,t.yg)("h2",null,"手動でJDKとNDKを導入する場合"),(0,t.yg)("p",null,"もちろんあなたのUnityエディタに個別のJDKとNDKを導入することも可能です。  "),(0,t.yg)("p",null,"JDKよNDKにはいくつもバージョンが存在します。それらをパソコンにインストールしパスを通せば動作します。  "),(0,t.yg)("p",null,"パスの通し方は ",(0,t.yg)("inlineCode",{parentName:"p"},"Unityメニュー -> Settings")," のPreferencesウィンドウから行います。  "),(0,t.yg)("p",null,(0,t.yg)("img",{parentName:"p",src:"https://i.gyazo.com/6510ccd3e02872d68a2a15c082d0a67f.jpg#730__500",alt:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル_3"}),"  "),(0,t.yg)("p",null,"「External Tools」からJDK、NDKのチェックを ",(0,t.yg)("em",{parentName:"p"},"外して")," パスをセットします。  "),(0,t.yg)("p",null,"しかしおすすめはUnity Hub経由のバージョンです。とにかくちょっとしたバージョン違いでAndroidビルドができなくなるためです。  "),(0,t.yg)(d.A,{local_url_key:"unity-android-connect-profiler",query:"",mdxType:"RecommendBlock"}),(0,t.yg)("h2",null,"Androidビルドが何かおかしいときはPreferencesをチェック"),(0,t.yg)("p",null,"Androidビルドエラーもいろんな種類があるため、一概に言えませんが、JDK、NDK周りのエラーの場合、まず確認したいのはPreferencesです。  "),(0,t.yg)("p",null,(0,t.yg)("img",{parentName:"p",src:"https://i.gyazo.com/fffc84e00a9300f66cb9dd90bab46b53.jpg#420__241",alt:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル_4"}),"  "),(0,t.yg)("p",null,(0,t.yg)("inlineCode",{parentName:"p"},"メニューUnity -> Settings")," からPreferencesウィンドウを開き、External Toolsを確認します。  "),(0,t.yg)("p",null,(0,t.yg)("img",{parentName:"p",src:"https://i.gyazo.com/358cad2bdde9b8e379a8915b4d6c5985.jpg#730__500",alt:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル_5"}),(0,t.yg)("br",{parentName:"p"}),"\n","Androidセクション周りで警告やエラーが起きていないかを確認しましょう。特にJDKとNDKのチェックが外れていたり、そもそもJDKとNDKをインストールしていない場合などが考えられます。  "),(0,t.yg)("p",null,"その他にもさまざまなエラーが考えられるのでこちらの記事を参考にチェックしてみてください。  "),(0,t.yg)(d.A,{local_url_key:"unity-build-android",query:"",mdxType:"RecommendBlock"}),(0,t.yg)(i.A,{tag:"unity-practice",order:"1",url:"unity-jdk-ndk-not-found",mdxType:"MyAd"}),(0,t.yg)("h2",null,"Androidビルドで必要なJDK、NDKまとめ"),(0,t.yg)("p",null,"本記事ではAndroidビルドで必要なJDKとNDKについて解説してきました。記事の内容を簡単にまとめます。  "),(0,t.yg)(y.$E,{type:"1",title:"Androidビルドで必要なJDK、NDKまとめ",content:"   ①JDKはJavaの開発ツール   ②NDKはIL2CPPビルド時に使用(monoビルドでは不要)   ③JDK、NDKともにバージョンが重要   ④Unity Hub経由ならバージョン問題は解決   ",mdxType:"SimpleBox1"}),(0,t.yg)("p",null,"こんな感じです。  "),(0,t.yg)("p",null,"結論UnityでAndroidビルドする場合はUnity Hub経由でJDK、NDKどちらもインストールしておきましょうということでã
1™ã€‚  "),(0,t.yg)("p",null,"そうすると問題になりがちなバージョンやビルドエラーに悩まされることがなくなります。  "),(0,t.yg)("p",null,"ビルドエラーは本当に消費しがちな無駄な時間です。過去にビルドエラーでハマりにハマって結局諦めたこともあります。ぜひ正しい知識を入れて時間を有効活用していきましょう。  "),(0,t.yg)("p",null,"本記事があなたのゲーム開発を前に進めるきっかけになったらうれしいです。  "),(0,t.yg)(d.A,{local_url_key:"unity-qrcode",query:"",mdxType:"RecommendBlock"}),(0,t.yg)(p.A,{url_key:"unity-jdk-ndk-not-found",title:"【Unity】Androidビルド失敗!JDK、NDK関連トラブル",mdxType:"Share"}),(0,t.yg)(g.A,{meta:s,mdxType:"ArticleFollowMe"}),(0,t.yg)("p",null,"実機でのデバッグ、時間がかかって大変ですよね。この度、実機デバッグを劇的に効率化する「",(0,t.yg)("a",{parentName:"p",href:"https://tips.jp/u/ohba/a/srdebugger/d/dac"},"SRDebuggerの教科書"),"」を執筆しました。"),(0,t.yg)("p",null,"開発効率を上げたい方はぜひ確認してみてください!\n→ ",(0,t.yg)("a",{parentName:"p",href:"https://tips.jp/u/ohba/a/srdebugger/d/dac"},"SRDebuggerの教科書")),(0,t.yg)("p",null,"最後まで読んでいただきありがとうございました!",(0,t.yg)("br",{parentName:"p"}),"\n","すばらしいAndroidビルドライフをお過ごしください。"),(0,t.yg)(i.A,{type:"last",mdxType:"MyAd"}),(0,t.yg)("div",{className:"subTitle recommend"},"オススメ記事"),(0,t.yg)(o.A,{articles:"unity-start-unitask,unity-material,unity-version,unity-smartphone-project,unity-editor-speedup,unity-start,",mdxType:"RecommendArticleList"}),(0,t.yg)("div",{className:"subTitle env"},"検証環境"),(0,t.yg)("ul",null,(0,t.yg)("li",{parentName:"ul"},"Unity6000.0.32f1")))}N.isMDXComponent=!0},16258:(e,n,l)=>{"use strict";l.d(n,{A:()=>i});var t=l(74848);let r=e=>{let n=e.split("  "),l=[];return n.forEach(function(e,n){e.length>2&&l.push((0,t.jsx)("li",{children:e},n))}),l},i=e=>{let{type:n,content:l}=e,i=r(l);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"evaluation-title"+("0"==n?" pros-title":" cons-title"),children:"0"==n?"メリット":"デメリット"}),(0,t.jsx)("div",{className:"evaluation-box"+("0"==n?" pros-box":" cons-box"),children:(0,t.jsx)("ul",{children:i})})]})}},378:(e,n,l)=>{"use strict";l.d(n,{A:()=>i});var t=l(74848),r=l(22897);let i=e=>{let{id:n}=e;return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{children:[(0,t.jsx)(r.A,{id:n})," "]})})}},5282:(e,n,l)=>{"use strict";l.d(n,{A:()=>d});var t=l(74848),r=l(96540);let i=()=>{let[e,n]=(0,r.useState)({width:0,height:0});return(0,r.useEffect)(()=>{{let e=()=>{n({width:window.innerWidth,height:window.innerHeight})};return window.addEventListener("resize",e),e(),()=>window.removeEventListener("resize",e)}},[]),e};var a=l(7352);let d=e=>{let{videoId:n,loop:l=1}=e,r=n.replace("https://youtu.be/",""),{height:d,width:y}=i(),o=420,u="85%";y<=602?o="".concat(.56*y,"px"):y<=991?(o=300,u="".concat(1.77777778*o,"px")):y<=1199?o=300:(u="75%",o=360);let g={width:"".concat(u,"%"),height:"".concat(o,"px"),playerVars:{loop:l,playlist:r,modestbranding:1}};return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(a.A,{videoId:n,opts:g})})}},4437:(e,n,l)=>{"use strict";l.d(n,{A:()=>i});var t=l(74848),r=l(23281);let i=e=>{let{url:n,title:l,img:i,description:a}=e,d=new URL(n).hostname.replace("www.","");return"NoDescription"==a&&(a=""),"NoOGP"==i&&(i=r.A.noOgpImgUrl),a&&a.length>80&&(a=a.slice(0,80)+"..."),(0,t.jsx)("a",{href:n,target:"_blank",className:"refLink",children:(0,t.jsxs)("div",{className:"refLink-content",children:[(0,t.jsxs)("div",{className:"refLink-text",children:[(0,t.jsx)("div",{className:"refLink-title",children:l}),a&&(0,t.jsx)("div",{className:"refLink-description",children:a}),(0,t.jsx)("div",{className:"refLink-site",children:d})]}),(0,t.jsx)("div",{className:"refLink-image",children:(0,t.jsx)("img",{src:i,alt:l})})]})})}},62227:(e,n,l)=>{"use strict";l.d(n,{A:()=>p});var t=l(74848),r=l(66369),i=l(84801),a=l(27748),d=l(84758),y=l(68438),o=l(64124),u=l(13799),g=l(56227);let p=e=>{let{url_key:n,title:l}=e,p="https://shibuya24.info/entry/".concat(n),s="".concat(p," @ohbashunsuke"),c="".concat(l," - 渋谷ほととぎす通信");return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"share",children:[(0,t.jsx)("div",{className:"shareTitle",children:"学習したことはSNSでアウトプットして血肉にしよう!"}),(0,t.jsxs)("div",{className:"shareContainer",children:[(0,t.jsx)(r.A,{url:s,title:c,children:(0,t.jsx)(i.A,{size:45,round:!0})}),(0,t.jsx)(a.A,{url:p,quote:c,children:(0,t.jsx)(d.A,{size:45,round:!0})}),(0,t.jsx)(y.A,{url:p,title:c,children:(0,t.jsx)(o.A,{size:45,round:!0})}),(0,t.jsx)(u.A,{url:p,title:c,children:(0,t.jsx)(g.A,{size:45,round:!0})})]})]})})}},88426:(e,n,l)=>{"use strict";l.d(n,{A:()=>a});var t=l(74848);let r=e=>{let{str:n}=e,l=n.replaceAll(","," -> ");return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("code",{children:l})})},i=()=>(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("p",{children:[(0,t.jsx)("img",{alt:"UnityメニューPackage Manager",width:"275",src:"https://i.gyazo.com/298b005ad7e6241a5b3d6e128a400794.jpg#275__500"}),(0,t.jsx)("br",{}),(0,t.jsx)(r,{str:"メニュー Window,Package Manager"}),"からPackage Managerウィンドウを開きます。"]})}),a=e=>{let{name:n}=e;return(0,t.jsx)(t.Fragment,{children:"menu-upm"===n&&(0,t.jsx)(i,{})})}},58608:(e,n,l)=>{"use strict";l.d(n,{A:()=>i});var t=l(74848),r=l(88575);let i=e=>{let{assets:n,entry_key:l}=e,i=n.split(",");return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"subTitle recommend",children:"記事内で使用したアセット"}),(0,t.jsx)("ul",{children:i.map((e,n)=>(0,t.jsx)("li",{className:"asset",children:(0,t.jsx)(r.E9,{ad_key:e,entry_key:l,type:"1"})},n))})]})}}},e=>{var n=n=>e(e.s=n);e.O(0,[9479,4045,1293,5522,7199,4034,636,6593,8792],()=>n(93960)),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.