Unity環境でAndroidアプリを作成する時の AndroidManifest.xml の置き場所について
AndroidManifest.xml の設置場所
AndroidManifest.xml を置く位置は、プロジェクトフォルダ\Assets\Plugins\Android 直下になります。
※ライブラリは例外
Unity環境で、特にUnityPlayerActivityを作成する場合に、AndroidManifest.xml を置く場合が多いと思います。
通常、UnityPlayerActivityを継承したクラスをメインのActivityにする場合、以下のAndroidManifest.xmlファイルを置きます。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application> <activity android:name="UnityPlayerActivity継承アクティビティクラス名" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
ここで設定するUnityPlayerActivity継承アクティビティクラス名は、アクティビティのパッケージ名.アクティビティ名 になります。
AndroidManifest.xml 自体は、複数存在する
AndroidManifest.xml 自体は、プロジェクト内に複数存在しても良いことになっています。ただし、アプリモジュールのAndroidManifest.xml は先ほどのファイルパスに置く必要があります。
以下はAndroid Developerサイトからの抜粋(リンクは後述)ですが、アプリモジュールのAndroidManifest.xml は図の中央にある main manifest と思われます。
複数のマニフェスト ファイルをマージする | Android デベロッパー | Android Developers
ビルド時にすべてのマニフェストは結合され、ファイル同士の優先度に応じて、競合するタグが取捨選択されます。
複数のAndroidManifest.xml をマージするということは、ライブラリ用であれば、AndroidManifest.xmlはプロジェクト内に複数あって良い、ということになります。実際、AdmobのAndroidManifest.xml は、上記以外の場所に格納されています(Assets\Plugis\Android\GoogleMobileAdsPlugin.androidlib\)。
なお、メインより優先されるビルドバリアント(ビルド用の変数)については、Unity公式サイトやAndroidのビルドバリアントの説明をされているサイトを参考にするとイメージが湧くと思います。ビルドバリアントを定義したAndroidManifest.xml が存在するというより、Gradleのビルド設定(build.gradle)から作られる一時ファイルではないかと考えられます。
Javaファイル
なお、Javaファイルの方は、置き場所に制限はなさそうです。元々は Assets\plugins\Android直下に入れるのが推奨とされていたようですが、このフォルダ内になくてもビルド対象になります。
参考
マージされた AndroidManifest.xml の出力先
最終的なAndroidManifest.xml の出力先は、デバッグビルド時とリリースビルド時で異なります。
(リリースビルド)
Unityプロジェクトフォルダ\Temp\gradleOut\launcher\build\intermediates\instant_app_manifest\release\AndroidManifest.xml
(デバッグビルド)
Unityプロジェクトフォルダ\Temp\gradleOut\launcher\build\intermediates\instant_app_manifest\debug\AndroidManifest.xml
(参考)
Unity ビルド後のAndroidManifest.xmlの書き出し場所 - 渋谷ほととぎす通信
(以上)