ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

UnityxAndroid AndroidManifest.xml の設置場所 (Unity 2020.3.26f1・Android 10, 11)

f:id:tomo_mana:20220330165614p:plain

Unity環境でAndroidアプリを作成する時の AndroidManifest.xml の置き場所について

AndroidManifest.xml の設置場所

AndroidManifest.xml を置く位置は、プロジェクトフォルダ\Assets\Plugins\Android 直下になります。

f:id:tomo_mana:20220323235011p:plain
Unity および 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 と思われます。

f:id:tomo_mana:20220215140824p:plain

複数のマニフェスト ファイルをマージする  |  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直下に入れるのが推奨とされていたようですが、このフォルダ内になくてもビルド対象になります。

f:id:tomo_mana:20220324160811p:plain
Javaソースコードの置き場について(2018.4)

Java や Kotlin のソースファイルをプラグインとして使用 - Unity マニュアル

参考

マージされた 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の書き出し場所 - 渋谷ほととぎす通信


(以上)