Catch up on highlights from Firebase at Google I/O 2023. Learn more

Rozwiązywanie problemów i najczęstsze pytania dotyczące Unity i Firebase

Ta strona zawiera wskazówki i rozwiązania problemów związanych z Unity, które możesz napotkać podczas korzystania z Firebase.

Masz inne wyzwania lub nie widzisz swojego problemu opisanego poniżej? Zapoznaj się z głównymi często zadawanymi pytaniami dotyczącymi Firebase, aby uzyskać więcej często zadawanych pytań dotyczących Firebase lub produktów.

Zgodność z platformą .NET podczas korzystania z aparatu Unity 2017.x i nowszych

Firebase obsługuje .NET 4.x jako eksperymentalną opcję kompilacji w Unity 2017 i nowszych. Wtyczki Firebase wykorzystują komponenty zestawu Parse SDK , aby udostępniać niektóre klasy platformy .NET 4.x we wcześniejszych wersjach platformy .NET.

W związku z tym zestaw SDK Firebase Unity w wersji 5.4.0 i nowszych udostępnia wtyczki zgodne z platformą .NET 3.x lub .NET 4.x w katalogach dotnet3 i dotnet4 zestawu Firebase Unity SDK.

Jeśli zaimportujesz wtyczkę Firebase, która jest niezgodna z wersją .NET włączoną w Twoim projekcie, zobaczysz błędy kompilacji niektórych typów w środowisku .NET, które są implementowane przez Parse SDK.

Aby rozwiązać błąd kompilacji, jeśli używasz platformy .NET 3.x:

  1. Usuń lub wyłącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Włącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Aby rozwiązać błąd kompilacji, jeśli używasz platformy .NET 4.x:

  1. Usuń lub wyłącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Włącz następujące biblioteki DLL dla wszystkich platform:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Jeśli importujesz inną wtyczkę Firebase:

  • W projekcie Unity przejdź do opcji Zasoby > Narzędzie do rozpoznawania usług Play > Moduł obsługi wersji > Aktualizuj , aby włączyć odpowiednie biblioteki DLL dla swojego projektu.

Kompilacja Unity 2017.1 IL2CPP w projektach .NET 4.x

Firebase obsługuje .NET 4.x jako eksperymentalną opcję kompilacji w Unity 2017 i nowszych. Wtyczki Firebase wykorzystują komponenty zestawu Parse SDK , aby udostępniać niektóre klasy platformy .NET 4.x we wcześniejszych wersjach platformy .NET.

