i-school - Mac における Android の Build 時のエラーについて

Mac におけるエラーの対処方法


 いくつかのユースケースがありますので、それぞれまとめておきます。
万が一 Build エラーが発生した場合には対象となるものを順番に試していくようにしてください。

 なおすべての操作は Unity エディターを起動していない状態で行ってください。
理由は各操作後の設定の反映には Unity エディターの再起動が必要になるためです。
起動している場合には、事前に終了しておいた方がよいでしょう。


Android の Build に必要なモジュールの確認を行う


 Mac での Build に XCode が必要となるように、Android における Build においては、専用のモジュールが必要になります。
以前は手動でインストールしていましたが、現在は UnityHub を利用することで必要となる SDK、NDK、JDK の各モジュールをインストールすることが出来ます。
 
 ここでは UnityHub 3.3.0 を利用して説明していますが、最新の UnityHub に置き換えて操作していただければ問題ありません。

 UnityHub を立ち上げて、画面左の項目にあるインストールというボタンを押してください。
現在インストールされている Untiy がバージョンごとに表示されますので、現在利用している Untiy のバージョンの右上にある歯車のアイコンを押してください。
モジュールを加えるというメニューが出ますので、そちらを選択してください。
 
 これは Untiy のバージョンごとの操作になりますので、必ず、現在利用している Untiy のバージョンの部分で操作してください






 モジュールを加えるを選択すると、次のようなモジュールの管理画面になります。(こちらは Windows の画面なので、Mac では違う画面になりますが、操作内容は同じです)
モジュールとは、その Untiy で利用できるプラットフォームの種類と、そのプラットフォーム内で必要になる機能のことです。

 この項目内の Android Build Support 部分を選択し、その中にある Android SDK & NDK ToolsOpen JDK の2つにチェックをいれて、右下の「次へ」を押してインストールを行います。
その際、確認画面が表示される場合がありますので、許可をしてインストールを進めてください。

 なお、UnityHub のバージョンによっては、異なる名称でのモジュールのインストールを行う場合があります。
その場合においても、SDK、NDK、JDK のインストールが行えれば問題ありません。

 その後、Unity エディターを起動し、Edit → Preferences を選択して、各モジュールのインストールが完了しているかを確認してください。
正常にインストールされていれば、各項目にチェックが入り、インストールされているディレクトリが表示されます。

 この状態を確認してから、再度 Build を行ってください。


Macのターミナルにて管理者権限の設定を行う方法


 Mac にてプラットフォームを Android に設定して Build をおこなった際に、下記のようなエラーが発生して、Build が失敗する場合があります。
[] の部分はそれぞれの PC 環境で異なるフォルダ名が入ります。

  Win32Exception: ApplicationName='/Applications/Unity/Hub/Editor/[2021.1.3f1]/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager', CommandLine='--list', CurrentDirectory='/Users/[フォルダ名1]/[フォルダ名2]/[プロジェクト名]', Native error= Access denied

  Error building Player: Win32Exception: ApplicationName='/Applications/[2021.1.3f1]/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager', CommandLine='--list', CurrentDirectory='/Users/xxxx/[フォルダ名1]/[フォルダ名2]/[プロジェクト名]', Native error= Access denied

<エラー画像>



 原因としては、Android 用の Build を行う際に利用する SDKManager への管理者権限がないため Build が実行できない、という内容のエラーです。
これは macOSのバージョンが Mojave(10.14)以降である場合でのセキュリティ強化によって発生するものです。

 その場合にはまずターミナルを起動し、ターミナル自体への管理者権限の付与を行う必要があります。

 こちらの記事を参考にして、ターミナルを起動して、管理者権限の付与を行ってください。

HYZ STUDIO BLOG 様
Macのターミナルで「Operation not permitted」と表示され何も出来ない時の対処法



SDKManager への管理者権限の付与設定を行う


 ターミナルへの管理者権限の付与が完了したら、その後、改めてターミナル内で SDKManager への管理者権限の付与を行います。
SDKManager の場所は各ユーザーにより異なりますので、Unity の Edit → Preferences より確認を行ってください。

 
[User]@[PC 名] ~ % chmod 777 /Applications/[フォルダ名。複数ある場合もある]/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager


<例>
[User]@MacBook-Pro-3 ~ % chmod 777 /Applications/Unity/Hub/Editor/2020.3.23f1/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager

 こちらの管理者権限の付与を行ってから、再度 Build を実行してください。


ターミナルにおいて SDKManager への管理者権限の付与設定を行う際に「Operation not permitted」と表示され何も出来ない時の対処法


 上記の手順をターミナルで行った際に、「Operation not permitted」のメッセージが表示されて、SDKManager への管理者権限の付与が行えない場合があります。


<エラー時>
Last login: Sat Nov 12 20:44:26 on ttys000
[User]@MacBook-Pro-3 ~ % chmod 777 /Applications/Unity/Hub/Editor/2020.3.23f1/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager
chmod: Unable to change file mode on /Applications/Unity/Hub/Editor/2020.3.23f1/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager: Operation not permitted

 その場合には、sudo を最初につけた上で、同じコマンドを実行してください。
パスワードを要求されるようになれば、コマンドは通っています。パスワードを間違えると再度入力を要求されます。

[User]@MacBook-Pro-3 ~ % sudo chmod 777 /Applications/Unity/Hub/Editor/2020.3.23f1/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager
Password:
Sorry, try again.
Password:
[User]@MacBook-Pro-3 ~ % chmod 777 /Applications/Unity/Hub/Editor/2020.3.23f1/PlaybackEngines/AndroidPlayer/SDK/tools/bin/sdkmanager
[User]@MacBook-Pro-3 ~ %

 以上の手順でターミナルを通じて SDKManager への管理者権限の付与が行えます。


<参考サイト>
Unity 備忘録メモ さま
Win32Exception:Native error= Access denied sdkmanagerの実行権限がないためmacでAndroidビルドできない





 以上になります。