Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

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

Masz inne wyzwania lub nie widzisz poniżej swojego problemu? Zapoznaj się z głównymi najczęściej zadawanymi pytaniami dotyczącymi Firebase, aby uzyskać więcej odpowiedzi na najczęściej zadawane pytania dotyczące Firebase lub poszczególnych produktów.

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

Firebase obsługuje platformę .NET 4.x jako eksperymentalną opcję kompilacji w Unity 2017 i nowszych. Wtyczki Firebase wykorzystują składniki pakietu Parse SDK , aby zapewnić niektóre klasy .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.xw dotnet3 i dotnet4 zestawu SDK Firebase Unity.

Jeśli zaimportujesz wtyczkę Firebase, która jest niezgodna z wersją .NET włączoną w projekcie, zobaczysz błędy kompilacji z niektórych typów w .NET Framework, które są zaimplementowane przez pakiet 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 pozycji Assets > Play Services Resolver > Version Handler > Update , aby włączyć odpowiednie biblioteki DLL dla swojego projektu.

Kompilacja Unity 2017.1 IL2CPP w projektach .NET 4.x

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

W związku z tym pakiet Firebase Unity SDK w wersji 5.4.0 i nowszych udostępnia biblioteki DLL przekazywania typów, które przekazują typy Parse (na przykład implementację Parse System.Threading.Tasks.Task ) do platformy .NET. Niestety, IL2CPP (transpiler, który konwertuje C# na C++), który jest dostarczany w Unity 2017.1.x, nie przetwarza poprawnie bibliotek DLL przekazywania typu, co powoduje błędy kompilacji podobne 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 .NET 4.x IL2CPP w Unity 2017.1, więc musisz uaktualnić do Unity 2017.2 lub nowszej, aby używać platformy .NET 4.x w projektach skompilowanych przy użyciu IL2CPP.

Sieć Unity 2017.2

Baza danych czasu rzeczywistego Firebase tworzy połączenia sieciowe TLS przy użyciu stosu sieciowego .NET. Funkcjonalność TLS jest uszkodzona w Unity 2017.2 podczas korzystania z .NET 4.6, powodując awarię wtyczki Realtime Database 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.

Brakujący plik konfiguracyjny Firebase Android w Unity 2020

Aby obsługiwać wersje Unity, które nie mają możliwości dostosowania kompilacji Gradle, narzędzie edytora Firebase generuje zasoby Assets/Plugins/Android/Firebase/res/values/google-services.xml jako zasób Androida do spakowania w Kompilacja Androida, aby pakiet Firebase SDK mógł go użyć do zainicjowania domyślnej instancji FirebaseApp.

W Unity 2020 wszystkie zasoby Androida muszą znajdować się w katalogach z sufiksem .androidlib . Jeśli Twój projekt korzysta z zestawu SDK Firebase, 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 indeksem podczas tworzenia aplikacji na Androida

Podczas tworzenia aplikacji na Androida możesz napotkać awarię kompilacji związaną z posiadaniem jednego pliku dex. Komunikat o błędzie wygląda podobnie do następującego, jeśli projekt jest skonfigurowany do korzystania z systemu kompilacji Gradle.

Cannot fit requested classes in a single dex file.

Pliki wykonywalne Dalvik ( .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 65 536 metod. Kompilacja zakończy się niepowodzeniem, jeśli łączna liczba metod ze wszystkich bibliotek systemu Android w projekcie przekroczy ten limit.

Unity wprowadził Minifikację w 2017.2, która używa Proguard (lub innych narzędzi w niektórych wersjach Unity) do usuwania nieużywanego kodu, co może zmniejszyć łączną liczbę przywoływanych metod w jednym pliku dex. Tę opcję można znaleźć w Ustawieniach odtwarzacza > Android > Ustawienia publikowania > Zminifikuj . Opcje mogą się różnić w różnych wersjach Unity, więc zapoznaj się z oficjalną dokumentacją Unity.

Jeśli liczba metod, do których się odwołuje, nadal przekracza limit, inną opcją jest włączenie multidex . W Unity można to osiągnąć na wiele sposobów:

  • Jeśli włączony jest Custom Gradle Template w Player Settings , 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 podręczniku użytkownika multidex .

Obsługa i usuwanie cukru w ​​języku Java 8 dla kompilacji systemu Android w Unity 2017 i Unity 2018 (Firebase Unity SDK 8.0.0 i nowsze)

W maju 2021 r. (Firebase BoM 28.0.0) Firebase wyłączył usuwanie cukru we wszystkich swoich bibliotekach Androida (zobacz informacje o wersji ). Podczas kompilowania aplikacji na Androida za pomocą pakietu Firebase Unity SDK (8.0.0 lub nowszego) może pojawić się 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 Androida 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 szablonu oceny:

    1. Użyj Gradle jako systemu budowania.
    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 dla Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Ewentualnie zwiększ wartość minSdkVersion dla projektu Androida do 26 lub więcej.

Zobacz też Rozwiązywanie problemów z Androidem — usuwanie błędów kompilacji .

Problemy podczas tworzenia dla systemu iOS za pomocą 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 aktualizowania wersji pakietów SDK Firebase Unity zależy od tego, jak zostały one początkowo zaimportowane. Oto dwie alternatywne metody importowania:

  • 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ć aktualizacje przyszłych wersji i oczyścić katalog Assets/ .

W projekcie Unity do zarządzania wszystkimi pakietami Firebase należy używać tylko jednej metody importowania. Poniższe instrukcje mogą sł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).