W związku z tym zestaw Firebase Unity SDK w wersji 5.4.0 i nowszych udostępnia biblioteki DLL przekazujące typy, które przekazują typy analizy (na przykład Parse implementacja System.Threading.Tasks.Task ) do platformy .NET. Niestety, IL2CPP (transpiler, który konwertuje język C# na C++), który jest dostarczany w Unity 2017.1.x, nie przetwarza prawidłowo bibliotek DLL przekazujących typy, co skutkuje błędami kompilacji podobnymi do następujących:

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

Obecnie nie ma dostępnego obejścia dla błędów kompilacji programu .NET 4.x IL2CPP w środowisku Unity 2017.1, dlatego należy przeprowadzić uaktualnienie do aparatu Unity 2017.2 lub nowszego, aby używać programu .NET 4.x w projektach skompilowanych z IL2CPP.

Sieć Unity 2017.2

Baza danych czasu rzeczywistego Firebase tworzy połączenia sieciowe TLS przy użyciu stosu sieciowego .NET. Funkcjonalność TLS jest zepsuta w Unity 2017.2 podczas korzystania z platformy .NET 4.6, co powoduje awarię wtyczki bazy danych czasu rzeczywistego w edytorach i na komputerze.

Nie ma obejścia tego problemu, więc musisz użyć innej wersji Unity, na przykład wersji 2017.1 lub 2017.3.

Brak pliku konfiguracyjnego Firebase Android w Unity 2020

Aby obsługiwać wersje Unity, które nie mają możliwości dostosowywania kompilacji Gradle, narzędzie edytora Firebase generuje Assets/Plugins/Android/Firebase/res/values/google-services.xml jako zasób Androida do spakowania w Kompilacja Androida, dzięki czemu zestaw Firebase SDK może jej użyć do zainicjowania domyślnej instancji FirebaseApp.

W Unity 2020 wszystkie zasoby systemu Android muszą znajdować się w katalogach z sufiksem .androidlib . Jeśli Twój projekt korzysta z pakietu Firebase SDK, który generuje katalog Assets/Plugins/Android/Firebase , zmień jego nazwę na Assets/Plugins/Android/Firebase.androidlib . Upewnij się, że zawiera AndroidManifest.xml , project.properties i res/values/google-services.xml .

Problem z pojedynczym dexem podczas budowania aplikacji na Androida

Podczas tworzenia aplikacji na Androida możesz napotkać błąd kompilacji związany z posiadaniem jednego pliku dex. Komunikat o błędzie wygląda podobnie do poniższego, jeśli twój projekt jest skonfigurowany do korzystania z systemu kompilacji Gradle.

Cannot fit requested classes in a single dex file.

Pliki Dalvik Executable ( .dex ) służą do przechowywania zestawu definicji klas i powiązanych z nimi danych pomocniczych dla aplikacji na Androida ( .apk ). Pojedynczy plik dex jest ograniczony do odniesienia do 65 536 metod. Kompilacja zakończy się niepowodzeniem, jeśli łączna liczba metod ze wszystkich bibliotek systemu Android w Twoim projekcie przekroczy ten limit.

Unity wprowadziło Minification w 2017.2, które wykorzystuje Proguard (lub inne narzędzia w niektórych wersjach Unity) do usuwania nieużywanego kodu, co może zmniejszyć całkowitą liczbę metod, do których się odwołuje, w jednym pliku dex. Opcję można znaleźć w Ustawieniach odtwarzacza > Android > Ustawienia publikowania > Minify . Opcje mogą się różnić w różnych wersjach Unity, więc zapoznaj się z oficjalną dokumentacją Unity.

Jeśli liczba przywoływanych metod nadal przekracza limit, inną opcją jest włączenie multidex . Istnieje wiele sposobów osiągnięcia tego w Unity:

  • Jeśli Custom Gradle Template w Player Settings jest włączony, zmodyfikuj mainTemplate.gradle .
  • Jeśli używasz Android Studio do kompilowania wyeksportowanego projektu, zmodyfikuj plik build.gradle na poziomie modułu.

Więcej szczegółów można znaleźć w instrukcji obsługi multidexu .

Obsługa Java 8 i usuwanie cukrów dla kompilacji Androida w Unity 2017 i Unity 2018 (Firebase Unity SDK 8.0.0 i nowsze)

W maju 2021 r. (Firebase BoM v28.0.0) Firebase wyłączył usuwanie cukru we wszystkich swoich bibliotekach Androida (zobacz informacje o wersji ). Podczas tworzenia aplikacji na Androida za pomocą pakietu Firebase Unity SDK (8.0.0 lub nowszego) może zostać wyświetlony następujący błąd kompilacji:

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

Ta zmiana dotyczy tylko kompilacji systemu Android w Unity 2017 i Unity 2018. Nowsze wersje Unity domyślnie dodają blok compileOptions w plikach kompilacji gradle. Aby naprawić ten błąd kompilacji w Unity 2017 i Unity 2018, wykonaj jedną z następujących czynności:

  • Dodaj blok compileOptions do swojego szablonu ocen:

    1. Użyj Gradle jako systemu kompilacji.
    2. Włącz Custom Gradle Template w Player Settings .
    3. Dodaj następujące wiersze do mainTemplate.gradle (lub build.gradle na poziomie modułu, jeśli eksportujesz projekt do Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Ewentualnie zwiększ minSdkVersion dla swojego projektu Android do 26 lub więcej.

Zobacz także Rozwiązywanie problemów z systemem Android — usuwanie błędów kompilacji .

Problemy podczas budowania na iOS z Cocoapods

Podczas kompilowania dla systemu iOS instalacja Cocoapod może zakończyć się niepowodzeniem z powodu błędu dotyczącego ustawień regionalnych języka lub kodowania UTF-8. Obecnie istnieje kilka różnych sposobów obejścia tego problemu.

  • Z terminala uruchom bezpośrednio pod install i otwórz wynikowy plik xcworkspace.

  • Zmień wersję Cocoapods na 1.10.2. Problem występuje tylko w wersji 1.11 i nowszych.

  • W swoim ~/.bash_profile lub odpowiedniku dodaj export LANG=en_US.UTF-8

Jak zaktualizować wersję pakietów SDK Firebase Unity

Proces aktualizacji wersji pakietów SDK Firebase Unity zależy od tego, jak zostały one pierwotnie zaimportowane. Oto dwie alternatywne metody importu:

  • Importowanie plików .unitypackage do katalogu Assets/ projektu
  • Importowanie za pomocą Unity Package Manager (UPM)
    • Jest to zalecany sposób zarządzania pakietami w Unity 2018.4+.
    • Użyj tej metody, aby ułatwić przyszłe aktualizacje wersji i wyczyścić Assets/ katalog.

W swoim projekcie Unity powinieneś używać tylko jednej metody importu do zarządzania wszystkimi pakietami Firebase. Poniższe instrukcje mogą posłużyć nie tylko do aktualizacji wersji poszczególnych pakietów, ale także w razie potrzeby do migracji zarządzania pakietami do UPM (zalecana metoda importu).