Questa pagina offre suggerimenti e risoluzione dei problemi specifici di Unity che potresti riscontrare durante l'utilizzo di Firebase.
Hai altre sfide o non vedi il tuo problema descritto di seguito? Assicurati di controllare le domande frequenti principali di Firebase per ulteriori domande frequenti su Firebase o specifiche del prodotto.
Compatibilità .NET quando si usa Unity 2017.x e versioni successive
Firebase supporta .NET 4.x come opzione di compilazione sperimentale in Unity 2017 e versioni successive. I plug-in Firebase usano componenti di Parse SDK per fornire alcune classi .NET 4.x nelle versioni precedenti di .NET.
Pertanto, Firebase Unity SDK versione 5.4.0
e successive fornisce plug-in compatibili con .NET 3.x o .NET 4.x nelle directory dotnet3
e dotnet4
di Firebase Unity SDK.
Se importi un plug-in Firebase incompatibile con la versione .NET abilitata nel tuo progetto, vedrai errori di compilazione da alcuni tipi nel framework .NET implementati da Parse SDK.
Per risolvere l'errore di compilazione, se utilizzi .NET 3.x:
- Rimuovi o disabilita le seguenti DLL per tutte le piattaforme:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- Abilita 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 disabilita le seguenti DLL per tutte le piattaforme:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- Abilita 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 su Assets > Play Services Resolver > Version Handler > Update per abilitare le DLL corrette per il tuo progetto.
Compilazione Unity 2017.1 IL2CPP 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 usano componenti di Parse SDK per fornire alcune classi .NET 4.x nelle versioni precedenti di .NET.
Pertanto, Firebase Unity SDK versione 5.4.0 e successive fornisce DLL di inoltro del tipo che inoltrano i tipi Parse (ad esempio, l'implementazione Parse di System.Threading.Tasks.Task
) al framework .NET. Sfortunatamente, IL2CPP (un transpiler che converte C# in C++) fornito in Unity 2017.1.x non elabora correttamente le DLL di inoltro del tipo, il che comporta errori di compilazione simili ai seguenti:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
Attualmente non è disponibile alcuna soluzione alternativa per gli errori di compilazione di .NET 4.x IL2CPP in Unity 2017.1, quindi è necessario eseguire l'aggiornamento a Unity 2017.2 o versioni successive per usare .NET 4.x nei progetti compilati con IL2CPP.
Collegamento in rete di Unity 2017.2
Firebase Realtime Database crea connessioni di rete TLS utilizzando lo stack di rete .NET. La funzionalità TLS è interrotta in Unity 2017.2 quando si utilizza .NET 4.6 causando un errore del plug-in Realtime Database negli editor e sul desktop.
Non esiste una soluzione alternativa per questo problema, quindi è necessario utilizzare una versione diversa di Unity, ad esempio la versione 2017.1 o 2017.3.
File di configurazione Android di Firebase mancante in Unity 2020
Per supportare le versioni di Unity che non hanno la possibilità di personalizzare la build Gradle, lo strumento dell'editor Firebase genera Assets/Plugins/Android/Firebase/res/values/google-services.xml
come risorsa Android da impacchettare in un Build Android, in modo che l'SDK Firebase possa utilizzarlo per inizializzare l'istanza FirebaseApp predefinita.
In Unity 2020, tutte le risorse Android devono trovarsi in directory con suffisso .androidlib
. Se il tuo progetto utilizza un SDK Firebase che genera una 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 di un'app per Android
Durante la creazione di un'app per Android, potresti riscontrare un errore di compilazione relativo all'avere un singolo file dex. Il messaggio di errore è simile al seguente, se il progetto è configurato per utilizzare il sistema di compilazione Gradle.
Cannot fit requested classes in a single dex file.
I file Dalvik Executable ( .dex
) vengono utilizzati per contenere una serie di definizioni di classe e i relativi dati aggiuntivi associati per le applicazioni Android ( .apk
). Un singolo file dex è limitato al riferimento a 65.536 metodi. La compilazione avrà esito negativo se il numero totale di metodi di tutte le librerie Android nel tuo progetto supera questo limite.
Unity ha introdotto Minification nel 2017.2, che utilizza Proguard (o altri strumenti in alcune versioni di Unity) per eliminare il codice inutilizzato, che può ridurre il numero totale di metodi di riferimento in un singolo file dex. L'opzione è disponibile in Impostazioni lettore > Android > Impostazioni di pubblicazione > Minimizza . Le opzioni possono differire in diverse versioni di Unity, quindi fare riferimento alla documentazione ufficiale di Unity.
Se il numero di metodi di riferimento supera ancora il limite, un'altra opzione è abilitare multidex
. Ci sono diversi modi per raggiungere questo obiettivo in Unity:
- Se
Custom Gradle Template
inPlayer Settings
è abilitato, modificamainTemplate.gradle
. - Se utilizzi Android Studio per creare il progetto esportato, modifica il file
build.gradle
a livello di modulo.
Maggiori dettagli possono essere trovati nella guida per l'utente multidex .
Supporto e desugaring di Java 8 per build Android in Unity 2017 e Unity 2018 (Firebase Unity SDK 8.0.0 e versioni successive)
A maggio 2021 (Firebase BoM v28.0.0), Firebase ha disabilitato il desugaring per tutte le sue librerie Android (vedi nota di rilascio ). Quando crei un'app Android con Firebase Unity SDK (8.0.0 e versioni successive), potresti visualizzare il seguente errore di compilazione:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
Questa modifica riguarda 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 build gradle. Per correggere questo errore di compilazione in Unity 2017 e Unity 2018, eseguire una delle operazioni seguenti:
Aggiungi un blocco
compileOptions
al tuo modello gradle:- Usa
Gradle
come sistema di compilazione. - Abilita
Custom Gradle Template
inPlayer Settings
. Aggiungi le seguenti righe a
mainTemplate.gradle
(obuild.gradle
a livello di modulo se esporti un progetto per Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Usa
In alternativa, aumenta minSdkVersion per il tuo progetto Android a 26 o superiore.
Vedere anche Risoluzione dei problemi di Android: errori di compilazione del desugaring .
Problemi durante la compilazione per iOS con Cocoapods
Durante la compilazione per iOS, l'installazione di Cocoapod potrebbe non riuscire con un errore relativo alle impostazioni locali della lingua o alla codifica UTF-8. Attualmente esistono diversi modi per aggirare il problema.
Dal terminale, esegui
pod install
direttamente e apri il file xcworkspace risultante.Eseguire il downgrade della versione di Cocoapods alla 1.10.2. Il problema esiste solo nella versione 1.11 e successive.
Nel tuo
~/.bash_profile
o equivalente, aggiungiexport LANG=en_US.UTF-8
Come aggiornare la versione degli SDK di Firebase Unity
Il processo per aggiornare le versioni degli SDK di Firebase Unity dipende da come sono stati inizialmente importati. Ecco i due metodi di importazione alternativi:
- Importazione dei file
.unitypackage
nella directoryAssets/
del progetto - Importazione tramite Unity Package Manager (UPM)
- Questo è il modo consigliato per gestire i pacchetti in Unity 2018.4+.
- Utilizzare questo metodo per semplificare gli aggiornamenti delle versioni future e rendere più pulita la directory
Assets/
.
Nel tuo progetto Unity, dovresti utilizzare un solo metodo di importazione per gestire tutti i tuoi pacchetti Firebase. Le istruzioni riportate di seguito possono essere utilizzate non solo per aggiornare la versione dei singoli pacchetti, ma anche, se necessario, per migrare la gestione dei pacchetti a UPM (il metodo di importazione consigliato).
Se i pacchetti Firebase si trovano nella directory Assets/
, hai due opzioni per aggiornare la versione dell'SDK:
Opzione 1 (consigliata) : eseguire la migrazione per utilizzare UPM (disponibile in Unity 2018.4+)
- Segui le istruzioni fornite da Firebase per eseguire la migrazione della gestione dei pacchetti a UPM .
- Sebbene questo metodo richieda una configurazione iniziale maggiore rispetto a continuare a utilizzare il flusso di lavoro
.unitypackage
, ripaga in termini di facilità dei successivi aggiornamenti della versione dell'SDK.
Opzione 2 : continuare a utilizzare i file
.unitypackage
per importarli nella directoryAssets/
Importa ciascuno dei pacchetti per la versione aggiornata.
Se scarichi firebase_unity_sdk.zip dal sito Web di Firebase, assicurati di importare tutti
.unitypackages
dalla cartelladotnet
corretta.- Se usi Unity 2019 o versioni successive, importa dalla cartella
dotnet4
. - In caso contrario, selezionare Scripting Runtime Version in Player Settings e, se è impostato su ".NET 3.x", importare dalla cartella
dotnet3
.
- Se usi Unity 2019 o versioni successive, importa dalla cartella
La sovrascrittura delle versioni del pacchetto importate in precedenza dovrebbe essere gestita automaticamente da External Dependency Manager (che viene incluso automaticamente quando importi Firebase
.unitypackages
).Tuttavia, se e SOLO se questo processo automatico fallisce, dovrai eliminare manualmente le seguenti cartelle e riprovare il passaggio di importazione precedente.
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
Se i pacchetti Firebase sono gestiti da UPM, importa la versione più recente dell'SDK come .tgz
. Questa importazione sovrascriverà automaticamente la versione precedente.