Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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 relativi a 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 principali domande frequenti di Firebase per ulteriori domande frequenti su Firebase o specifiche del prodotto.

Compatibilità .NET quando si usa Unity 2017.xe versioni successive

Firebase supporta .NET 4.x come opzione di compilazione sperimentale in Unity 2017 e versioni successive. I plug-in Firebase utilizzano 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 forniscono plug-in compatibili con .NET 3.xo .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 che sono implementati da Parse SDK.

Per risolvere l'errore di compilazione, se stai usando .NET 3.x:

  1. Rimuovere o disabilitare 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 stai usando .NET 4.x:

  1. Rimuovere o disabilitare 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 a Risorse > Risolutore di servizi di gioco > Gestore versione > Aggiorna per abilitare le DLL corrette per il tuo progetto.

Compilazione di 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 utilizzano 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 dei tipi che inoltrano i tipi di analisi (ad esempio, l'implementazione di analisi 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 dei tipi che provocano errori di compilazione simili ai seguenti:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

Al momento non sono disponibili soluzioni alternative 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.

Unity 2017.2 in rete

Firebase Realtime Database crea connessioni di rete TLS utilizzando lo stack di rete .NET. La funzionalità TLS è interrotta in Unity 2017.2 quando si usa .NET 4.6 causando il fallimento del plug-in del database in tempo reale negli editor e sul desktop.

Non esiste una soluzione per questo problema, quindi è necessario utilizzare una versione diversa di Unity, ad esempio la versione 2017.1 o 2017.3.

File di configurazione Android Firebase mancante in Unity 2020

Per supportare le versioni di Unity che non hanno la possibilità di personalizzare la build Gradle, lo strumento editor Firebase genera Assets/Plugins/Android/Firebase/res/values/google-services.xml come risorsa Android da inserire in un pacchetto 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 Firebase SDK 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 il singolo dex durante la creazione dell'app Android

Durante la creazione dell'app 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 classi e i dati aggiuntivi associati per le applicazioni Android ( .apk ). Un singolo file dex è limitato a fare riferimento a 65.536 metodi. La compilazione avrà esito negativo se il numero totale di metodi da 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 può essere trovata in Impostazioni lettore > Android > Impostazioni pubblicazione > Riduci a icona . Le opzioni possono differire nelle 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 consiste 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 Java 8 e desugaring 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 la 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 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 build gradle. Per correggere questo errore di compilazione in Unity 2017 e Unity 2018, eseguire una delle seguenti operazioni:

  • Aggiungi un blocco compileOptions al tuo modello gradle:

    1. Usa Gradle come sistema di costruzione.
    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.

Vedi anche Risoluzione dei problemi di Android: rimozione degli errori di build .

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 direttamente pod install e apri il file xcworkspace risultante.

  • Esegui 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 Firebase Unity dipende da come sono stati inizialmente importati. Ecco i due metodi di importazione alternativi:

  • Importazione di file .unitypackage nella directory Assets/ del tuo progetto
  • Importazione tramite Unity Package Manager (UPM)
    • Questo è il modo consigliato per gestire i pacchetti in Unity 2018.4+.
    • Usa questo metodo per rendere più semplici gli aggiornamenti delle versioni future e per pulire le tue Assets/ directory.

Nel tuo progetto Unity, dovresti usare un solo metodo di importazione per gestire tutti i tuoi pacchetti Firebase. Le istruzioni seguenti possono essere utilizzate non solo per aggiornare la versione dei singoli pacchetti, ma anche, se necessario, per migrare la gestione dei pacchetti in UPM (il metodo di importazione consigliato).