Gradle のトラブルシューティング
Requesting Permissions

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 automatically adds the necessary permissions to the Manifest based on the Android Player settings and Unity APIs that your app calls from the script. For example:

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

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

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

アプリケーションが Android 6.0 (Marshmallow) 以降をもつデバイスで実行され、さらに、Android API レベル 23 以上をターゲットにしている場合、そのアプリケーションは Android 実行時のパーミッション リクエスト を使用します。

The Android Runtime Permission System asks the app’s user to grant permissions while the app is running, instead of when the app is first installed. App users can usually grant or deny each permission when the app needs them while the app is running (for example, requesting camera permission before taking a picture). This allows an app to run with limited functionality without permissions. The Android.Permission class allows you to check whether specific permissions have been granted or denied. If a permission your app relies upon has been denied, you can inform the user why you need it and ask them to approve the permission. See Requesting Permissions.

Normally, your app prompts the user to allow what Android calls “dangerous” permissions on startup. See Android’s documentation on dangerous permissions for more information. However, if you don’t want your Unity Android app to ask for permissions on startup, you can add the following to your Manifest in either the Application or Activity sections.

<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 の更新機能

  • Added support for Android Runtime Permissions in 2018.3.

Gradle のトラブルシューティング
Requesting Permissions