AndroidManifest は XML ファイルで、Android アプリケーションに関する重要なメタデータが含まれています。これには、パッケージ名、アクティビティ名、主要アクティビティ (アプリケーションの開始個所)、設定、Android バージョンサポート、ハードウェア機能サポート、パーミッションなどが含まれます。
AndroidManifest ファイルに関する詳細は Android デベロッパードキュメントの アプリマニフェスト を参照してください。
アプリケーションをビルドするときに、Unity は以下の手順で自動的に Android のマニフェストを生成します。
Unity は主要な Android マニフェストを取り出します。
プラグインからすべての Android マニフェスト (AAR と Android ライブラリ) を見つけます。
プラグインからのマニフェストを、Google の manifmerger クラスを使って、主要マニフェストにマージします。
そのマニフェストを修正して、自動的にパーミッション、設定オプション、使用機能、その他の情報をマニフェストに加えます。
Unity は適切なマニフェストを生成しますが、そのコンテンツを直接制御したい場合もあるでしょう。
Unity 以外で作成した Android マニフェストを使用するには、以下の場所にその Android マニフェストファイルを置いてください。 Assets/Plugins/Android/AndroidManifest.xml 。こうすることによって、デフォルトの Unity が作成したマニフェストをオーバーライドすることができます。
このような場合、Android ライブラリのマニフェストは後でメインのマニフェストにマージされます。その結果として生じたマニフェストはさらに、設定が正しいことを確認するため Unityによって調整されます。権限を含め、マニフェストを完全に制御するには、プロジェクトをエクスポートし、Android Studio で最終的なマニフェストを修正する必要があります。Unity は launchMode - singleTask のみをサポートしていることに注意してください。
Unityは、Android Player 設定と、アプリケーションがスクリプトから呼び出す Unity API に基づいて、マニフェストに必要なパーミッションを自動的に加えます。以下はその例です。
Network クラスにより INTERNET
パーミッションを加えます。
バイブレーションの使用 (Handheld.Vibrate など) により VIBRATE
を加えます。
InternetReachability プロパティーにより ACCESS_NETWORK_STATE
を加えます。
Location APIs (LocationService など) により ACCESS_FINE_LOCATION
を加えます。
WebCamTexture APIs により CAMERA
パーミッションを加えます。
Microphone クラスにより RECORD_AUDIO
を加えます。
NetworkDiscovery と NetworkTransport.SetMulticastLock は CHANGE_WIFI_MULTICAST_STATE
を加えます。
パーミッションに関する詳細は Android デベロッパードキュメントのパーミッション を参照してください。
マニフェストで宣言することによってプラグインのパーミッションを得る必要がある場合は、そのパーミッションはマージした特に出来上がる Android マニフェストに自動的に加えられます。プラグインに呼び出される Unity API もすべて、パーミッションのリストに含まれます。
アプリケーションが Android 6.0 (Marshmallow) 以降をもつデバイスで実行され、さらに、Android API レベル 23 以上をターゲットにしている場合、そのアプリケーションは Android の ランタイムパーミッションシステム を使用します。
Android ランタイムパーミッションシステムは、アプリケーションが最初にインストールされたときではなく、アプリケーションが実行されている間にアプリケーションのユーザーにパーミッションを要求します。ユーザーは、通常、アプリケーションが実行されている時にアプリケーションの必要に応じて各パーミッションを許可または拒否することができます (例えば、写真を撮る前のカメラのパーミッションの要求など)。これにより、許可がない場合のアプリケーションの機能を制限します。Android.Permission クラスを使用すると、特定のパーミッションが許可されているか否かを確認できます。アプリケーションが必要としているパーミッションが拒否されている場合は、必要な理由をアプリケーションユーザーに知らせ、パーミッションの承認を依頼することができます。パーミッションの要求 を参照してください。
通常、アプリケーションは Android の起動時にいわゆる「危険な」パーミッションの呼び出しを許可するようにユーザーに求めます。詳細については、Android ドキュメントで 危険なアクセス許可 について参照してください。ただし、起動時に Unity Android アプリケーションがアクセス権を要求しないようにするには、マニフェストの Application または Activity セクションのいずれかに以下を追加します。
<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />
これを加えると、起動時に表示されるパーミッションダイアログを完全に抑えることができます。しかし、クラッシュを避けるために、注意深くランタイムのパーミッションを処理する必要があります。この方法は上級レベルの Android 開発者にのみ推奨されます。
ランタイムのパーミッションシステムとパーミッションの処理に関する詳細は、Android デベロッパードキュメントの 実行時のパーミッション リクエスト を参照してください。
アプリケーションのために Unity が生成した最終的な Android マニフェストを検査するには、プロジェクトをビルドした後で、しかも、Unity エディターを終了する前に Temp/StagingArea/AndroidManifest.xml ファイルを開きます。
マニフェストは出力パッケージ (APK) にバイナリ形式で格納されています。APK 内のマニフェストのコンテンツを検査するには、Android Studio APK Analyzer やその他のサードパーティー製のツール (Apktool など) の利用が可能です。
2018–10–05 編集レビュー を行ってパブリッシュされたページ
バージョン 5.5 の更新機能
Androidランタイムパーミッションのサポートを2018.3で追加
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.