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

Na tej stronie znajdziesz porady i rozwiązania problemów z Unity, które mogą wystąpić podczas korzystania z Firebase.

Masz inne problemy lub nie widzisz swojego problemu w poniższej liście? Aby dowiedzieć się więcej o Firebase lub poszczególnych usługach, zapoznaj się z najczęstszymi pytaniami dotyczącymi Firebase.

Problem z single dex podczas kompilowania aplikacji na Androida

Podczas kompilowania aplikacji na Androida może wystąpić błąd kompilacji związany z tym, że masz jeden plik dex. Jeśli Twój projekt jest skonfigurowany do korzystania z systemu kompilacji Gradle, komunikat o błędzie będzie wyglądał podobnie do tego:

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 w przypadku aplikacji na Androida (.apk). Pojedynczy plik dex może zawierać odwołania do 65 536 metod. Kompilacja zakończy się niepowodzeniem, jeśli łączna liczba metod ze wszystkich bibliotek Androida w projekcie przekroczy ten limit.

W wersji 2017.2 Unity wprowadziło minifikację, która wykorzystuje narzędzie Proguard (lub inne narzędzia w niektórych wersjach Unity) do usuwania nieużywanego kodu. Może to zmniejszyć łączną liczbę odwołujących się do siebie metod w pojedynczym pliku dex. Opcja znajduje się w sekcji Ustawienia odtwarzacza > Android > Ustawienia publikacji > Kompresowanie. Opcje mogą się różnić w zależności od wersji Unity, dlatego zapoznaj się z oficjalną dokumentacją Unity.

Jeśli liczba odwołań do metod nadal przekracza limit, możesz włączyć multidex. Można to zrobić na kilka sposobów:

  • Jeśli opcja Custom Gradle Template w sekcji Player Settings jest włączona, zmień mainTemplate.gradle.
  • Jeśli do wyeksportowania projektu używasz Android Studio, zmodyfikuj plik build.gradle na poziomie modułu.

Więcej informacji znajdziesz w przewodniku użytkownika Multi-X.

Problemy podczas kompilowania aplikacji na Androida z wartością minSdkVersion 23

Podczas kompilowania na Androida, jeśli ustawisz wersję minSdkVersion 23, może wystąpić błąd w kroku dekodowania, zwykle w zadanie Gradle ':launcher:mergeExtDexDebug', gdzie pojawi się komunikat „Nie udało się przekształcić” jednej z bibliotek Androida. Jest to spowodowane błędem w domyślnym narzędziu dex w pakiecie SDK Androida, którego używa większość edytorów Unity. Można to naprawić na kilka sposobów:

  • Ustaw wartość minSdkVersion na 24.
  • Włącz kompresję na Androida w sekcji Ustawienia odtwarzacza > Android > Ustawienia publikacji > Kompresowanie.
  • Określ inną wersję narzędzia dex, dodając do pliku settingsTemplate.gradle ten wiersz:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

Problemy z kompilacją na iOS za pomocą Cocoapods

Podczas kompilowania aplikacji na iOS instalacja Cocoapod może zakończyć się błędem dotyczącym ustawień języka lub kodowania UTF-8. Obecnie istnieje kilka różnych sposobów na obejście tego problemu.

  • W terminalu uruchom bezpośrednio pod install i otwórz utworzony plik xcworkspace.

  • Wróć do wersji Cocoapods 1.10.2. Problem występuje tylko w wersji 1.11 i nowszych.

  • ~/.bash_profile lub podobnym programie dodaj export LANG=en_US.UTF-8

Jak zaktualizować wersję pakietów SDK Firebase dla Unity

Proces aktualizacji wersji pakietów Firebase Unity SDK zależy od tego, jak zostały one zaimportowane. Oto 2 alternatywne metody importowania:

  • Importowanie plików .unitypackage w katalogu Assets/ projektu
  • Importowanie za pomocą menedżera pakietów Unity (UPM)
    • Jest to zalecany sposób zarządzania pakietami w Unity w wersji 2018.4 lub nowszej.
    • Dzięki temu łatwiej będzie Ci aktualizować wersje, a katalog Assets/ będzie czystszy.

W projekcie Unity do zarządzania wszystkimi pakietami Firebase należy używać tylko jednej metody importowania. Z tych instrukcji możesz skorzystać nie tylko do aktualizowania wersji poszczególnych pakietów, ale też, w razie potrzeby, do przeniesienia zarządzania pakietami do UPM (zalecana metoda importowania).