今回はAndroid開発において必ず必要なAndroidManifest.xmlをUE4での編集方法をご紹介いたします。
○AndroidManifest.xmlとは
Androidでアプリを開発する際必ず必要になるxmlでここにアプリのパッケージング名やバージョン番号、使用するActivityなどなど重要な情報を記載するものです。(※1)
しかしAndroidに関しての公式ドキュメントではAndroidManifest.xmlについて触れていません。というのもUE4ではこのAndroidManifest.xmlはパッケージングする際に必要なものを記載して自動で生成してくれます。なんと便利な…
なので基本的には必要になるまで気にする必要はありません
○パッケージングしたAPKが使用してるAndroidManifest.xmlの場所
プロジェクト名/Intermediate/Android以下
-ARM名_-指定API名_AndroidManifest.xmlという名前であります。
○UE4がAndroidManifest.xmlを生成してるコード
Engine\Source\Programs\UnrealBuildTool\Android\UEDeployAndroid.cs
にあるUEDeployAndroidクラス内のGenerateManifestで確認できます。
○カスタマイズする:エディタ
まずはエディタ上で編集できるものをご紹介いたします。AndroidManifest.xmlに関する設定は
プロジェクト設定(Project Settings)/ プラットフォーム(Platform)/Androidで確認できます。
Android/カテゴリー名 |
エディタ上の名前
AndroidManifest.xmlでの記述 |
内容説明 |
APKPackaging |
InstallLocation
android:installLocation |
アプリのインストールする場所を指定します。
・internalOnly
デフォルトで指定されてる設定で内部ストレージにのみインストールします。
外部ストレージにインストールできず、内部ストレージに空きがない場合でもインストールできません。
・auto
基本内部ストレージ優先でインストールします。内部ストレージに空きがなければ外部にインストールしようとします。両方インストール可能なので一度インストールされた後に移動する(内部から外部へなど)こともできます。
・preferExternal
外部ストレージを優先してインストールするようにします。しかしこれは保証はされてなくもし外部ストレージが存在しないか空きがないときは内部ストレージにインストールされる(はず)です。
インストール後の移動は可能なのでSDに入れたいのならこれを設定することで移動させることができます。 |
APKPackaging |
StoreVersion
android:versionCode |
GoogleStoreにアップするために最新か判定するために必要な数値
新しくアプリをアップデートしたい場合は、この番号が以前のアプリより大きくないといけません。
インストールした端末上では確認することができません。 |
APKPackaging |
VersionDisplayName(usually x.y)
android:versionName |
バージョン名です。
こちらはユーザーが見ることができる値です。なのでStoreVersionを更新したか確認するためにもこちらも一緒に変更することが多いです。 |
APKPackaging |
Orientation
android:screenOrientation |
アプリが対応するデバイスの向きを設定します。4.14時点で対応してるのは8種類です。
portrait
reversePortrait
sensorPortrait
landscape
reverseLandscape
sensorLandscape
sensor
fullSensor |
APKPackaging |
Minimum SDK Version
uses-sdk android:minSdkVersion |
APIの対応できる最低バージョン値 (※2)指定したバージョン以上ならアプリが動作できる(はず)
未満の場合は非対応としてインストールできなくなります。 |
APKPackaging |
Target SDK Version
uses-sdk android:targetSdkVersion |
動作保証されてるAPIバージョン値(※2)
以下の属性はすでにUE4側で追加してあるので指定しなくで大丈夫です
name
label
theme
configChanges
launchMode
screenOrientation
debuggable |
Advanced APKPackaging |
Extra Tags for <application> node |
applicationタグに追加する属性を指定できます。(※3)
hasCodeだけすでにUE4が自動生成する際必ず追加してるので不要です。 |
Advanced APKPackaging |
Extra Tags for UE4.GameActivity <activity> node |
InGame用Activityタグに追加する属性を指定できます。(※4) |
Advanced APKPackaging |
Extra Strings for <activity> section |
文字列でInGame用Activity以下の階層に記述することができます。
Intentfilterなどをここで指定することで追加できます。
ただし、注意点としてここに書いたものがそのままAndroidManifest.xmlに書かれるので文法には注意が必要です。
あとandroid.intent.category.LAUNCHERとandroid.intent.action.MAINはすでにInGame用のActivityで使用してますので指定できません。 |
Advanced APKPackaging |
Extra Strings for <application> section |
文字列でapplication以下の階層に記述することができます
別のActivityを追加するなどといった場合はここで追加ができます。こちらもここに書いたものがそのままAndroidManifest.xmlに書かれるので文法には注意が必要です。 |
Advanced APKPackaging |
Extra Permissions |
使用するパーミッションを追加します (※5)
すでに追加されてるものがあるので以下のものは指定しなくても大丈夫です
uses-sdk android:minSdkVersion
uses-sdk android:targetSdkVersion
uses-feature android:glEsVersion
android.permission.INTERNET
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.ACCESS_NETWORK_STATE
android.permission.WAKE_LOCK
android.permission.READ_PHONE_STATE
com.android.vending.CHECK_LICENSE
android.permission.ACCESS_WIFI_STATE
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.GET_ACCOUNTS
android.permission.VIBRATE |
Launch Images |
Show launch image |
これにチェックするとスプラッシュ用のActivityを自動で生成しアプリ起動時遷移させてくれるようです。

