Gradle のトラブルシューティング
権限のリクエスト

Android マニフェスト

AndroidManifest は XML ファイルで、Android アプリケーションに関する重要なメタデータが含まれています。これには、パッケージ名、アクティビティ名、主要アクティビティ (アプリケーションの開始個所)、設定、Android バージョンサポート、ハードウェア機能サポート、パーミッションなどが含まれます。

AndroidManifest ファイルに関する詳細は Android デベロッパードキュメントの アプリマニフェスト を参照してください。

Unity で Android マニフェストを作成する方法

アプリケーションをビルドするときに、Unity は以下の手順で自動的に Android のマニフェストを生成します。

  1. Unity は主要な Android マニフェストを取り出します。

  2. プラグインからすべての Android マニフェスト (AAR と Android ライブラリ) を見つけます。

  3. プラグインからのマニフェストを、Google の manifmerger クラスを使って、主要マニフェストにマージします。

  4. そのマニフェストを修正して、自動的にパーミッション、設定オプション、使用機能、その他の情報をマニフェストに加えます。

Android マニフェストをオーバーライド

Unity は適切なマニフェストを生成しますが、そのコンテンツを直接制御したい場合もあるでしょう。

Unity 以外で作成した Android マニフェストを使用するには、以下の場所にその Android マニフェストファイルを置いてください。 Assets/Plugins/Android/AndroidManifest.xml 。こうすることによって、デフォルトの Unity が作成したマニフェストをオーバーライドすることができます。

このような場合、Android ライブラリのマニフェストは後でメインのマニフェストにマージされます。その結果として生じたマニフェストはさらに、設定が正しいことを確認するため Unityによって調整されます。権限を含め、マニフェストを完全に制御するには、プロジェクトをエクスポートし、Android Studio で最終的なマニフェストを修正する必要があります。Unity は launchMode - singleTask のみをサポートしていることに注意してください。

パーミッション

Unityは、Android Player 設定と、アプリケーションがスクリプトから呼び出す Unity API に基づいて、マニフェストに必要なパーミッションを自動的に加えます。以下はその例です。

パーミッションに関する詳細は Android デベロッパードキュメントのパーミッション を参照してください。

マニフェストで宣言することによってプラグインのパーミッションを得る必要がある場合は、そのパーミッションはマージした特に出来上がる Android マニフェストに自動的に加えられます。プラグインに呼び出される Unity API もすべて、パーミッションのリストに含まれます。

Android 6.0 (Marshmallow) の ランタイムパーミッション

アプリケーションが 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 デベロッパードキュメントの 実行時のパーミッション リクエスト を参照してください。

作成された Android マニフェストの検査

アプリケーションのために Unity が生成した最終的な Android マニフェストを検査するには、プロジェクトをビルドした後で、しかも、Unity エディターを終了する前に Temp/StagingArea/AndroidManifest.xml ファイルを開きます。

マニフェストは出力パッケージ (APK) にバイナリ形式で格納されています。APK 内のマニフェストのコンテンツを検査するには、Android Studio APK Analyzer やその他のサードパーティー製のツール (Apktool など) の利用が可能です。


  • 2018–10–05 編集レビュー を行ってパブリッシュされたページ

  • バージョン 5.5 の更新機能

  • Androidランタイムパーミッションのサポートを2018.3で追加

Gradle のトラブルシューティング
権限のリクエスト