BLOGブログ

2017.02.03UE4UE/ Mobile

[UE4] AndroidManifest.xmlをカスタマイズする

今回は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を自動で生成しアプリ起動時遷移させてくれるようです。

splashscreen_landscape

新規プロジェクト作成時、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