新規プロジェクト作成時、Androidを起動させると出て来るやつ
チェックを外すとInGame用のactivityにそのまま遷移させてくれます。演出など加えたい場合などはUMGなどで自前したほうが編集しやすいです |
プロジェクト設定(Project Settings)/ プロジェクト(Project)/パッケージ化(Packaging)
Project/カテゴリー名 |
エディタ上の名前
AndroidManifest.xmlでの記述 |
内容説明 |
Packaging |
ForDistribution
android:debuggable |
アプリのデバックモードの切り替え
チェックする= デバックオフ
チェックをはずす = デバックオン
DeveloperConsoleにアップする場合はデバックオフにしてないとアップできないのでtrueを設定する必要があります。 |
○カスタマイズする:テキストで
ほぼ編集はエディタから設定可能ですが一部テキストファイルからの指定も可能になっているのでそれについても紹介していきます。
配置位置は[プロジェクト名/Build/Android]以下の階層に配置することでパッケージングの際使用されます。 また内部では以下の名前で判定していますのでスペルミスには注意してください。
- ManifestActivityAdditions.txt
上記の項目[Extra Strings for <activity> section]で、できることをテキストファイルでも指定できるものです。
[Extra Strings for <activity> section]とは別に処理されるので同じものを指定すると2重定義なってしまいます。
なので使用する場合はどちらか1つに統一して管理するのがいいです
- ManifestApplicationAdditions.txt
上記の項目[Extra Strings for <application> section]で、できることをテキストファイルでも指定できるものです。
ManifestActivityAdditions.txt同様に別に処理されるのでどちらか1つに統一して管理するのがいいです。
- ManifestRequirementsAdditions.txt
上記の項目[Extra Permissions]で、できることをテキストファイルでも指定できるものです。
ManifestActivityAdditions.txt同様に別に処理されるのでどちらか1つに統一して管理するのがいいです。
- ManifestRequirementsOverride.txt
こちらは自分でアプリが使用するパーミッションをすべて記述するものです。
上記の項目[Extra Permissions]でもありますがアプリの中には全く使用しないものなどもあったりするので
必要なパーミッションがわかっている場合はこちらでパーミッションを指定してあげるのがいいと思います。
※1 AndroidManifest.xmlとは?
http://nobuo-create.net/manifest/
http://androidgamepark.blogspot.jp/2013/11/androidmanifestxmlmanifestxml.html
※2 APIバージョンについて
https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels
※3 applicationに設定できる属性について
http://www.giblock.jp/labo/androidmanifest_app_props.html
※4 activityに設定できる属性について
http://www.giblock.jp/labo/androidmanifest_activity_props.html
※5 指定できるパーミッションについて
https://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions
http://pentan.info/android/app/permission_list.html