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

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

Masz inne problemy lub nie widzisz swojego problemu poniżej? Więcej informacji na temat Firebase i poszczególnych usług znajdziesz w głównych najczęstszych pytaniach dotyczących Firebase.

Problem z pojedynczym plikiem dex podczas tworzenia aplikacji na Androida

Podczas tworzenia aplikacji na Androida może wystąpić błąd kompilacji związany z posiadaniem jednego pliku dex. Jeśli projekt jest skonfigurowany do korzystania z systemu kompilacji Gradle, komunikat o błędzie będzie podobny do tego:

Cannot fit requested classes in a single dex file.

Pliki wykonywalne Dalvik (.dex) zawierają zestaw definicji klas i powiązanych z nimi danych dodatkowych dla aplikacji na Androida (.apk). Jeden plik DEX może odwoływać się do maksymalnie 65 536 metod. Jeśli łączna liczba metod ze wszystkich bibliotek Androida w projekcie przekroczy ten limit, kompilacja zakończy się niepowodzeniem.

W wersji 2017.2 Unity wprowadziło minifikację, która za pomocą Proguarda (lub innych narzędzi w niektórych wersjach Unity) usuwa nieużywany kod, co może zmniejszyć łączną liczbę metod, do których odwołuje się pojedynczy 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.

Jeśli liczba metod, do których się odwołujesz, nadal przekracza limit, możesz włączyć multidex. W Unity można to osiągnąć na kilka sposobów:

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

Więcej informacji znajdziesz w przewodniku użytkownika multidexu.

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

Podczas tworzenia aplikacji na Androida, jeśli docelowa wersja SDK to minSdkVersion 23, może wystąpić błąd na etapie tworzenia plików DEX, zwykle w zadaniu Gradle „:launcher:mergeExtDexDebug”, w którym pojawi się komunikat „Failed to transform” (Nie udało się przekształcić) dotyczący jednej z bibliotek Androida. Jest to spowodowane błędem w domyślnym narzędziu dex w pakiecie SDK Androida, z którego korzysta większość edytorów Unity. Można to naprawić na kilka sposobów:

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

Problemy podczas kompilowania na iOS za pomocą Cocoapods

Podczas kompilowania na iOS instalacja Cocoapod może się nie powieść z powodu błędu związanego z ustawieniami regionalnymi języka lub kodowaniem UTF-8. Obecnie istnieje kilka różnych sposobów na obejście tego problemu.

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

  • Zmień wersję Cocoapods na 1.10.2. Problem występuje tylko w wersji 1.11 i nowszych.

  • ~/.bash_profile lub równoważnym dokumencie dodaj export LANG=en_US.UTF-8

Jak zaktualizować wersję pakietów Firebase Unity SDK

Proces aktualizacji wersji pakietów Firebase Unity SDK zależy od sposobu, w jaki zostały one pierwotnie zaimportowane. Oto 2 alternatywne metody importu:

  • 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 tej metodzie łatwiej będzie Ci aktualizować przyszłe wersje i utrzymywać porządek w katalogu Assets/.

W projekcie Unity należy używać tylko jednej metody importowania do zarządzania wszystkimi pakietami Firebase. Poniższe instrukcje umożliwiają nie tylko aktualizację wersji poszczególnych pakietów, ale też w razie potrzeby migrację zarządzania pakietami do UPM (zalecana metoda importowania).

Jeśli pakiety Firebase znajdują się w katalogu Assets/, masz 2 możliwości zaktualizowania wersji pakietu SDK:

  • Opcja 1 (zalecana): migracja do UPM (dostępna w Unity 2018.4 i nowszych wersjach)

  • Opcja 2. Dalsze używanie plików .unitypackage do importowania ich do katalogu Assets/

    1. Zaimportuj każdy pakiet dla zaktualizowanej wersji.

      Jeśli pobierzesz plik firebase_unity_sdk.zip ze strony Firebase, pamiętaj, aby zaimportować wszystkie elementy .unitypackages z odpowiedniego folderu dotnet.

      • Jeśli używasz Unity 2019 lub nowszej wersji, importuj z folderu dotnet4.
      • W przeciwnym razie w Ustawieniach odtwarzacza wybierz Wersja środowiska wykonawczego skryptów i jeśli jest ustawiona na „.NET 3.x”, zaimportuj z folderu dotnet3.
    2. Zastępowanie wcześniej zaimportowanych wersji pakietu powinno być obsługiwane automatycznie przez Menedżera zależności zewnętrznych (który jest automatycznie dołączany podczas importowania Firebase .unitypackages).

      Jeśli jednak ten automatyczny proces się nie powiedzie, musisz ręcznie usunąć te foldery i ponownie wykonać powyższy krok importowania.

      • Assets/Editor Default Resources/Firebase
      • Assets/ExternalDependencyManager
      • Assets/Firebase
      • Assets/Parse
      • Assets/Plugins/iOS/Firebase

Jeśli pakietami Firebase zarządza UPM, zaimportuj nowszą wersję pakietu SDK jako .tgz. Ten import automatycznie zastąpi poprzednią wersję.