Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Risoluzione dei problemi e domande frequenti per Unity e Firebase

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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 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:

  1. Rimuovi o disabilita le seguenti DLL per tutte le piattaforme:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. 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:

  1. Rimuovi o disabilita le seguenti DLL per tutte le piattaforme:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. 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 in Player Settings è abilitato, modifica mainTemplate.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:

    1. Usa Gradle come sistema di compilazione.
    2. Abilita Custom Gradle Template in Player Settings .
    3. Aggiungi le seguenti righe a mainTemplate.gradle (o build.gradle a livello di modulo se esporti un progetto per Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • 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, aggiungi export 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 directory Assets/ 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).