Questa pagina offre suggerimenti e indicazioni per la risoluzione dei problemi specifici di Unity che potresti riscontrare durante l'utilizzo di Firebase.
Hai altri problemi o non trovi il tuo problema descritto di seguito? Assicurati di consultare le domande frequenti principali su Firebase per altre domande frequenti generali o specifiche per prodotto.
Compatibilità con .NET quando si utilizza Unity 2017.x e versioni successive
Firebase supporta .NET 4.x come opzione di creazione sperimentale in Unity 2017 e in un secondo momento. I plug-in Firebase utilizzano componenti dell'SDK Parse per fornire alcune classi .NET 4.x nelle versioni precedenti di .NET.
Pertanto, la versione 5.4.0
e successive dell'SDK Firebase Unity fornisce plug-in compatibili con .NET 3.x o .NET 4.x nelle directory dotnet3
e dotnet4
dell'SDK Firebase Unity.
Se importi un plug-in Firebase incompatibile con la versione di .NET attivata nel progetto, visualizzerai errori di compilazione di alcuni tipi nel framework .NET implementati dall'SDK Parse.
Per risolvere l'errore di compilazione, se utilizzi .NET 3.x:
- Rimuovi o disattiva le seguenti DLL per tutte le piattaforme:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
- Attiva le seguenti DLL per tutte le piattaforme:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Per risolvere l'errore di compilazione, se utilizzi .NET 4.x:
- Rimuovi o disattiva le seguenti DLL per tutte le piattaforme:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- Attiva le seguenti DLL per tutte le piattaforme:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Se importi un altro plug-in Firebase:
- Nel tuo progetto Unity, vai a Asset > Risoluzione di Play Services > Gestore della versione > Aggiorna per abilitare le DLL corrette per il progetto.
Compilazione IL2CPP di Unity 2017.1 nei progetti .NET 4.x
Firebase supporta .NET 4.x come opzione di compilazione sperimentale in Unity 2017 e versioni successive. I plug-in Firebase utilizzano componenti dell'SDK Parse per fornire alcune classi .NET 4.x nelle versioni precedenti di .NET.
Pertanto, la versione 5.4.0 e successive dell'SDK Firebase Unity fornisce DLL di inoltro dei tipi che inoltrano i tipi Parse (ad esempio, l'implementazione di Parse di System.Threading.Tasks.Task
) al framework .NET. Purtroppo IL2CPP
(un transpiler che converte C# in C++) fornito in Unity 2017.1.x
non elabora correttamente il tipo di inoltro DLL, generando errori di generazione che
sono simili ai seguenti:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
Non sono attualmente disponibili soluzioni alternative per gli errori di build IL2CPP .NET 4.x in Unity 2017.1, quindi è necessario eseguire l'upgrade a Unity 2017.2 o versione successiva per utilizzare .NET 4.x in di progetti compilati con IL2CPP.
Networking di Unity 2017.2
Firebase Realtime Database crea connessioni di rete TLS utilizzando la rete .NET stack. La funzionalità TLS non funziona in Unity 2017.2 quando si utilizza .NET 4.6, causando il fallimento del plug-in Realtime Database negli editor e su computer.
Non esiste una soluzione alternativa a questo problema, quindi devi utilizzare una versione diversa di Unity, ad esempio la versione 2017.1 o 2017.3.
Manca il file di configurazione di Firebase per Android in Unity 2020
Per supportare versioni di Unity che non offrono la possibilità di
personalizzare la build Gradle, lo strumento editor Firebase genera
Assets/Plugins/Android/Firebase/res/values/google-services.xml
come Android
da pacchettizzare in una build Android, in modo che l'SDK Firebase possa usare
per inizializzare l'istanza FirebaseApp predefinita.
In Unity 2020, tutte le risorse Android devono trovarsi in directory con un suffisso.androidlib
. Se il progetto utilizza un SDK Firebase che genera
Directory Assets/Plugins/Android/Firebase
, rinominala in
Assets/Plugins/Android/Firebase.androidlib
. Assicurati che contenga
AndroidManifest.xml
, project.properties
e
res/values/google-services.xml
.
Un problema con Single Dex durante la creazione dell'app per Android
Durante lo sviluppo di un'app per Android, potreste riscontrare errori di compilazione a causa un singolo file dex. Se il progetto è configurato per utilizzare il sistema di compilazione Gradle, il messaggio di errore è simile al seguente.
Cannot fit requested classes in a single dex file.
I file Dalvik Executable (.dex
) vengono utilizzati per contenere un insieme di definizioni di classi
e i relativi dati aggiuntivi associati per le app per Android (.apk
). Un unico dex
si limita a fare riferimento a 65.536 metodi. La build non riesce se il numero totale
il numero di metodi di tutte le librerie Android nel tuo progetto supera questo limite.
Unity ha introdotto la minimizzazione nella versione 2017.2, che utilizza Proguard (o altri strumenti in alcune versioni di Unity) per rimuovere il codice inutilizzato, il che può ridurre il numero totale di metodi a cui si fa riferimento in un singolo file dex. L'opzione è disponibile in Impostazioni player > Android > Impostazioni di pubblicazione > Minimizza. Le opzioni possono variano a seconda della versione di Unity, quindi fai riferimento alla sezione documentazione.
Se il numero di metodi a cui viene fatto riferimento supera ancora il limite, un'altra opzione è attivare multidex
. Esistono diversi modi per raggiungere questo obiettivo in Unity:
- Se
Custom Gradle Template
inPlayer Settings
è attivato, modificamainTemplate.gradle
. - Se usi Android Studio per creare il progetto esportato, modifica
file
build.gradle
a livello di modulo.
Maggiori dettagli sono disponibili nella guida dell'utente di Multidex.
Supporto di Java 8 e desugaring per le build Android in Unity 2017 e Unity 2018 (SDK Firebase Unity 8.0.0 e versioni successive)
A maggio 2021 (distinta base di Firebase v28.0.0), Firebase ha disattivato il desugaring per tutte le sue librerie Android (consulta la nota di rilascio). Quando crei un'app per Android con l'SDK Firebase Unity (8.0.0 e versioni successive), potresti visualizzare il seguente errore di build:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
Questa modifica interessa solo le build Android in Unity 2017 e Unity 2018. Le versioni più recenti di Unity aggiungono il blocco compileOptions
per impostazione predefinita nei file di compilazione di Gradle.
Per correggere questo errore di generazione in Unity 2017 e Unity 2018, procedi in uno dei seguenti modi:
Aggiungi un blocco
compileOptions
al modello di Gradle:- Utilizza
Gradle
come sistema di compilazione. - Attiva
Custom Gradle Template
inPlayer Settings
. Aggiungi le seguenti righe a
mainTemplate.gradle
(o a livello di modulobuild.gradle
se esporti un progetto per Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Utilizza
In alternativa, aumenta il valore minSdkVersion del progetto Android a 26 o versioni successive.
Vedi anche Risoluzione dei problemi di Android - Eliminazione degli errori di build.
Problemi durante la compilazione per iOS con Cocoapods
Quando sviluppi per iOS, l'installazione di Cocoapod potrebbe non riuscire e potrebbe restituire un errore relativo al lingua locale o codifica UTF-8. Al momento esistono diversi modi per ovviare al problema.
Dal terminale, esegui direttamente
pod install
e apri il file xcworkspace risultante.Esegui il downgrade della versione di CocoaPods alla 1.10.2. Il problema si verifica solo nella versione 1.11 e successive.
In
~/.bash_profile
o equivalente, aggiungiexport LANG=en_US.UTF-8
Come aggiornare la versione degli SDK Firebase Unity
La procedura per aggiornare le versioni degli SDK Firebase Unity dipende da come queste sono stati importati inizialmente. Ecco i due metodi di importazione alternativi:
- Importare i file
.unitypackage
nella directoryAssets/
del progetto - L'importazione viene eseguita utilizzando
Gestore di pacchetti Unity
(UPM)
- Questo è il modo consigliato per gestire i pacchetti in Unity 2018.4 e versioni successive.
- Utilizza questo metodo per semplificare gli aggiornamenti futuri della versione e il tuo
Assets/
strumento di pulizia della directory.
Nel progetto Unity, devi utilizzare un solo metodo di importazione per gestire tutti i pacchetti Firebase. Le istruzioni riportate di seguito possono essere utilizzate non solo per aggiornare dei singoli pacchetti, ma anche, se necessario, per la migrazione la gestione dei contenuti in UPM (il metodo di importazione consigliato).