Unity と Firebase のトラブルシューティングとよくある質問

このページでは、Firebase の使用時に発生する可能性のある Unity 固有の問題に関するヒントとトラブルシューティングについて説明します。

その他の課題がある場合や、該当する問題が以下で見つからない場合は、メインの Firebase のよくある質問で、Firebase 全体またはプロダクト固有のよくある質問をご覧ください。

Android アプリのビルド時のシングル dex に関する問題

Android アプリのビルド時、シングル dex ファイルに関連するビルドエラーが発生する場合があります。プロジェクトで Gradle ビルドシステムを使用するように構成されている場合は、次のようなエラー メッセージが表示されます。

Cannot fit requested classes in a single dex file.

Dalvik 実行可能ファイル(.dex)は、クラス定義のセットとそれに関連する Android アプリの付属データ(.apk)を保持するために使用されます。1 つのシングル dex ファイルは最大で 65,536 のメソッドを参照できます。プロジェクト内のすべての Android ライブラリのメソッドの総数がこの上限を超えると、ビルドは失敗します。

Unity は 2017.2 で軽量化を導入しました。これは、Proguard(または Unity の一部のバージョンでは他のツール)を使用して未使用のコードを取り除き、シングル dex ファイルで参照されるメソッドの総数を減らすことができるものです。このオプションは [Player Settings] > [Android] > [Publishing Settings] > [Minify] にあります。これらのオプションは Unity のバージョンによって異なる可能性があるため、Unity の公式ドキュメントをご覧ください。

参照されているメソッドの数がこの上限を超えている場合は、multidex を有効にするという方法もあります。Unity でこれを行う方法はいくつかあります。

  • Player SettingsCustom Gradle Template が有効になっている場合は、mainTemplate.gradle を変更します。
  • Android Studio を使用してエクスポートされたプロジェクトをビルドする場合は、モジュール レベルの build.gradle ファイルを変更します。

詳しくは、Multidex ユーザーガイドをご覧ください。

minSdkVersion 23 で Android 用にビルドする際の問題

Android 用にビルドする際に minSdkVersion 23 をターゲットにすると、通常は Gradle タスク「:launcher:mergeExtDexDebug」の dex 化ステップで失敗し、Android ライブラリで「変換できませんでした」と表示されます。これは、ほとんどの Unity エディタで使用されている Android SDK のデフォルトの dex ツールのバグが原因で発生します。この問題は、次の方法で修正できます。

  • minSdkVersion を 24 に設定します。
  • [Player Settings] > [Android] > [Publishing Settings] > [Minify] で Android の最小化を有効にします。
  • settingsTemplate.gradle ファイルに以下を追加して、別のバージョンの dex ツールを指定します。
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

CocoaPods を使用して iOS 用にビルドする際の問題

iOS 用にビルドする際、言語ロケールまたは UTF-8 エンコードに関するエラーが発生して CocoaPods のインストールが失敗することがあります。現在、この問題を回避するにはいくつかの方法があります。

  • ターミナルから pod install を直接実行し、出力された xcworkspace ファイルを開く。

  • CocoaPods のバージョンを 1.10.2 にダウングレードする(この問題が発生するバージョンは 1.11 以降のため)。

  • ~/.bash_profile または同等のファイルに、export LANG=en_US.UTF-8 を追加する。

Firebase Unity SDK のバージョンを更新する方法

Firebase Unity SDK のバージョンを更新するプロセスは、最初にインポートされた方法によって異なります。次の 2 つのインポート方法があります。

  • プロジェクトの Assets/ ディレクトリに .unitypackage ファイルをインポートする
  • Unity Package Manager(UPM)を使用してインポートする
    • これは、Unity 2018.4 以降のパッケージを管理する場合に推奨される方法です。
    • この方法を使用すると、今後のバージョンの更新がより簡単になり、Assets/ ディレクトリの内容がすっきりします。

Unity プロジェクトでは、いずれか 1 つのインポート方法だけを使用してすべての Firebase パッケージを管理してください。以下の手順では、個々のパッケージのバージョンを更新する方法に加えて、必要に応じてパッケージ管理を UPM に移行する方法についても説明しています(UPM は推奨されるインポート方法です)。