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:
- Usuń lub wyłącz następujące biblioteki DLL na wszystkich platformach:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
- 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:
- Usuń lub wyłącz następujące biblioteki DLL na wszystkich platformach:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- 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 zasadyPlayer Settings
, modyfikujmainTemplate.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:- Użyj
Gradle
jako systemu kompilacji. - Włącz ustawienie
Custom Gradle Template
w domeniePlayer Settings
. Dodaj te wiersze do pliku
mainTemplate.gradle
(lub na poziomie modułubuild.gradle
, jeśli eksportujesz projekt do Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Użyj
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 dodajexport 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 kataloguAssets/
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).