Debugowanie procesu tworzenia, instalowania i uruchamiania gry

Wstęp

Poniżej znajduje się przewodnik dotyczący debugowania procesu kompilacji i kompilacji gier Unity przy użyciu pakietu SDK Firebase dla Unity. Opisuje, jak zbadać i rozwiązać wiele typowych problemów, które możesz napotkać podczas konfigurowania i tworzenia gry na nową platformę lub po aktualizacji. Jest on uporządkowany według tego, kiedy w procesie mogą wystąpić te błędy. Zapoznaj się z nimi w podanej kolejności i postępuj zgodnie z rozwiązaniem każdego z nich.

Oprócz tego dokumentu, zapoznaj się z często zadawanymi pytaniami dotyczącymi Firebase dla Unity , aby uzyskać więcej informacji.

Problemy z kompilacją trybu odtwarzania

Pierwsza klasa problemów z kompilacją może wystąpić podczas testowania w edytorze przed próbą rozpoczęcia kompilacji mobilnej. Ta sekcja dotyczy wszystkich błędów Firebase, które występują przed i w trakcie trybu gry.

Kiedy Unity uruchomi się lub wykryje zmiany w zależnościach, kodzie lub innych zasobach, spróbuje odbudować projekt. Jeśli w tym czasie projekt nie będzie mógł się skompilować, edytor zarejestruje błędy kompilacji w konsoli, a jeśli spróbujesz wejść w tryb odtwarzania, pojawi się wyskakujące okienko błędu w zakładce Scena Unity, które będzie brzmiało All compiler errors have to be fixed before you can enter playmode! .

Brakujące typy, klasy, metody i elementy członkowskie

Wiele problemów z Firebase wynika z niezdolności edytora i kompilatora do znalezienia niezbędnych typów, klas, metod i elementów członkowskich. Typowymi objawami tego są następujące warianty:

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ązywania:
  1. Jeśli używasz klas lub metod Firebase w kodzie, upewnij się, że udostępniasz je, mając odpowiednie dyrektywy using dla poszczególnych potrzebnych produktów Firebase.

    1. Przykłady z MechaHamster: Zwiększ poziom dzięki wersji Firebase :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Sprawdź, czy zaimportowałeś odpowiednie pakiety Firebase:

    1. Aby zaimportować odpowiednie pakiety:
      1. Dodaj zestaw SDK Firebase Unity jako pakiet .unitypackage lub
      2. Przyjrzyj się i wykonaj jedną z alternatyw w opcjach instalacji dodatkowej Unity .
    2. Upewnij się, że każdy produkt Firebase w Twoim projekcie i EDM4U :
      • Są w tej samej wersji
      • Zostały zainstalowane wyłącznie jako .unitypackage LUB wyłącznie za pośrednictwem Menedżera pakietów Unity.
  3. Jeśli zaimportowałeś zestaw SDK Firebase Unity przed wersją „10.0.0” jako .unitypackage s, archiwum zip Firebase Unity SDK zawiera pakiety obsługujące platformy .NET 3.x i .NET 4.x. Upewnij się, że w projekcie uwzględniłeś tylko zgodny poziom .NET Framework:

    1. Zgodność między wersjami edytora Unity i poziomami platformy .NET Frameworks omówiono w artykule Dodawanie Firebase do projektu Unity .
    2. Jeśli przypadkowo zaimportowałeś pakiety Firebase na niewłaściwym poziomie .NET Framework lub musisz przełączyć się z używania .unitypackage s na jedną z opcji instalacji dodatkowej Unity , najczystszym sposobem jest usunięcie każdego pakietu Firebase za pomocą metod wymienionych w tej sekcji migracji i następnie ponownie zaimportuj wszystkie pakiety Firebase.
  4. Sprawdź, czy edytor przebudowuje Twój projekt i czy próby odtwarzania odzwierciedlają aktualny stan projektu:

    1. Domyślnie edytor Unity jest ustawiony na odbudowę po wykryciu zmian w zasobach lub konfiguracji.
    2. Możliwe, że ta funkcja została wyłączona i że Edytor Unity jest ustawiony na ręczne odświeżanie/rekompilację . Sprawdź to i w takim przypadku spróbuj ręcznie odświeżyć.

Błędy działania trybu odtwarzania

Jeśli gra uruchamia się, ale podczas działania występują problemy z Firebase, spróbuj wykonać następujące czynności:

