U
22 / 22 · 10 分
FAQ

デスクトップのプロジェクトから実機の APK へ

短い答え

APK をビルドして Android 実機に入れるには?

Android Build Support を入れ、プラットフォームを Android に切り替え、自分専用のパッケージ名を付けてビルドします。初ビルドで詰まるのは Unity が SDK/JDK のパスを見つけられないこと。後で効くのは既定の com.DefaultCompany のまま公開することで、Google Play に出すとパッケージ名は二度と変えられません。

APK をスマホに入れるのは 4 つの手順と 2 つの罠です。手順だけなら初めてでも 20 分ほど。半日になってしまうのは、この 2 つの罠のせいです。

1 — Android Build Support をインストール

  1. 1

    Unity Hub を開いて Installs に進み、お使いの Unity バージョンに付いた歯車メニューからモジュールを追加します。

  2. 2

    Android Build Support にチェックし、その下にある 2 項目 SDK & NDK Tools と OpenJDK にもチェックします。1 つ目だけではなく 3 つとも必要です。

  3. 3

    数ギガバイトをダウンロードします。プロジェクトを開く前に完了まで待ってください。途中で開くと、プラットフォーム一覧は Android を引き続き利用不可として表示します。

2 — プラットフォームを切り替える

プラットフォームを切り替えると、プロジェクト内のすべてのテクスチャを Android が読める形式で再インポートします。小さなプロジェクトなら 1 分、大きなプロジェクトならコーヒーを淹れる前に始めておく価値があります。これはプラットフォームごとに 1 回だけ起きます。

  1. 1

    File▸Build Profiles(Unity 6 以前は Build Settings)を開いて Android を選び、Switch Platform を押します。

  2. 2

    ビルドに含めたい scene をすべて開いた状態で Add Open Scenes を押します。この一覧に無い scene は、ビルド後のゲームには存在しません。

  3. 3

    index 0 の scene が、ゲーム起動時に表示される scene です。まだ上になければ、ドラッグして一番上へ移動してください。

3 — 本当に重要な Player Settings

  • Package Name —— 必ず変更してください。既定の com.DefaultCompany.ProjectName でもテスト用のインストールは問題無く動きますが、package name は Google Play におけるアプリの永続的な ID で、公開後は 2 度と変更できません。

  • Minimum API Level —— 24 以上にしておけば、今使われているほぼすべてのスマホをカバーでき、互換性のための作業も一気に避けられます。

  • Scripting Backend は IL2CPP、Target Architectures は ARM64 —— Play Store は数年前から 64 ビットが必須です。Mono や ARMv7 だけでは、アップロード時に受け付けてもらえません。

4 — ビルドしてインストール

  1. 1

    スマホ側では、Settings > About の Build number を 7 回タップして Developer options を有効にし、USB debugging をオンにします。

  2. 2

    ケーブルで接続し、スマホの画面に出る Allow USB debugging の確認を承認します。承認しないと、Unity は端末を一覧に表示しません。

  3. 3

    Build And Run を押します。.apk は Assets と同じ階層の Builds フォルダに保存し、Assets の中に入れないでください —— Unity が自分のビルドを asset として読み込もうとしてしまいます。

APK と AAB、どちらにする?

  • テストには APK —— ファイル 1 つ送れば、相手はそのままインストールできます。

  • Play Store 用 AAB —— こちらが必須です。Google が AAB から端末別の APK を生成するため、AAB を自分でインストールすることはできません。

  • Build Profiles で Build App Bundle にチェックを入れると切り替えられます。それ以外は何も変わりません。

インストールできるのに起動で落ちるとき

The one command that tells you why
# Only your app's messages, from the moment you run it.
adb logcat -c && adb logcat Unity:V CRASH:V AndroidRuntime:E '*:S'

これを作るレッスン

ビルド、インストール、実機でのデバッグ

この記事はそれだけで完結するレシピです。コースでは同じものを、5 つのタブを貫くひとつのプロジェクトの一部として作ります — モバイルへ書き出す のレッスン 05。