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

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

Masz inny problem lub nie widzisz go poniżej? Sprawdź zapoznaj się z głównymi odpowiedziami na najczęstsze pytania o Firebase, aby dowiedzieć się więcej o platformach Firebase odpowiedzi na najczęstsze pytania związane z konkretnymi usługami.

zgodność z .NET w przypadku wersji Unity 2017.x i nowszych;

Firebase obsługuje .NET 4.x jako eksperymentalną opcję kompilacji w Unity 2017 i później. Wtyczki Firebase wykorzystują komponenty Parse SDK, aby zapewnić Klasy .NET 4.x we wcześniejszych wersjach .NET.

Dlatego pakiet SDK Firebase Unity w wersji 5.4.0 i nowsze zawierają wtyczki, które są zgodne z programami .NET 3.x i .NET 4.x w dotnet3 i dotnet4. pakietu SDK Firebase Unity.

Jeśli zaimportujesz wtyczkę Firebase, która jest niezgodna z wersją .NET włączone w projekcie, zobaczysz w sekcji Platforma .NET implementowana przez pakiet SDK Parse.

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

  1. Usuń lub wyłącz następujące biblioteki DLL na wszystkich platformach:
    • 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 naprawić błąd kompilacji, jeśli używasz .NET 4.x:

  1. Usuń lub wyłącz następujące biblioteki DLL na wszystkich platformach:
    • 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 zaimportujesz inną wtyczkę Firebase:

  • W projekcie w Unity otwórz menu Komponenty > Program do rozpoznawania usług Google Play > Moduł obsługi wersji > Zaktualizuj aby włączyć odpowiednie pliki 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 później. Wtyczki Firebase wykorzystują komponenty Parse SDK, aby zapewnić Klasy .NET 4.x we wcześniejszych wersjach .NET.

