Unityで作ったアプリをAndroidとしてビルドしてテストしましたが、次はGoogle Playで公開できるSigned Buildを作成する手順について見ていきましょう。
Signed Buildの作成
公開するための手順としては以下のようになります。
ここではアプリが完成してAndroid の実機でのテストが終わった段階から始めます
Androidアプリをリリースする上で重要なことがあります。
今後の Google Play でのアプリのセキュリティおよびパフォーマンスの改善について
- 2018 年 8 月: 新しいアプリで、ターゲット API レベル 26(Android 8.0)以降が必須になります。
- 2018 年 11 月: 既存のアプリのアップデートで、ターゲット API レベル 26 以降が必須になります。
- 2019 年以降: 毎年、
targetSdkVersion
の要件が上がります。
つまりUnityの場合それほどAndroidの込み入った機能を使っていないのでAPIレベルもゆるく考えていたかもしれませんが、API 26以上に対応しておかないといけなくなります。例えばAdaptive iconsとか…
1.Build 設定
2.icon
3.Resolution and Presentation
4.Splash Image
5.Other Settings
6.Publishing Settings
7.Install Test
Build 設定
「File」「Build Settings…」設定ダイアログを開きます。
「Add Open Scenes」でリリースしたいSceneをリストに載せチェックされている事を確認します。
PlatformがAndroidに設定されていなければAndroidに設定後「Switch Platform」ボタンをクリック
「Player Settings…」を選択
「Inspector」が現れるので各種設定をします。
以降の設定は最低限ですので、細かな設定についてはUnityのマニュアルをみてください。
Android Player Settings
icon
API 26ではAdaptive Iconsを設定します。
前景と背景の画像を使って丸型から四角型までのアイコンに対応できるようにし、アニメーションも色々とできるようになります。
https://akira-watson.com/android/adaptive-icons.html
上の参考記事によればAndroid StudioのImage Assetを使うとpaddingを見ながらいい感じに作れそうなのでアイコンを作って見ます。
background:
ということで、必要なアイコンは3タイプです。一番大きな xxxhdpiを設定すると他が自動的に作成されます。
- Adaptive Icons (API 26)
- 432×432
- Round Icons (API 25)
- 192×192
- Legacy Icons (legacy…)
- 192×192
この画像をImage Assetに設定して、TrimやResizeでいい感じに納めます。
これで「Finish」してアイコンファイルを生成
プロジェクトの中を見に行くと「xxxhdpi」に4つファイルができています。
この4つをUnityのAssetにImportして
Texture Typeを Sprite にします。
それぞれを画像サイズなどを見て、xxxhdpiにドラッグ&ドロップすると小さいアイコンが自動で作成されます。
Adaptive icons:
Round icons:
Legacy icons:
Resolution and Presentation
画面ローテーションの初期設定と
Status Bar の表示・非表示を設定をします
ゲームではあまりローテーションしないほうが扱いやすいかもしれません。またdpiの調整もできます。Resolution Scaling
Splash Image
Splash Image は有料版での機能です。無料ライセンスではUnityのロゴがでます。
Other Settings
Identificationの設定は必須です
- Bundel Identifier:
「Company Name」と「Product Name」の設定は既に終わっていると思いますが
com.hoge.TestApp のようにInspectorのCompany NameとProduct Nameから作ります。 - Version:
ドットで区切られた(例えば4.3.2)数字を含む文字列の一般的なフォーマットで指定 - Bundle Version Code:
ユーザーには表示されないバージョン番号、バージョンアップでカウントアップ - Minimum API Level:
AndroidのAPIレベルでこれ以上をサポートする。 - Target API Level:
Automatic (highest installed) にデフォルトでなっています。
Publishing Settings
「Publishing Settings」はアプリの署名について設定します。
Keystore
まだ作成してなければ新しく作ります
「Create New Keystore」にチェック
「Browse Keustore」で保存場所を決めます
あとは、
「Keystore password」と「Confirm password」に
パスワードを入力します。
パスワードを忘れると公開したアプリのバージョンアップができなくなりますので、必ずどこかに保存しておきましょう。
Key の Alias では
「Create a new key」を選択
すでに作成済みならば「Use Existing Keystore」でBrowseしてファイルを選択します。
Key Creation には年数、国コードなどを入れます
元の画面に戻って、Alias は今作ったものを選択してパスワードを入れます
また、AliasはUnsigned(debug)のままにするとGoogle Play のアップロードではじかれます。
これで、「Build」を実行
apk の保存場所を決めます
ビルド後 apk ファイルができていればそれがSigned Buildになります。
この後は、実機でテストです、Terminalなどでインストールしてみましょう。
1 |
adb install xxx.apk |
参考: 公開・未公開アプリの実行ファイルapk をインストールするには
Install Test
実機にインストールしました、アイコンができています。
起動させました。
さて、前出のAndroid 8.0 以上の対応について、Automatic(Highest Installed)の設定だったのですが大丈夫なのか調べてみましょう。
ということで、apkを出力させるのではなくAndroidプロジェクトを「Export」してみます。
「Export Project」にチェックして「Export」をクリック
出力先にプロジェクトが展開されます。
build.gradleをのぞいてみると
targetSdkVersion 27 となっているので大丈夫ですね
これは私のAndroid SDKが27まで設定してあるからでSDKが25だとまずいわけです。
問題なければ、Developer Consoleに登録してGoogle Playで公開ですが
署名についてはGoogle Play App Signingをした方がいいでしょう。
最近このようなエラーでビルドが失敗することがあります
Error building Player: IOException: Sharing violation on path C:_unityTestAppTempStagingArearesvaluesstrings.xml
特に2回目以降のビルド、Windows7 などの特徴がありますが
対応策としては
プロジェクトフォルダーをエクスプローラーで選択して、
「プロパティ」「詳細設定」の中の
「・・・インデックスを付ける」のチェックを外す
apk, keystore を削除
Unity を管理者権限で起動してやり直す
これらの事で解消しました
References:
Android Player Settings
Image Asset Studio を使用したアプリアイコン作成 | Android Developers