関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2017.02.03UE4UE/ Mobile
今回はAndroid開発において必ず必要なAndroidManifest.xmlをUE4での編集方法をご紹介いたします。
Androidでアプリを開発する際必ず必要になるxmlでここにアプリのパッケージング名やバージョン番号、使用するActivityなどなど重要な情報を記載するものです。(※1)
しかしAndroidに関しての公式ドキュメントではAndroidManifest.xmlについて触れていません。というのもUE4ではこのAndroidManifest.xmlはパッケージングする際に必要なものを記載して自動で生成してくれます。なんと便利な…
なので基本的には必要になるまで気にする必要はありません
プロジェクト名/Intermediate/Android以下
-ARM名_-指定API名_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 |
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]以下の階層に配置することでパッケージングの際使用されます。 また内部では以下の名前で判定していますのでスペルミスには注意してください。
上記の項目[Extra Strings for <activity> section]で、できることをテキストファイルでも指定できるものです。
[Extra Strings for <activity> section]とは別に処理されるので同じものを指定すると2重定義なってしまいます。
なので使用する場合はどちらか1つに統一して管理するのがいいです
上記の項目[Extra Strings for <application> section]で、できることをテキストファイルでも指定できるものです。
ManifestActivityAdditions.txt同様に別に処理されるのでどちらか1つに統一して管理するのがいいです。
上記の項目[Extra Permissions]で、できることをテキストファイルでも指定できるものです。
ManifestActivityAdditions.txt同様に別に処理されるのでどちらか1つに統一して管理するのがいいです。
こちらは自分でアプリが使用するパーミッションをすべて記述するものです。
上記の項目[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