やっとの思いで完成したそろばんアプリをついに世界に向けてリリースするその時がやってきました。Google Playへのリリースに向けて、アプリをビルドするためには開発時とは異なる設定でビルドする必要があります。今回はリリースのためのビルド手順について説明していきます。
Build Settingsの設定
Build Settingsで気を付けるのは以下の二点になります。
- Build App Bundleにチェックをつけて、.aabファイルを出力する
- Development Buildのチェックをはずす
いつも生成していたapkファイルをGoogle Playにアップロードすると、以下の警告が発生してしまいます。
APK が最適化されていません
警告:
この APK では、使用されていないコードやリソースがユーザーに送信されます。Android App Bundle を使用すると、アプリのサイズを小さくすることができます。デバイスの設定に合わせてアプリを最適化しないと、ユーザーのデバイスにダウンロードしてインストールするアプリのサイズが必要以上に大きくなります。アプリは、サイズが大きくなるほどインストール成功率の低下を招き、ユーザーのデバイスのストレージを消費します。
解決策:
Android App Bundle を使用してデバイスの設定に合わせて自動的に最適化するか、複数の APK を使って自分で管理します。
これを回避するために、aabファイルを生成してリリースするようにします。
Player Settingsの設定
続いてPlayer Settingsで詳細な設定を行います。Build Settingのダイアログの左下のボタンを押して設定画面を開きます。まずは共通設定が上部にあるのでそれらを入力してきます。
名前 | 意味 |
Company Name | 会社の名前。プレファレンスファイルの場所を特定するのに使用される。 |
Product Name | 製品名。アプリ実行中のメニューバーに表示される他、プレファレンスファイルの場所を特定するのに使用される。 |
Version | アプリのバージョン |
Default Icon | 全てのアプリで共通して使用するアイコン。Player事に個別にアイコンを設定することで、上書きされます。ここでは設定不要。 |
Default Cursor | 全てのアプリで共通して使用するカーソル。設定不要。 |
Cursor Hotspot | カーソルのホットスポットのオフセット位置。設定不要。 |
アイコンもAndroid固有の設定で設定するので、ここではCompany Name、Product Name、Versionだけ記載しました。
Icon設定
以下通り、アイコンにもいくつか種類があるようなので、どういったものかを確認していきます。
種類 | 説明 |
Adaptive | 二層で構成されるアイコンで、Androidのシステム側でアニメーションさせたり自由なアウトラインで切り取られて使用される。アプリ開発者がアニメーションを指定することはできない。 |
Round | 丸いアイコン。 |
Legacy | 昔からあるアイコン。アプリ開発者が自由に決める。 |
アイコン作るのめんどくさいなぁとか絵心ないからつらいなぁと思っていたのですが、Unityの画面キャプチャとAndroid StudioのImage Assetというツールを使えば簡単に全てのサイズのアイコンが生成できることがわかりました。手順についてはまた別の機会にまとめたいと思います。非常に短時間で以下のアイコンを生成しました。
Resolution and Presentation
色々と設定できる項目はあります。私が必要だった設定項目は以下の箇所になります。自動で回転しますが、横画面のみしか許可したくないので、PortraitとPortrait Upside Downはチェックを外しています。
Splash Image
アプリ起動時、最初に出てくる例の画面の設定になります。
UnityのPersonalライセンスでは設定することはできないので、そのままにしておきます。
Other Settings
色々設定できる箇所はあるのですが、Google Playへのリリースにあたって必要となる箇所を説明します。
種類 | 説明 |
Package Name | パッケージ名です。かぶらなければよいようですが、使用しているドメインを逆から並べる+アプリ名としています。 |
Version | アプリのバージョン |
Bundle Version Code | アプリの内部バージョン番号。ユーザーには見えないバージョン。Google Playに一度アップロードしたBundle Version Codeは、そのアップロードデータを削除しても同じものは使えないので、リリースビルドの度に加算していく必要があります。 |
Minimum API Level | アプリケーションを実行するのに必要な API の最小API レベル。バージョンが新しいと動かないデバイスが増えます。 |
Scripting Backend | CILをRuntimeで実行するか(mono)CILをC++に変換、コンパイルしたnativeコードで実行するか(IL2CPP)の選択。IL2CPPを選択します。 |
Tartget Architectures | ARMv7とARM64の両方にチェックを入れます。 |
上記の通り設定しています。Bundle Version Codeが同一のアプリをアップロードしようとするとGoogle Play Consoleで以下のエラーが発生します。
アップロードできませんでした
バージョン コード 1 の APK または Android App Bundle がすでに存在するため、別のバージョン コードを使用する必要があります。
また、Tartget ArchitecturesでARMv7しか設定していないと、以下のエラーがでます。
エラー
このリリースは Google Play の 64 ビット要件に準拠していません
以下の APK または App Bundle は 64 ビットのデバイスで利用できますが、32 ビット向けネイティブ コードしか含まれていません。1
アプリには 64 ビットと 32 ビットのネイティブ コードを含めます。Android App Bundle 公開形式を使用して、各デバイスのアーキテクチャが自動的に必要なネイティブ コードだけを受け取るようにします。これにより、アプリ全体のサイズが増大することを回避できます。詳細
どちらのエラーもここの設定で回避できるので忘れないように設定しておいてください。
Publishing Settings
アプリを署名するための設定になります。keystoreをまだ作成していない場合はKeyStore Managerから鍵を作成していきます。keystoreの配置は間違って削除しないようにわかりやすい場所におくようにします。鍵を削除してしまった場合、同一アプリが作成できなくなり、アプリのアップデートできなくなってしまうので注意してください。
ファイルを作成すると以下のようにパスが表示されますので、以下の情報を追記していきます。
種類 | 説明 |
Password | パスワード |
Confirm Password | パスワード確認のため再入力 |
Alias | 証明書名 任意 |
Password | パスワード |
Confirm Password | パスワード確認のため再入力 |
Validity | 有効期限 |
First and Last Name | 名前 |
以下 | 任意なので、入力不要 |
全ての入力が完了したらAdd Keyボダンで鍵を追加します。プロジェクトの鍵にしてよいか確認がでるので、YES。
これで鍵の設定が完了しました。
ビルドする
アプリのビルド画面からビルドしてみます。IL2CPP(NDK)でのビルドはmonoに比べて時間がかかります。WindowsのDefenderが動いているとビルドに時間がかかるようなので、Defenderを無効にしてビルドすると改善するかと思います。
普段はmonoで、リリースに向けた確認からはIL2CPPを使うというのが便利かもしれません。
まとめ
開発時に行っているビルドのままのアプリをリリースしようとするとうまくいかず、いろいろと手間取りました。特にAndroid固有の設定をしていないとGoogle Play Consoleにはじかれることが多く、調査に手間取りました。
アプリリリースのためのビルドについて一気通貫で説明している記事も世の中に少なかったので、自分の備忘録としてもまとめることができてよかったです。
コメント