Upewnij się, że zatwierdzasz pakiety Firebase w „Bezpieczeństwo i prywatność” w systemie Mac OS

Jeśli po uruchomieniu gry w edytorze w systemie Mac OS wyświetli się okno dialogowe z informacją: „FirebaseCppApp-<wersja>.bundle Nie można otworzyć, ponieważ nie można zweryfikować dewelopera.”, musisz zatwierdzić ten konkretny plik pakietu w Menu Bezpieczeństwo i prywatność komputera Mac.

Aby to zrobić, kliknij Ikona Apple > Preferencje systemowe > Bezpieczeństwo i prywatność

W menu zabezpieczeń, mniej więcej w połowie strony, znajduje się sekcja z informacją: „Użycie aplikacji FirebaseCppApp-<wersja>.bundle” zostało zablokowane, ponieważ nie pochodzi od zidentyfikowanego programisty”.

Kliknij przycisk Zezwól mimo to .

c35166e224cce720.png

Wróć do Unity i ponownie naciśnij przycisk Play .

Zobaczysz ostrzeżenie podobne do pierwszego:

5ad9ddb0d3a52892.png

Naciśnij Otwórz , a Twój program będzie mógł kontynuować; nie będziesz już więcej pytany o ten konkretny plik.

Upewnij się, że Twój projekt zawiera i używa prawidłowych plików konfiguracyjnych

  1. Upewnij się, że ustawienia kompilacji są ustawione dla docelowego miejsca docelowego (iOS lub Android) w menu Plik > Ustawienia kompilacji . Aby uzyskać pełniejszą dyskusję, przeczytaj dokumentację ustawień kompilacji Unity .
  2. Pobierz plik konfiguracyjny swojej aplikacji ( google-services.json dla Androida lub GoogleService-Info.plist dla iOS) i utwórz cel z konsoli Firebase w Ustawieniach projektu > Twoje aplikacje : Jeśli masz już te pliki, usuń je ze swojego projektu i zastąp je najnowszą wersją, upewniając się, że są napisane dokładnie tak, jak pokazano powyżej, bez „(1)” lub innych cyfr dołączonych do nazw plików.
  3. Jeśli konsola zawiera komunikat dotyczący plików w Assets/StreamingAssets/ , upewnij się, że nie ma komunikatów konsoli mówiących, że Unity nie mogło tam edytować plików
  4. Upewnij się, że Assets/StreamingAssets/google-services-desktop.json został wygenerowany i jest zgodny z pobranym plikiem konfiguracyjnym.
    • Jeśli nie jest on generowany automatycznie i StreamingAssets/ nie istnieje, ręcznie utwórz katalog w katalogu Assets .
    • Sprawdź, czy Unity wygenerowało teraz google-services-desktop.json .

Upewnij się, że każdy produkt Firebase i EDM4U zostały zainstalowane wyłącznie za pośrednictwem .unitypackage lub Menedżera pakietów Unity

  1. Sprawdź zarówno folder Assets/ jak i Menedżera pakietów Unity, aby upewnić się, że zestawy SDK Firebase i EDM4U zostały zainstalowane wyłącznie jedną lub drugą metodą.
  2. Niektóre wtyczki opracowane przez Google , takie jak Google Play, oraz wtyczki innych firm mogą zależeć od EDM4U. Wtyczki te mogą zawierać EDM4U w swoich pakietach .unitypackage lub Unity Package Manager (UPM). Upewnij się, że w Twoim projekcie znajduje się tylko jedna kopia EDM4U. Jeśli jakiekolwiek pakiety UPM zależą od EDM4U, najlepiej zachować tylko wersje EDM4U UPM, które można znaleźć na stronie Google APIs for Unity Archive .

Upewnij się, że każdy produkt Firebase w Twoim projekcie ma tę samą wersję.

  1. Jeśli zestawy SDK Firebase zostały zainstalowane za pośrednictwem .unitypackage , sprawdź, czy wszystkie biblioteki FirebaseCppApp w obszarze Assets/Firebase/Plugins/x86_64/ mają tę samą wersję.
  2. Jeśli zestawy 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ę.
  3. Jeśli Twój projekt zawiera różne wersje pakietów SDK Firebase, zalecamy całkowite usunięcie wszystkich pakietów SDK Firebase przed ponownym zainstalowaniem wszystkich pakietów SDK Firebase, tym razem z tymi samymi wersjami. Najczystszym sposobem jest usunięcie każdego pakietu Firebase metodami opisanymi w tej sekcji migracji .

