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 consultare le domande frequenti principali di Firebase per altre domande frequenti su Firebase o specifiche per prodotto.
Un problema con il singolo dex durante la creazione dell'app per Android
Durante la creazione dell'app per Android, potresti riscontrare un errore di build correlato alla presenza di un singolo file dex. Il messaggio di errore è simile al seguente se il tuo progetto è configurato per utilizzare il sistema di build Gradle.
Cannot fit requested classes in a single dex file.
I file Dalvik Executable (.dex
) vengono utilizzati per contenere un insieme di definizioni di classe e i relativi dati aggiuntivi per le applicazioni Android (.apk
). Un singolo file dex può fare riferimento a un massimo di 65.536 metodi. La build non andrà a buon fine se il numero totale 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 eliminare il codice inutilizzato, il che può ridurre il numero totale di metodi a cui viene fatto riferimento in un singolo file dex. L'opzione si trova in Impostazioni del giocatore > Android > Impostazioni di pubblicazione > Minify. Le opzioni potrebbero differire nelle diverse versioni di Unity, pertanto consulta la documentazione ufficiale di Unity.
Se il numero di metodi di riferimento supera ancora il limite, un'altra opzione è
attivare multidex
. Esistono diversi modi per farlo 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.
Per ulteriori dettagli, consulta la guida dell'utente di multidex.
Problemi durante la creazione per Android con minSdkVersion 23
Quando crei build per Android, se scegli come target minSdkVersion
23, la procedura potrebbe non riuscire
nel passaggio di dexing, di solito nell'attività Gradle ":launcher:mergeExtDexDebug", dove
viene visualizzato il messaggio "Failed to transform" (Impossibile trasformare) per una delle librerie Android. Ciò è
dovuto a un bug nello strumento dex predefinito dell'SDK Android utilizzato dalla maggior parte
degli editor Unity e può essere risolto in diversi modi:
- Imposta
minSdkVersion
su 24. - Attiva la minimizzazione di Android in Impostazioni del player > Android > Impostazioni di pubblicazione > Minimizza.
- Specifica una versione diversa dello strumento dex aggiungendo questo codice al file
settingsTemplate.gradle
:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
Problemi durante la creazione per iOS con Cocoapods
Quando crei una build per iOS, l'installazione di Cocoapod potrebbe non riuscire a causa di un errore relativo alle impostazioni internazionali della lingua o alla codifica UTF-8. Al momento esistono diversi modi per risolvere il problema.
Dal terminale, esegui
pod install
direttamente 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, 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 sono stati importati inizialmente. Ecco i due metodi di importazione alternativi:
- Importazione di file
.unitypackage
nella directoryAssets/
del progetto - Importazione tramite
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 la pulizia della directory
Assets/
.
Nel tuo progetto Unity, devi 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 eseguire la migrazione della gestione dei pacchetti a UPM (il metodo di importazione consigliato).
Pacchetti importati come file .unitypackage
nella
directory Assets/
Se i pacchetti Firebase si trovano nella directory Assets/
, hai due opzioni per
aggiornare la versione dell'SDK:
Opzione 1 (consigliata): esegui la migrazione per utilizzare UPM (disponibile in Unity 2018.4 e versioni successive)
- 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 all'utilizzo del flusso di lavoro
.unitypackage
, è più semplice per gli aggiornamenti successivi della versione dell'SDK.
Opzione 2: continua 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 Firebase, assicurati di importare tutti i
.unitypackages
dalla cartelladotnet
corretta.- Se utilizzi Unity 2019 o versioni successive, importa dalla cartella
dotnet4
. - In caso contrario, seleziona Scripting Runtime Version in Player Settings
e, se è impostato su ".NET 3.x", importa dalla cartella
dotnet3
.
- Se utilizzi Unity 2019 o versioni successive, importa dalla cartella
La sovrascrittura delle versioni del pacchetto importate in precedenza deve essere gestita automaticamente da External Dependency Manager (incluso automaticamente quando importi Firebase
.unitypackages
).Tuttavia, se e SOLO se questo processo automatico non va a buon fine, 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
Pacchetti gestiti da UPM
Se i pacchetti Firebase sono gestiti da UPM,
importa la versione più recente dell'SDK come .tgz
.
Questa importazione sovrascriverà automaticamente la versione precedente.