Dlatego pakiet SDK Firebase Unity w wersji 5.4.0 i nowszych udostępnia typ przekazywanie plików DLL, które przekazują typy analizy (na przykład implementacja System.Threading.Tasks.Task). Niestety, IL2CPP (transpilator konwertujący język C# na C++) dostępny w Unity 2017.1.x nieprawidłowo przetwarza przekazywanie plików DLL, co powoduje błędy kompilacji wyglądają mniej więcej tak:

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

Obecnie nie ma możliwości obejścia tego problemu w przypadku błędów kompilacji .NET 4.x IL2CPP Unity 2017.1, dlatego aby używać .NET 4.x w projektów skompilowanych z IL2CPP.

Sieci na platformie Unity 2017.2

Firebase Realtime Database tworzy połączenia sieciowe TLS przy użyciu sieci .NET stosów. Funkcja TLS nie działa w Unity 2017.2, gdy używany jest protokół .NET 4.6, co powoduje wtyczką Realtime Database w edytorach i na komputerach.

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

Brak pliku konfiguracyjnego Firebase na Androida w Unity 2020

Aby obsługiwać wersje Unity, które nie mają dostosować kompilację Gradle, a edytor Firebase Assets/Plugins/Android/Firebase/res/values/google-services.xml jako Android który zostanie spakowany w kompilację na Androida, tak aby pakiet SDK Firebase mógł używać aby zainicjować domyślną instancję FirebaseApp.

W Unity 2020 wszystkie zasoby Androida muszą znajdować się w katalogach z atrybutem Sufiks: .androidlib. Jeśli Twój projekt korzysta z pakietu SDK Firebase, który generuje Katalog Assets/Plugins/Android/Firebase, zmień nazwę na Assets/Plugins/Android/Firebase.androidlib Sprawdź, czy zawiera AndroidManifest.xml, project.properties i res/values/google-services.xml

Problem z użyciem pojedynczej wersji językowej podczas tworzenia aplikacji na Androida

Podczas tworzenia aplikacji na Androida możesz napotkać błąd kompilacji związany z pojedynczy plik .dex. Komunikat o błędzie wygląda podobnie do poniższego, jeśli jest skonfigurowany do używania systemu kompilacji Gradle.

Cannot fit requested classes in a single dex file.

Pliki wykonywalne Dalvik (.dex) służą do przechowywania zestawu definicji klas. oraz powiązane z nimi dane dotyczące aplikacji na Androida (.apk). 1 Dex jest ograniczona do 65 536 metod. Kompilacja zakończy się niepowodzeniem, jeśli łączna liczba liczba metod ze wszystkich bibliotek Androida w projekcie przekracza ten limit.

Wprowadzenie minifikacji do Unity w 2017.2, która korzysta z Proguard (lub innych narzędzi w niektórych wersjach Unity) i pozbyć się nieużywanego kodu, co może zmniejszyć łączną liczbę w jednym pliku .dex. Tę opcję znajdziesz tutaj: Ustawienia odtwarzacza > Android > Ustawienia publikowania > Zmniejsz. Dostępne opcje mogą różnią się w zależności od wersji Unity, więc zapoznaj się z oficjalnym dokumentacji.

Jeśli liczba przywołanych metod nadal przekracza limit, możesz użyć innej opcji aby włączyć funkcję multidex. W Unity możesz to zrobić na kilka sposobów:

  • Jeśli włączona jest wartość Custom Gradle Template w ramach zasady Player Settings, modyfikuj mainTemplate.gradle.
  • Jeśli używasz Androida Studio do utworzenia wyeksportowanego projektu, zmodyfikuj build.gradle na poziomie modułu.

Więcej informacji można znaleźć w przewodniku użytkownika Multidex.

obsługa języka Java 8 i usunięcie cukru w kompilacjach na Androida w wersjach Unity 2017 i Unity 2018 (pakiet SDK Firebase Unity w wersji 8.0.0 lub nowszej)

W maju 2021 r. (Firebase BoM w wersji 28.0.0) usługa Firebase wyłączyła usuwanie odlustrzania we wszystkich swoich bibliotekach Androida (zobacz informacje o wersji). Podczas tworzenia aplikacji na Androida przy użyciu pakietu SDK Firebase Unity (8.0.0 lub nowszego) możesz zobaczyć taki 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 na Androida w wersjach Unity 2017 i Unity 2018. Nowsze wersje Unity dodają domyślnie blok compileOptions w plikach kompilacji Gradle. Aby naprawić ten błąd kompilacji w Unity 2017 i Unity 2018, wykonaj jedną z tych czynności:

  • Dodaj blok compileOptions do szablonu Gradle:

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

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Możesz też zwiększyć wartość minSdkVersion w projekcie Androida do wartości 26 lub nowszej.

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

Problemy z tworzeniem treści na iOS za pomocą Cocoapods

W przypadku tworzenia kreacji na iOS instalacja Cocoapod może się nie powieść z komunikatem o błędzie dotyczącym językowy lub kodowanie UTF-8. Obecnie istnieje kilka różnych sposobów aby ominąć ten problem.

  • W terminalu uruchom bezpośrednio aplikację pod install i otwórz wynik pliku xcworkspace.

  • Przywróć wersję Cocoapods do 1.10.2. Problem występuje tylko w wersji 1.11 lub nowszej.

  • W polu ~/.bash_profile lub równoważnym 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, zostały zaimportowane wstępnie. Oto 2 alternatywne metody importu:

  • Importuję pliki (.unitypackage) do katalogu Assets/ projektu
  • Importowanie za pomocą Menedżer pakietów Unity (UPM)
    • Jest to zalecany sposób zarządzania pakietami w Unity w wersji 2018.4 i nowszych.
    • Korzystając z tej metody, ułatwisz sobie kolejne aktualizacje wersji, a Assets/ w narzędziu do czyszczenia katalogu.

W projekcie Unity należy używać tylko jednej metody importowania do zarządzania wszystkimi Pakiety Firebase. Poniższe instrukcje pozwalają nie tylko zaktualizować wersji poszczególnych pakietów oraz w razie potrzeby przeprowadzić ich migrację do UPM (zalecana metoda importowania).