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 sekcjiPlayer 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.
W
~/.bash_profile
lub równoważnym dokumencie dodajexport 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 kataloguAssets/
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).
Pakiety importowane jako pliki .unitypackage
do katalogu Assets/
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)
- Postępuj zgodnie z instrukcjami Firebase dotyczącymi przenoszenia zarządzania pakietami do UPM.
- Ta metoda wymaga więcej pracy na początku niż kontynuowanie korzystania z
.unitypackage
, ale ułatwia późniejsze aktualizacje wersji pakietu SDK.
Opcja 2. Dalsze używanie plików
.unitypackage
do importowania ich do kataloguAssets/
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 folderudotnet
.- 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
.
- Jeśli używasz Unity 2019 lub nowszej wersji, importuj z folderu
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
Pakiety zarządzane przez UPM
Jeśli pakietami Firebase zarządza UPM, zaimportuj nowszą wersję pakietu SDK jako .tgz
.
Ten import automatycznie zastąpi poprzednią wersję.