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 sekcjiPlayer 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.
W
~/.bash_profile
lub podobnym programie dodajexport 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 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 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).
Pakiety zaimportowane jako pliki .unitypackage
do katalogu Assets/
Jeśli pakiety Firebase znajdują się w katalogu Assets/
, możesz zaktualizować wersję pakietu SDK na 2 sposoby:
Opcja 1 (zalecana): zmień ustawienia, aby używać UPM (dostępne w Unity 2018.4+).
- Postępuj zgodnie z instrukcjami udostępnionymi przez Firebase na potrzeby migracji zarządzania pakietami do UPM.
- Ta metoda wymaga większej konfiguracji początkowej niż kontynuowanie korzystania z procesu
.unitypackage
, ale za to ułatwia późniejsze aktualizacje pakietu SDK.
Opcja 2. Nadal używaj plików
.unitypackage
do importowania ich do kataloguAssets/
.Zaimportuj każdy z pakietów w przypadku zaktualizowanej wersji.
Jeśli pobierzesz plik firebase_unity_sdk.zip z witryny Firebase, upewnij się, że importujesz wszystkie pliki
.unitypackages
z prawidłowego folderudotnet
.- Jeśli używasz Unity 2019 lub nowszej wersji, importuj z folderu
dotnet4
. - W przeciwnym razie w Ustawieniach odtwarzacza wybierz Wersja środowiska wykonawczego skryptu. 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 pakietów powinno być obsługiwane automatycznie przez menedżera zależności zewnętrznych (który jest automatycznie uwzględniany podczas importowania Firebase
.unitypackages
).Jeśli jednak ten automatyczny proces się nie powiedzie, musisz ręcznie usunąć podane niżej foldery, a następnie ponownie wykonać powyższy krok.
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
.
Importowanie spowoduje automatyczne zastąpienie poprzedniej wersji.