Wprowadzenie
Poniżej znajdziesz przewodnik po debugowaniu procesu kompilacji i tworzenia gier w Unity za pomocą pakietu Firebase SDK dla Unity. Opisuje on, jak badać i rozwiązywać wiele typowych problemów, które mogą wystąpić podczas konfigurowania i tworzenia gry na nową platformę lub po aktualizacji. Jest on ułożony w kolejności, w jakiej te błędy mogą wystąpić w procesie. Zapoznaj się z nimi w tej kolejności i postępuj zgodnie z instrukcjami, gdy każdy z nich zostanie rozwiązany.
Oprócz tego dokumentu zapoznaj się z najczęstszymi pytaniami dotyczącymi Firebase dla Unity.
Problemy z kompilacją w trybie odtwarzania
Pierwsza grupa problemów z kompilacją może wystąpić podczas testowania w edytorze przed rozpoczęciem kompilacji na urządzenie mobilne. Ta sekcja dotyczy wszystkich błędów Firebase, które występują przed i w trakcie trybu odtwarzania.
Gdy Unity uruchamia się lub wykrywa zmiany w zależnościach, kodzie lub innych zasobach, próbuje ponownie skompilować projekt. Jeśli w tym czasie nie uda się skompilować projektu, edytor zapisze błędy kompilacji w konsoli. Jeśli spróbujesz przejść do trybu odtwarzania, w karcie Scena w Unity pojawi się wyskakujące okienko z błędem: All compiler errors have to be fixed before you can enter playmode! (Zanim przejdziesz do trybu odtwarzania, musisz naprawić wszystkie błędy kompilatora!).
Debugowanie problemów z kompilacją związanych z Firebase
Brakujące typy, klasy, metody i elementy
Wiele problemów z Firebase wynika z tego, że edytor i kompilator nie mogą znaleźć niezbędnych typów, klas, metod i elementów. Typowe objawy to m.in.:
The type or namespace name ‘<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?
The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace ‘Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)
‘<CLASS NAME>' does not contain a definition for ‘<MEMBER VARIABLE OR METHOD NAME>'
Kroki rozwiązania:
Jeśli w kodzie używasz klas lub metod Firebase, upewnij się, że są one dostępne dzięki odpowiednim dyrektywom
usingdla potrzebnych produktów Firebase.Sprawdź, czy masz zaimportowane odpowiednie pakiety Firebase:
- Aby zaimportować odpowiednie pakiety:
- Upewnij się, że każdy produkt Firebase w Twoim projekcie i EDM4U:
- ma tę samą wersję,
- został zainstalowany wyłącznie jako plik
.unitypackageLUB wyłącznie za pomocą Menedżera pakietów Unity.
Jeśli pakiet Firebase Unity SDK w wersji wcześniejszej niż „10.0.0” został zaimportowany jako pliki
.unitypackage, archiwum ZIP pakietu Firebase Unity SDK zawiera pakiety obsługujące zarówno .NET 3.x, jak i .NET 4.x. Upewnij się, że w projekcie masz tylko zgodny poziom .NET Framework:- Zgodność między wersjami edytora Unity a poziomami .NET Framework jest omówiona w artykule Dodawanie Firebase do projektu w Unity.
- Jeśli przypadkowo zaimportujesz pakiety Firebase na niewłaściwym poziomie .NET Framework lub musisz przejść z używania
.unitypackagena jedną z alternatywnych opcji instalacji Unity, najprostszym sposobem jest usunięcie wszystkich pakietów Firebase za pomocą metod opisanych w tej sekcji dotyczącej migracji, a następnie ponowne zaimportowanie wszystkich pakietów Firebase.
Sprawdź, czy edytor ponownie kompiluje projekt i czy próby odtwarzania odzwierciedlają najnowszy stan projektu:
- Domyślnie edytor Unity jest skonfigurowany tak, aby ponownie kompilować projekt po wykryciu zmian w zasobach lub konfiguracji.
- Możliwe, że ta funkcja została wyłączona, a edytor Unity jest ustawiony na ręczne odświeżanie lub ponowną kompilację. Sprawdź to i w razie potrzeby spróbuj ręcznie odświeżyć.
Błędy środowiska wykonawczego w trybie odtwarzania
Jeśli gra się uruchamia, ale podczas działania występują problemy z Firebase, spróbuj wykonać te czynności:
Upewnij się, że zatwierdzasz pakiety Firebase w sekcji „Ochrona i prywatność” w systemie macOS
Jeśli po uruchomieniu gry w edytorze w systemie macOS pojawi się okno z komunikatem „Nie można otworzyć pliku „FirebaseCppApp-<version>.bundle”, ponieważ nie można zweryfikować dewelopera”, musisz zatwierdzić ten konkretny plik pakietu w menu Ochrona i prywatność w systemie macOS.
Aby to zrobić, kliknij ikonę Apple > Preferencje systemowe > Ochrona i prywatność.
W menu ochrony, mniej więcej w połowie strony, znajduje się sekcja z komunikatem „Użycie pliku „FirebaseCppApp-<version>.bundle” zostało zablokowane, ponieważ nie pochodzi on od zidentyfikowanego dewelopera”.
Kliknij przycisk Zezwól mimo to.

