Check out what’s new from Firebase at Google I/O 2022. Learn more

UnityとFirebaseのトラブルシューティングとFAQ

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

他の課題がありますか、または以下に概説されている問題が表示されませんか?より多くの汎Firebaseまたは製品固有のFAQについては、メインのFirebaseFAQを確認してください。

Unity2017.x以降を使用する場合の.NETの互換性

Firebaseは、Unity2017以降の実験的なビルドオプションとして.NET4.xをサポートしています。 Firebaseプラグインは、 Parse SDKのコンポーネントを使用して、以前のバージョンの.NETでいくつかの.NET4.xクラスを提供します。

したがって、Firebase Unity SDKバージョン5.4.0以降では、FirebaseUnitySDKのdotnet3およびdotnet4ディレクトリにある.NET3.xまたは.NET4.xのいずれかと互換性のあるプラグインが提供されます。

プロジェクトで有効になっている.NETバージョンと互換性のないFirebaseプラグインをインポートすると、ParseSDKによって実装されている.NETFrameworkの一部のタイプからのコンパイルエラーが表示されます。

.NET 3.xを使用している場合、コンパイルエラーを解決するには:

  1. すべてのプラットフォームで次のDLLを削除または無効にします。
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. すべてのプラットフォームで次のDLLを有効にします。
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

.NET 4.xを使用している場合、コンパイルエラーを解決するには:

  1. すべてのプラットフォームで次のDLLを削除または無効にします。
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. すべてのプラットフォームで次のDLLを有効にします。
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

別のFirebaseプラグインをインポートする場合:

  • Unityプロジェクトで、[アセット]>[ Playサービスリゾルバー]>[バージョンハンドラー] >[更新]に移動して、プロジェクトの正しいDLLを有効にします。

Unity 2017.1.NET4.xプロジェクトでのIL2CPPコンパイル

Firebaseは、Unity2017以降の実験的なビルドオプションとして.NET4.xをサポートしています。 Firebaseプラグインは、 Parse SDKのコンポーネントを使用して、以前のバージョンの.NETでいくつかの.NET4.xクラスを提供します。

したがって、Firebase Unity SDKバージョン5.4.0以降では、型を解析する型転送DLL(たとえば、 System.Threading.Tasks.Taskの解析実装)を.NETFrameworkに転送します。残念ながら、Unity 2017.1.xに同梱されているIL2CPP(C#をC ++に変換するトランスパイラー)は、タイプ転送DLLを正しく処理しないため、次のようなビルドエラーが発生します。

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

現在、Unity2017.1で.NET4.x IL2CPPビルドエラーに利用できる回避策はありません。そのため、IL2CPPでコンパイルされたプロジェクトで.NET 4.xを使用するには、Unity2017.2以降にアップグレードする必要があります。

Unity2017.2ネットワーキング

Firebase Realtime Databaseは、.NETネットワークスタックを使用してTLSネットワーク接続を作成します。 Unity2017.2で.NET4.6を使用するとTLS機能が壊れ、RealtimeDatabaseプラグインがエディターとデスクトップで失敗します。

この問題の回避策はないため、バージョン2017.1や2017.3などの別のバージョンのUnityを使用する必要があります。

Unity2020にFirebaseAndroid設定ファイルがありません

Gradleビルドをカスタマイズする機能を持たないバージョンのUnityをサポートするために、Firebaseエディターツールは、にパッケージ化されるAndroidリソースとしてAssets/Plugins/Android/Firebase/res/values/google-services.xmlを生成します。 Androidビルド。これにより、FirebaseSDKはこれを使用してデフォルトのFirebaseAppインスタンスを初期化できます。

Unity 2020では、すべてのAndroidリソースが.androidlibサフィックスの付いたディレクトリにある必要があります。プロジェクトでAssets/Plugins/Android/Firebaseディレクトリを生成するFirebaseSDKを使用している場合は、名前をAssets/Plugins/Android/Firebase.androidlibに変更します。 AndroidManifest.xmlproject.propertiesres/values/google-services.xmlが含まれていることを確認してください。

Androidアプリの構築中のシングルデックスの問題

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

Cannot fit requested classes in a single dex file.

Dalvik Executable( .dex )ファイルは、Androidアプリケーション( .apk )のクラス定義とそれに関連する付属データのセットを保持するために使用されます。単一のdexファイルは、65,536個のメソッドへの参照に制限されています。プロジェクト内のすべてのAndroidライブラリのメソッドの総数がこの制限を超えると、ビルドは失敗します。

Unityは2017.2でMinificationを導入しました。これは、Proguard(またはUnityの一部のバージョンでは他のツール)を使用して未使用のコードを取り除き、単一のdexファイルで参照されるメソッドの総数を減らすことができます。このオプションは、 [プレーヤーの設定]>[Android]>[公開の設定]>[縮小]にあります。 Unityのバージョンによってオプションが異なる場合があるため、Unityの公式ドキュメントを参照してください。

参照されるメソッドの数がまだ制限を超えている場合、別のオプションはmultidexを有効にすることです。 Unityでこれを実現する方法は複数あります。

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

詳細については、multidexユーザーガイドをご覧ください。

Unity2017およびUnity2018(Firebase Unity SDK 8.0.0以降)でのAndroidビルドのJava8サポートと脱糖

2021年5月(Firebase BoM v28.0.0)、FirebaseはすべてのAndroidライブラリの脱糖を無効にしました(リリースノートを参照)。 Firebase Unity SDK(8.0.0以降)を使用してAndroidアプリをビルドすると、次のビルドエラーが表示される場合があります。

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

この変更は、Unity2017およびUnity2018のAndroidビルドにのみ影響します。 Unityの新しいバージョンでは、デフォルトでcompileOptionsブロックがgradleビルドファイルに追加されます。 Unity2017およびUnity2018でこのビルドエラーを修正するには、次のいずれかを実行します。

  • compileOptionsブロックをgradleテンプレートに追加します。

    1. ビルドシステムとしてGradleを使用します。
    2. Player SettingsCustom Gradle Templateを有効にします。
    3. mainTemplate.gradle (またはAndroid Studio用のプロジェクトをエクスポートする場合はモジュールレベルのbuild.gradle )に次の行を追加します。

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • または、AndroidプロジェクトのminSdkVersionを26以上に増やします。

Androidのトラブルシューティング-ビルドの失敗の脱糖も参照してください。

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

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

  • ターミナルから、 pod installを直接実行し、結果のxcworkspaceファイルを開きます。

  • Cocoapodsのバージョンを1.10.2にダウングレードします。この問題は、バージョン1.11以降でのみ発生します。

  • ~/.bash_profileまたは同等のものに、 export LANG=en_US.UTF-8を追加します

FirebaseUnitySDKのバージョンを更新する方法

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

  • プロジェクトのAssets/ディレクトリの下に.unitypackageファイルをインポートする
  • Unity Package Manager (UPM)を使用したインポート
    • これは、Unity2018.4以降でパッケージを管理するための推奨される方法です。
    • この方法を使用すると、将来のバージョンの更新が簡単になり、 Assets/ディレクトリがよりクリーンになります。

Unityプロジェクトでは、すべてのFirebaseパッケージを管理するために1つのインポート方法のみを使用する必要があります。以下の手順は、個々のパッケージのバージョンを更新するだけでなく、必要に応じて、パッケージ管理をUPM(推奨されるインポート方法)に移行するためにも使用できます。