【Unity】Androidビルドで実は大事なマニフェストファイルの簡単な紹介
Unityで作ったゲームをAndroid向けにビルドする際は、多くの場合Unity側で必要なファイルを生成してくれます。
Androidアプリではマニフェストファイルというアプリに関する情報を説明するためのファイルがあるのですが、これも自動的に作ってくれます。便利ですね。
Unityから直接apkファイルを作成する場合は見かけることも少ないかもしれませんが、実は結構大事なファイルだったりするので簡単に紹介します。
Androidでゴリゴリ開発している人にとっては既知の情報かもしれません。
Androidビルドで実は大事なマニフェストファイル
マニフェストファイルはアプリのパッケージ名や、アプリが使用する権限、アプリのコンポーネントなどの情報が記載されたファイルです。マニフェスト(Manifest)とは飛行機の積荷目録や乗客名簿を意味する言葉。Manifestoだと宣言書、日本だと公約などを表します。どちらも何かを明らかにする意味合いを持っています。
AndroidではAndroidManifest.xmlというファイルにこれらの情報が記載されます。
アプリに関する情報はビルド時に使われるのに加えて、アプリストア(GooglePlay)に説明するとき、Android端末でアプリを実行するときに使われます。
例えばどんな権限を使うかの情報をGooglePlayで見たことがあるかもしれません。また、実際にダウンロードしてアプリを実行した時に「このアプリはほにゃららの権限を使います」みたいなダイアログが表示されたのを見たことがあるかもしれません。
アプリがユーザーの害になるものではないということを明らかにするためにもこのマニフェストファイルが重要な役割を持っています。
ちなみにAndroidのプロジェクトではGradleに関するファイル(gradle.buidなど)もあります。こちらにもアプリのパッケージ名などが記載されますが、gradle.buildはビルド時に使うファイルなので、AndroidManifest.xmlの方が使われる場所が多かったりします。
Unityでは自動的に作成される
UnityでAndroid向けにビルドする場合、「あれ? AndroidManifest.xmlを書いたっけ?」となるかもしれません。実はUnityではプロジェクト内の情報を元に自動的にAndroidManifest.xmlを作成してくれます。
PlayerSettingsなどでAndroidに関する情報を入力しますが、これらの情報をマニフェストファイルとしてまとめてくれます。
なので、Unityユーザーはマニフェストファイルのことをあまり気にしなくても済んでいます。
UnityにおけるAndroidマニフェストファイルの作成プロセスは以下のページもご参照ください。
Unity2019.3からは2つのAndroidManifest.xmlが生成されるようになっていて、「launcher」と「unityLibrary」の2箇所で作成されます。「launcher」の方はアプリ名やアイコン、アプリのインストール場所(内部ストレージかSDカードか)といった情報が記載され、「unityLibrary」の方はアクティビティやインテント、パーミッションなど、より詳細に情報が記載されます。
それ以前のバージョンではひとつのマニフェストファイルにまとまっています。
自分でマニフェストファイルを追加できる
場合によっては自分でマニフェストファイルを追加したいこともあります。例えば外部のツールを使うために、そのツールが必要とする権限などをマニフェストファイルに追加するといった場合です。2, 3年前の話ですがNCMB(ニフティクラウドモバイルバックエンド)をアプリに実装した時には、マニフェストに追記が必要でした。
UnityではAssets/Plugins/AndroidのフォルダにAndroidManifest.xmlを配置しておくことで、Unityが生成するマニフェストファイルと私たちがカスタマイズしたマニフェストファイルをマージ(統合)してくれます。
マージした結果が正しいかどうかは、直接アプリのapkをビルドするのではなくプロジェクトをエクスボートして確かめると安心です。
まとめ
UnityでAndroidアプリをビルドする時には自動的に生成されるので、もしかしたらあまり目にする機会がないかもしれないマニフェストファイルについて簡単に紹介しました。
まず存在を認識してもらうような位置付けの記事なので詳細までは立ち入りませんでしたが、プロジェクトをエクスボートしてどんなことが書かれているか確認してみるとAndroidビルドも怖くなくなる……かも。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】Android向けにビルドするときに見かけるGradle(グレイドル)って? 2020.12.20
-
次の記事
【Unity】AndroidSDK、UnityのものとAndroid Studioのもの、どっち使う? 2020.12.22
いつも拝見させて頂いております。
Andoroidに初めてアプリを登録しようと思っていたのですが「Firebase」や「keytool」とか聞かない言葉がたくさんありなかなか難しいです。
Unity 2019.4.20f1
ですがマニフェストが下記にありました。
\Assets\Plugins\Android\FirebaseApp.androidlib\AndroidManifest.xml
今まで避けていましたがFirebaseは必要なのでしょうか?
ご覧いただきありがとうございます!
既にマニュフェストファイルがあるようなので、FirebaseのSDKをプロジェクトに導入された感じですかね。
クラウド上にプレイデータなどを保存する機能や、クラウド上でコードを実行する機能、端末にプッシュ通知を送信する機能など、
こうした機能を使わないゲームであればFirebaseを使わなくても作成・リリースできます。
かなり前に一度トライしたのですが全く分からず挫折してしまいました。
その時に出来たのかもしれません。
一人でずっと悩んでおりました。
これですっきりしました。
Unity側からのAndroidアプリ作成のレクチャーなどないのでなかなか大変ですね。
わからないながらも本日初めて内部テストが成功しました。
記事調べているとtotoさんの記事がたまにズバリとヒットします。
Gradleの記事もよかったです。
また参考にさせて頂きます。
ありがとうございました。
おっしゃる通り、Unity側ではUnityの範囲内の情報が多いので、Android向けの細かい部分については他の人の事例を参考にしないといけない部分もありますよね。
内部テストが成功したとのことで良かったです!
少しでもお役に立てたのなら幸いです。