2026/03/21
ビルド・プロジェクト設定
環境セットアップ
Unity Hub → Installs → 対象 version → Add Modules
→ Android Build Support:☑︎
→ Android SDK & NDK Tools:☑︎
→ OpenJDK:☑︎
Player Settings
File → Build Settings → Player Settings → Android タブ
| 設定項目 | 概要 | 推奨値 |
|---|---|---|
| Package Name | アプリの一意識別子 | com.会社名.アプリ名 |
| Version | ユーザー向けバージョン表示 | 1.0.0 |
| Bundle Version Code | ストア管理用の整数値 | リリースごとに必ず増加 |
| Minimum API Level | 要求する最低限の API Level | |
| Target API Level | ターゲット API Level | |
| Scripting Backend | コード実行方式 | IL2CPP |
| Target Architectures | 対象 CPU アーキテクチャ | ARM64 必須 |
Scripting Backend:Mono vs IL2CPP
| Mono | IL2CPP | |
|---|---|---|
| ビルド速度 | 速い | 遅い |
| 実行速度 | 普通 | 速い |
| 用途 | 開発中 | 本番リリース |
デバッグ方法
ログ出力
// 本番ビルドでのログ制御(条件付きコンパイル)
public static class GameLogger
{
[System.Diagnostics.Conditional("DEVELOPMENT_BUILD")]
[System.Diagnostics.Conditional("UNITY_EDITOR")]
public static void Log(string message)
{
// Development Build 以外では呼び出し自体がコンパイル時に除去される
Debug.Log(message);
}
}
ログ確認(Logcat)
実機デバッグの基本となる、Android システム全体のログを出力・確認するツール
Unity の Debug.Log も出力される
Android Logcat パッケージ(推奨)
Unity Editor 上で Logcat を確認できる
フィルタ・カラー分類などが使えてデバッグ効率が大幅に上がる
Package Manager → Unity Registry → Android Logcat を追加
Window → Analysis → Android Logcat
adb(Android Debug Bridge)
USB デバッグを有効にした実機を接続して以下のコマンドを使う
# デバイスの接続確認
adb devices
# Logcat のリアルタイム出力
adb logcat
# Unity のログのみフィルタ(タグで絞り込む)
adb logcat -s Unity
# 特定のパッケージのみ表示(Android 7.0 以降)
adb logcat --pid=$(adb shell pidof -s com.yourcompany.yourapp)
# ログをファイルに保存
adb logcat -s Unity > unity_log.txt
# ログレベルでフィルタ(E=Error W=Warn I=Info D=Debug V=Verbose)
adb logcat *:E
クラッシュ時のデバッグ
tombstones を確認する
# クラッシュ時のトゥームストーン(詳細クラッシュログ)を確認
adb bugreport > bugreport.zip
# → zip を展開して tombstones フォルダを確認
# IL2CPP のクラッシュは symbolicate が必要
# ビルド時に生成される symbols.zip を保管しておく
# → Firebase Crashlytics に symbols をアップロードするとシンボル付きスタックトレースが見られる
配布方法(APK/AAB)
APK(Android Package)
Android アプリの従来の配布形式
1ファイルにすべてのアーキテクチャ・リソースが含まれる
AAB(Android App Bundle)
Google Play での配布専用の形式
Google Play がデバイスに合わせて最適な APK を生成して配信する
# keystore の生成
keytool -genkey ...
- https://docs.unity3d.com/ja/2023.2/Manual/android-keystore-create.html
- https://docs.oracle.com/javase/jp/11/tools/keytool.html
ビルドシステム
Gradle
Android ビルドシステム
Unity が Android 向けにビルドする際、内部的に Gradle を使って APK / AAB を生成する
Unity C# コード
↓ IL2CPP でネイティブコードに変換
Android プロジェクト(Java / Kotlin / C++)を生成
↓ Gradle がコンパイル・パッケージング
APK / AAB を生成
Gradle ファイルの場所と構成
Unity プロジェクトの Assets/Plugins/Android/ 以下にカスタム Gradle ファイルを置くことで設定を上書きできる
Assets/Plugins/Android/
├ mainTemplate.gradle ← アプリのメイン設定
├ gradleTemplate.properties ← Gradle のプロパティ設定
├ launcherTemplate.gradle ← ランチャー設定
└ baseProjectTemplate.gradle ← プロジェクト全体設定
// mainTemplate.gradle の例
// 依存ライブラリの追加
dependencies {
implementation 'com.google.firebase:firebase-analytics:21.5.0'
implementation 'com.google.android.gms:play-services-ads:22.6.0'
// **DEPS** ← Unity が自動追記するため消さない
}
android {
defaultConfig {
// **APPLICATIONID** は Unity が自動置換
applicationId "**APPLICATIONID**"
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
// マルチデックス対応(メソッド数が上限を超える場合)
multiDexEnabled true
}
}
Android 権限・パーミッション管理
パーミッション種類
| 種別 | 概要 | 対応 |
|---|---|---|
| 通常権限 | インターネットアクセスなど | AndroidManifest.xmlに宣言(自動付与) |
| 危険権限 | カメラ・位置情報・マイクなど | AndroidManifest.xmlに宣言 + 実行時にユーザーへの許可ダイアログが必要 |
AndroidManifest.xml 設定
Unity の Assets/Plugins/Android/AndroidManifest.xml に配置する
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 通常権限(自動付与) -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 危険権限(実行時ダイアログが必要) -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application>
<!-- ... -->
</application>
</manifest>
注意点
ビルド関連
ARM64 を忘れる
- Target Architectures に ARMv7(32bit)のみ指定すると Google Play の 64bit 要件に違反してリジェクトされる
- ARM64 を必ず含める(ARMv7 は削除)
Bundle Version Code の重複
- Google Play は同じ Bundle Version Code のアップロードを拒否する
- CI/CD でビルドごとに自動インクリメントする仕組みを作る
Development Build のまま本番アップロード
- Development Build が ON だと
- パフォーマンスが低下する
- Profiler 接続用のポートが開いたまま
- 本番ビルドは必ず Development Build を OFF にする
- File → Build Settings を開く
- 画面下部の「Development Build」チェックボックスを OFF にする
- Build を実行する
Gradle 関連
Gradle バージョンの競合
- Unity のバージョンアップに伴い対応 Gradle バージョンが変わる
- 外部プラグインの要求バージョンと競合してビルドが通らないことがある
- まず Unity の推奨 Gradle バージョンを確認してから
baseProjectTemplate.gradleの classpath を調整する
マルチデックス(MultiDex)問題
-
依存ライブラリが増えるとメソッド数が上限を超えて “Cannot fit requested classes in a single dex file” エラーが出る
-
mainTemplate.gradleにmultiDexEnabled trueを追加する
minifyEnabled によるクラス削除
-
リリースビルドの ProGuard / R8 により、Unity からの呼び出しが実行時エラーになってしまう
-
proguard-user.txtにプラグインのクラスを keep 指定する -
https://developer.android.com/topic/performance/app-optimization/enable-app-optimization?hl=ja
実機デバッグ関連
USB デバッグが有効になっていない
- 開発者オプション → USB デバッグ を ON にする必要がある
adb で複数デバイスが繋がっている場合
- adb devices で SERIAL を確認して
adb -s SERIAL logcatのように指定する
Logcat が大量のログで埋もれる
- Unity タグでフィルタするか、Android Logcat パッケージの Filter 機能でパッケージ名指定フィルタを活用する
実機とエミュレータでの挙動の違い
- GPU・メモリ・センサーの挙動は実機と異なる場合がある
- パフォーマンステストは必ず実機で行う
参考
- Unity Android 用設定:https://docs.unity3d.com/ja/2023.2/Manual/android-sdksetup.html
- Unity Logcat Package:https://docs.unity3d.com/Packages/com.unity.mobile.android-logcat@latest
- Android API Level:https://developer.android.com/tools/releases/platforms