Risoluzione dei problemi e domande frequenti per Unity e Firebase

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.

Un problema con il singolo dex durante la compilazione dell'app per Android

Durante la compilazione dell'app per Android, potresti riscontrare un errore di compilazione relativo alla presenza di 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 eseguibili Dalvik (.dex) vengono utilizzati per contenere un insieme di definizioni di classi e i relativi dati aggiuntivi associati per le applicazioni Android (.apk). Un singolo file dex è limitato al riferimento a 65.536 metodi. La compilazione non andrà a buon fine se il numero totale di metodi di tutte le librerie Android del 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 del giocatore > Android > Impostazioni di pubblicazione > Minimizza. Le opzioni possono essere diverse in base alla versione di Unity, quindi consulta la documentazione ufficiale di Unity.

Se il numero di metodi a cui si fa riferimento supera ancora il limite, un'altra opzione è attivare multidex. In Unity esistono diversi modi per farlo:

  • Se Custom Gradle Template in Player Settings è attivato, modifica mainTemplate.gradle.
  • Se utilizzi Android Studio per compilare il progetto esportato, modifica il file build.gradle a livello di modulo.

Per ulteriori dettagli, consulta la guida dell'utente di MultiDex.

Problemi durante la compilazione per Android con minSdkVersion 23

Quando esegui la compilazione per Android, se scegli come target minSdkVersion 23, la compilazione potrebbe non riuscire nel passaggio di dexing, in genere nell'attività Gradle ":launcher:mergeExtDexDebug", dove verrà visualizzato il messaggio "Impossibile trasformare" una delle librerie Android. Il problema è causato da un bug nello strumento dex predefinito dell'SDK Android utilizzato dalla maggior parte degli editor di Unity e può essere risolto in diversi modi:

  • Imposta minSdkVersion su 24.
  • Attiva la minimizzazione per Android in Impostazioni del player > Android > Impostazioni di pubblicazione > Minimizza
  • Specifica una versione diversa dello strumento dex aggiungendo quanto segue al filesettingsTemplate.gradle:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

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 internazionali o alla 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, aggiungi export 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 sono stati inizialmente importati. Ecco i due metodi di importazione alternativi:

  • Importare i file .unitypackage nella directory Assets/ del progetto
  • Importazione utilizzando Unity Package Manager (UPM)
    • Questo è il modo consigliato per gestire i pacchetti in Unity 2018.4 e versioni successive.
    • Utilizza questo metodo per semplificare gli aggiornamenti delle versioni future e rendere più ordinata la Assets/ 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 la versione dei singoli pacchetti, ma anche, se necessario, per eseguire la migrazione della gestione dei pacchetti a UPM (il metodo di importazione consigliato).