Wróć do Unity i ponownie naciśnij Odtwórz.
Zobaczysz ostrzeżenie podobne do pierwszego:

Naciśnij Otwórz , a program będzie mógł kontynuować działanie. Nie zobaczysz już pytania dotyczącego tego konkretnego pliku.
Upewnij się, że projekt zawiera prawidłowe pliki konfiguracyjne i ich używa
- Upewnij się, że w sekcji Plik > Ustawienia kompilacji ustawienia kompilacji są skonfigurowane pod kątem wybranego przez Ciebie celu (iOS lub Android). Więcej informacji znajdziesz w dokumentacji ustawień kompilacji w Unity.
- Pobierz plik konfiguracyjny aplikacji (
google-services.jsonw przypadku Androida lubGoogleService-Info.plistw przypadku iOS) i utwórz kompilację w konsoli Firebase w sekcji Ustawienia projektu > Twoje aplikacje: Jeśli masz już te pliki, usuń je z projektu i zastąp najnowszą wersją, upewniając się, że ich nazwy są dokładnie takie jak powyżej, bez dopisku „(1)” ani innych liczb. - Jeśli w konsoli pojawi się komunikat dotyczący plików w
Assets/StreamingAssets/, upewnij się, że nie ma w niej komunikatów informujących o tym, że Unity nie może edytować plików w tym miejscu. - Upewnij się, że plik
Assets/StreamingAssets/google-services-desktop.jsonzostał wygenerowany i jest zgodny z pobranym plikiem konfiguracyjnym.- Jeśli nie zostanie wygenerowany automatycznie, a katalog
StreamingAssets/nie istnieje, utwórz go ręcznie w kataloguAssets. - Sprawdź, czy Unity wygenerowało plik
google-services-desktop.json.
- Jeśli nie zostanie wygenerowany automatycznie, a katalog
Upewnij się, że każdy produkt Firebase i EDM4U zostały zainstalowane wyłącznie za pomocą .unitypackage lub Menedżera pakietów Unity
- Sprawdź folder
Assets/i Menedżera pakietów Unity, aby upewnić się, że pakiety SDK Firebase i EDM4U zostały zainstalowane wyłącznie za pomocą jednej z tych metod. - Niektóre wtyczki opracowane przez Google, np. Google Play, oraz wtyczki innych firm mogą zależeć od EDM4U. Te wtyczki mogą zawierać EDM4U w plikach
.unitypackagelub pakietach Menedżera pakietów Unity (UPM). Upewnij się, że w projekcie jest tylko 1 kopia EDM4U. Jeśli jakiekolwiek pakiety UPM zależą od EDM4U, najlepiej zachować tylko wersje UPM EDM4U, które można znaleźć na stronie archiwum interfejsów API Google dla Unity.
Upewnij się, że każdy produkt Firebase w Twoim projekcie ma tę samą wersję.
- Jeśli pakiety SDK Firebase zostały zainstalowane za pomocą pliku
.unitypackage, sprawdź, czy wszystkie bibliotekiFirebaseCppAppw folderzeAssets/Firebase/Plugins/x86_64/mają tę samą wersję. - Jeśli pakiety SDK Firebase zostały zainstalowane za pomocą Menedżera pakietów Unity (UPM), otwórz Windows > Menedżer pakietów, wyszukaj „Firebase” i upewnij się, że wszystkie pakiety Firebase mają tę samą wersję.
- Jeśli Twój projekt zawiera różne wersje pakietów SDK Firebase, zalecamy całkowite usunięcie wszystkich pakietów SDK Firebase, a następnie ponowne zainstalowanie ich w tej samej wersji. Najprostszym sposobem jest usunięcie wszystkich pakietów Firebase za pomocą metod opisanych w tej sekcji dotyczącej migracji.
Błędy kompilacji związane z resolverem i urządzeniem docelowym
Jeśli gra działa w edytorze (skonfigurowanym pod kątem wybranego przez Ciebie celu kompilacji), sprawdź, czy Menedżer zależności zewnętrznych dla Unity (EDM4U) jest prawidłowo skonfigurowany i działa.
W repozytorium EDM4U w GitHubie znajdziesz szczegółowy przewodnik dotyczący tej części procesu. Zapoznaj się z nim i postępuj zgodnie z instrukcjami.
Problemy z „Single Dex” i minifikacją (obowiązkowe w przypadku korzystania z Cloud Firestore)
Podczas tworzenia aplikacji na Androida może wystąpić błąd kompilacji związany z posiadaniem jednego pliku dex. Komunikat o błędzie wygląda podobnie do tego (jeśli projekt jest skonfigurowany do korzystania z systemu kompilacji Gradle):
Cannot fit requested classes in a single dex file.
Pliki .dex służą do przechowywania zestawu definicji klas i powiązanych z nimi danych dodatkowych w aplikacjach na Androida. Jeden plik dex może zawierać maksymalnie 65 536 metod. Jeśli łączna liczba metod ze wszystkich bibliotek Androida w projekcie przekroczy ten limit,kompilacja się nie powiedzie.
Możesz wykonać te 2 czynności kolejno. Jeśli minifikacja nie rozwiąże problemu, włącz multidex.
Włącz minifikację
Unity wprowadziło minifikację w wersji 2017.2, aby usuwać nieużywany kod, co może zmniejszyć łączną liczbę metod, do których odwołuje się jeden plik dex. * Tę opcję znajdziesz w sekcji Ustawienia odtwarzacza > Android > Ustawienia publikowania > Minifikacja. * Opcje mogą się różnić w zależności od wersji Unity, dlatego zapoznaj się z oficjalną dokumentacją Unity.
Włącz multidex
Jeśli po włączeniu minifikacji liczba metod, do których odwołuje się plik, nadal przekracza limit, możesz włączyć multidex. W Unity można to zrobić na kilka sposobów:
- Jeśli w sekcji Ustawienia odtwarzacza jest włączona opcja Niestandardowy szablon Gradle, zmodyfikuj plik
mainTemplate.gradle. - Jeśli do tworzenia wyeksportowanego projektu używasz Android Studio, zmodyfikuj plik build.gradle na poziomie modułu.
Więcej informacji znajdziesz w przewodniku użytkownika multidex.
Rozumienie i naprawianie błędów środowiska wykonawczego na urządzeniu docelowym
Jeśli gra działa w edytorze i można ją skompilować oraz zainstalować na urządzeniu docelowym, ale występują błędy środowiska wykonawczego, sprawdź logi wygenerowane na urządzeniu.
W tej sekcji opisujemy, jak sprawdzać logi pod kątem możliwych błędów, oraz jeden z takich błędów, który występuje tylko w środowisku wykonawczym na urządzeniu lub w symulatorze.
Android
Symulator
- Sprawdź logi wyświetlane w konsoli emulatora lub wyświetl okno Logcat.
Urządzenie
Zapoznaj się z adb i adb logcat oraz sposobami ich używania.
- Do filtrowania danych wyjściowych możesz używać różnych narzędzi środowiska wiersza poleceń, ale możesz też sprawdzić opcje logcat.
Prostym sposobem na rozpoczęcie sesji narzędzia adb z czystym kontem jest:
adb logcat -c && adb logcat <OPTIONS>gdzie
OPTIONSto flagi przekazywane do wiersza poleceń w celu filtrowania danych wyjściowych.
Używanie Logcat w Android Studio
Podczas korzystania z Logcat w Android Studio dostępne są dodatkowe narzędzia wyszukiwania, które ułatwiają generowanie skutecznych wyszukiwań.
iOS
Sprawdzanie logów
Jeśli używasz urządzenia fizycznego, podłącz je do komputera. Sprawdź lldb w Xcode.
Problemy ze Swiftem
Jeśli w logach błędów pojawiają się wzmianki o Swift, zapoznaj się z sekcją Menedżer zależności zewnętrznych dla Unity.
Dalsze kroki
Jeśli w grze nadal występują problemy z kompilacją, tworzeniem lub uruchamianiem związane z Firebase, zapoznaj się ze stroną Problemy z pakietem Firebase SDK dla Unity i rozważ zgłoszenie nowego problemu. Dodatkowe informacje znajdziesz na stronie pomocy Firebase.