Błędy kompilacji narzędzia do rozpoznawania nazw i urządzenia docelowego

Jeśli Twoja gra działa w edytorze (skonfigurowanym pod kątem odpowiedniego wybranego celu kompilacji), następnie sprawdź, czy Zewnętrzny Menedżer Zależności dla Unity (EDM4U) jest poprawnie skonfigurowany i działa.

Repozytorium EDM4U GitHub zawiera przewodnik krok po kroku dotyczący tej części procesu, który należy przejrzeć i wykonać przed kontynuowaniem.

Problemy i minifikacja „Single Dex” ( obowiązkowe w przypadku korzystania z Cloud Firestore)

Podczas tworzenia aplikacji na Androida może wystąpić błąd kompilacji związany z posiadaniem pojedynczego 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 .dex służą do przechowywania zestawu definicji klas i powiązanych z nimi danych dodatkowych dla aplikacji na Androida. Pojedynczy plik dex jest ograniczony do odniesień do 65 536 metod; kompilacje nie powiodą się, jeśli łączna liczba metod ze wszystkich bibliotek Androida w projekcie przekroczy ten limit.

Poniższe dwa kroki można zastosować sekwencyjnie; włączaj multidex tylko wtedy, gdy minifikacja nie rozwiąże problemu.

Włącz minifikację

Unity wprowadziło Minifikację w wersji 2017.2, aby usunąć nieużywany kod, co może zmniejszyć całkowitą liczbę metod odniesienia 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, dlatego zapoznaj się z oficjalną dokumentacją Unity.

Włącz Multidex

Jeśli po włączeniu minifikacji liczba przywoływanych metod nadal przekracza limit, inną opcją jest włączenie multidex . W Unity można to osiągnąć na wiele sposobów:

  • Jeśli w Ustawieniach odtwarzacza włączono opcję Niestandardowy szablon stopniowania , zmodyfikuj mainTemplate.gradle .
  • Jeśli do zbudowania wyeksportowanego projektu używasz Android Studio, zmodyfikuj plik build.gradle na poziomie modułu.

Więcej szczegółów można znaleźć w podręczniku użytkownika multidex .

Zrozumienie i naprawienie błędów wykonawczych urządzenia docelowego

Jeśli Twoja gra działa w edytorze i można ją zbudować i zainstalować na urządzeniu docelowym, ale napotykasz błędy w czasie wykonywania, sprawdź i przeanalizuj logi wygenerowane na urządzeniu .

W tej sekcji opisano, jak badać dzienniki pod kątem możliwych błędów oraz jednego takiego błędu, który występuje tylko w czasie wykonywania na urządzeniu lub 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 jak z nich korzystać.

  • Chociaż możesz używać różnych narzędzi środowiska wiersza poleceń do filtrowania danych wyjściowych, rozważ alternatywę sprawdzenie opcji logcat.
  • Prostym sposobem na rozpoczęcie sesji ADB z czystym kontem jest:

    adb logcat -c && adb logcat <OPTIONS>
    

    gdzie OPTIONS to dowolne flagi, które przekazujesz w wierszu poleceń do filtrowania danych wyjściowych.

Korzystanie z Logcat poprzez Android Studio

Podczas korzystania z Logcat poprzez Android Studio dostępne są dodatkowe narzędzia wyszukiwania , które ułatwiają generowanie produktywnych wyszukiwań.

iOS

Sprawdzanie dzienników

Jeśli używasz urządzenia fizycznego, podłącz je do komputera. Sprawdź lldb w Xcode.

Szybkie problemy

Jeśli napotkasz dzienniki błędów wspominające o Swift, zapoznaj się z sekcją Zewnętrzny menedżer zależności dla Unity na ich temat.

Dalsze kroki

Jeśli w Twojej grze nadal występują problemy z kompilacją, kompilacją lub uruchamianiem związane z Firebase, zapoznaj się ze stroną problemów z pakietem SDK Firebase dla Unity i rozważ zgłoszenie nowego problemu. Ponadto zapoznaj się ze stroną pomocy technicznej Firebase, aby dowiedzieć się o dodatkowych opcjach.