Debug del processo di build, installazione ed esecuzione del gioco

Introduzione

Di seguito è riportata una guida al debug del processo di compilazione e build per i giochi Unity che utilizzano l'SDK Firebase per Unity. Descrive come esaminare e risolvere molti dei problemi più comuni che puoi riscontrare durante la configurazione e la creazione del gioco per una nuova piattaforma o dopo un aggiornamento. Sono elencati nell'ordine in cui possono verificarsi durante la procedura. Consultali in ordine e procedi man mano che vengono risolti.

Oltre a questo documento, consulta le domande frequenti su Firebase per Unity per saperne di più.

Problemi di compilazione della modalità di gioco

La prima classe di problemi di build può verificarsi durante i test nell'editor prima di provare ad avviare una build mobile. Questa sezione riguarda tutti gli errori di Firebase che si verificano prima e durante la modalità di gioco.

Quando Unity si avvia o rileva modifiche alle dipendenze, al codice o ad altri asset, tenta di ricreare il progetto. Se il progetto non può essere compilato in quel momento, l'editor registrerà gli errori di compilazione nella console e, se provi ad attivare la modalità di riproduzione, riceverai un popup di errore nella scheda Scena di Unity con il messaggio All compiler errors have to be fixed before you can enter playmode!.

Tipi, classi, metodi e membri mancanti

Molti problemi di Firebase si verificano a causa dell'incapacità dell'editor e del compilatore di trovare i tipi, le classi, i metodi e i membri necessari. I sintomi più comuni sono varianti dei seguenti:

The type or namespace name ‘<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace ‘Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

‘<CLASS NAME>' does not contain a definition for ‘<MEMBER VARIABLE OR METHOD NAME>'

Passaggi per la risoluzione:
  1. Se utilizzi classi o metodi Firebase nel codice, assicurati di renderli disponibili utilizzando le istruzioni using corrette per i prodotti Firebase specifici necessari.

    1. Esempi tratti da MechaHamster: Level Up With Firebase Edition:
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Verifica di aver importato i pacchetti Firebase appropriati:

    1. Per importare i pacchetti appropriati:
      1. Aggiungi l'SDK Firebase Unity come .unitypackage o
      2. Esamina ed esegui una delle alternative descritte in Opzioni di installazione di Unity aggiuntive.
    2. Assicurati che ogni prodotto Firebase nel tuo progetto e EDM4U:
      • Sono alla stessa versione
      • Sono stati installati come .unitypackage esclusivamente O esclusivamente tramite Unity Package Manager.
  3. Se hai importato l'SDK Firebase Unity precedente alla versione "10.0.0" come .unitypackage, il file ZIP dell'SDK Firebase Unity contiene pacchetti per il supporto di .NET 3.x e .NET 4.x. Assicurati di aver incluso nel progetto solo il livello di .NET Framework compatibile:

    1. La compatibilità tra le versioni dell'editor Unity e i livelli di .NET Framework è discussa in Aggiungi Firebase al tuo progetto Unity.
    2. Se hai importato per sbaglio i pacchetti Firebase nel livello .NET Framework sbagliato o se devi passare dall'utilizzo di .unitypackage a una delle opzioni di installazione di Unity aggiuntive , il modo più semplice è rimuovere ogni pacchetto Firebase tramite i metodi menzionati in questa sezione sulla migrazione e poi reimportare tutti i pacchetti Firebase.
  4. Verifica che l'editor stia ricreando il progetto e che i tuoi tentativi di riproduzione riflettano lo stato più recente del progetto:

    1. Per impostazione predefinita, l'editor Unity è impostato per la ricostruzione ogni volta che vengono rilevate modifiche agli asset o alla configurazione.
    2. È possibile che questa funzionalità sia stata disattivata e che l'editor Unity sia impostato su aggiornamento/ricompilazione manuale. In questo caso, esamina il problema e prova ad aggiornare manualmente.

Errori di runtime della modalità di riproduzione

Se il gioco si avvia, ma si verificano problemi con Firebase durante l'esecuzione, prova quanto segue:

Assicurati di approvare i bundle Firebase in "Sicurezza e privacy" su Mac OS

Se, all'avvio del gioco nell'editor su Mac OS, viene visualizzata una finestra di dialogo che dice"FirebaseCppApp-<version>.bundle non può essere aperto perché lo sviluppatore non può essere verificato ", devi approvare quel file bundle specifico nel menu Sicurezza e privacy del Mac.

Per farlo, fai clic su Icona Apple > Preferenze di Sistema > Sicurezza e Privacy.

Nel menu Sicurezza, circa a metà pagina, è presente una sezione che indica che l'utilizzo di "FirebaseCppApp-<version>.bundle" è stato bloccato perché non proviene da uno sviluppatore identificato.

Fai clic sul pulsante Consenti comunque.

c35166e224cce720.png

Torna a Unity e premi di nuovo Play.

Verrà visualizzato un avviso simile al primo:

5ad9ddb0d3a52892.png

Premi Apri per consentire al programma di procedere. Non ti verrà più chiesto di confermare l'apertura di questo file specifico.

Assicurati che il progetto contenga e utilizzi file di configurazione validi

  1. Assicurati che le impostazioni di build siano impostate per la destinazione prevista (iOS o Android) in File > Build Settings (File > Impostazioni di build). Per una discussione più completa, leggi la documentazione relativa alle impostazioni di build di Unity.
  2. Scarica il file di configurazione per la tua app (google-services.json per Android o GoogleService-Info.plist per iOS) e la destinazione di build dalla console Firebase in Impostazioni progetto > Le tue app: Se hai già questi file, eliminali nel progetto e sostituiscili con la versione più recente, assicurandoti che siano scritti esattamente come mostrato sopra senza "(1)" o altri numeri aggiunti ai nomi dei file.
  3. Se la console contiene un messaggio relativo ai file in Assets/StreamingAssets/, assicurati che non siano presenti messaggi della console che indicano che Unity non è riuscito a modificare i file in quella posizione
  4. Assicurati che Assets/StreamingAssets/google-services-desktop.json sia generato e corrisponda al file di configurazione scaricato.
    • Se non viene generata automaticamente e StreamingAssets/ non esiste, crea manualmente la directory nella directory Assets.
    • Controlla se Unity ha generato google-services-desktop.json.

Assicurati che ogni prodotto Firebase ed EDM4U siano stati installati esclusivamente tramite .unitypackage o Unity Package Manager.

  1. Controlla sia la cartella Assets/ sia Unity Package Manager per assicurarti che gli SDK Firebase ed EDM4U siano stati installati esclusivamente tramite uno o l'altro metodo.
  2. Alcuni plug-in sviluppati da Google, come Google Play, e plug-in di terze parti potrebbero dipendere da EDM4U. Questi plug-in possono includere EDM4U nei pacchetti .unitypackage o Unity Package Manager (UPM). Assicurati che nel progetto sia presente una sola copia di EDM4U. Se i pacchetti UPM dipendono da EDM4U, è meglio conservare solo le versioni UPM di EDM4U, che si trovano nella pagina dell'archivio delle API di Google per Unity.

Assicurati che ogni prodotto Firebase nel tuo progetto sia nella stessa versione.

  1. Se gli SDK Firebase sono stati installati tramite .unitypackage, controlla se tutte le librerie FirebaseCppApp in Assets/Firebase/Plugins/x86_64/ hanno la stessa versione.
  2. Se gli SDK Firebase sono stati installati tramite Unity Package Manager (UPM), apri Windows > Package Manager, cerca "Firebase" e assicurati che tutti i pacchetti Firebase abbiano la stessa versione.
  3. Se il tuo progetto contiene versioni diverse degli SDK Firebase, ti consigliamo di rimuovere completamente tutti gli SDK Firebase prima di installarli di nuovo, questa volta con le stesse versioni. Il modo più pulito è rimuovere ogni pacchetto Firebase tramite i metodi menzionati in questa sezione sulla migrazione.

Errori di build del resolver e del dispositivo di destinazione

Se il gioco funziona nell'editor (configurato per la destinazione di build appropriata di tua scelta), verifica che External Dependency Manager for Unity (EDM4U) sia configurato e funzioni correttamente.

Il repository GitHub di EDM4U contiene una guida passo passo per questa parte della procedura che devi esaminare e seguire prima di procedere.

Problemi relativi a "Single Dex" e minimizzazione (obbligatorio se utilizzi Cloud Firestore)

Durante la creazione di un'app per Android, potresti riscontrare un errore di build relativo alla presenza di un singolo file dex. Il messaggio di errore è simile al seguente (se il progetto è configurato per utilizzare il sistema di build Gradle):

Cannot fit requested classes in a single dex file.

I file .dex vengono utilizzati per contenere un insieme di definizioni di classi e i relativi dati aggiuntivi associati per le app per Android. Un singolo file dex è limitato al riferimento a 65.536 metodi; le build non andranno a buon fine se il numero totale di metodi di tutte le librerie Android nel progetto supera questo limite.

I due passaggi seguenti possono essere applicati in sequenza; attiva la configurazione multidex solo se la minimizzazione non risolve il problema.

Abilita la minimizzazione

Unity ha introdotto la minimizzazione nella versione 2017.2 per eliminare il codice inutilizzato, il che può ridurre il numero totale di metodi di riferimento in un singolo file dex. * L'opzione è disponibile in Player Settings > Android > Publishing Settings > Minify (Impostazioni del player > Android > Impostazioni di pubblicazione > Minimizza). * Le opzioni potrebbero variare in base alla versione di Unity, quindi consulta la documentazione ufficiale di Unity.

Abilita multidex

Se, dopo aver attivato la minimizzazione, il numero di metodi di riferimento supera ancora il limite, un'altra opzione è attivare multidex. Esistono diversi modi per farlo in Unity:

  • Se l'opzione Custom Gradle Template (Modello Gradle personalizzato) in Player Settings (Impostazioni player) è attiva, modifica mainTemplate.gradle.
  • Se utilizzi Android Studio per creare il progetto esportato, modifica il file build.gradle a livello di modulo.

Per maggiori dettagli, consulta la guida dell'utente di multidex.

Informazioni e correzione degli errori di runtime del dispositivo di destinazione

Se il tuo gioco funziona nell'editor e può essere creato e installato sul dispositivo di destinazione, ma riscontri errori di runtime, esamina e analizza i log generati sul dispositivo.

Questa sezione spiega come esaminare i log per individuare possibili errori e un errore specifico che si verifica solo in fase di runtime sul dispositivo o sul simulatore.

Android

Simulatore

  • Esamina i log visualizzati nella console dell'emulatore o visualizza la finestra Logcat.

Dispositivo

Acquisisci familiarità con adb e adb logcat e con il loro utilizzo.

  • Sebbene tu possa utilizzare i vari strumenti dell'ambiente della riga di comando per filtrare l'output, valuta la possibilità di esaminare le opzioni di logcat.
  • Un modo semplice per avviare una sessione ADB da zero è:

    adb logcat -c && adb logcat <OPTIONS>

    dove OPTIONS sono i flag che passi alla riga di comando per filtrare l'output.

Utilizzo di Logcat tramite Android Studio

Quando utilizzi Logcat tramite Android Studio, sono disponibili strumenti di ricerca aggiuntivi che semplificano la generazione di ricerche produttive.

iOS

Ispezione dei log

Se utilizzi un dispositivo fisico, collegalo al computer. Controlla lldb in Xcode.

Problemi con Swift

Se riscontri log degli errori che menzionano Swift, consulta la sezione External Dependency Manager for Unity.

Passaggi successivi

Se il tuo gioco presenta ancora problemi di compilazione, build o esecuzione relativi a Firebase, consulta la pagina dei problemi dell'SDK Firebase per Unity e valuta la possibilità di segnalare un nuovo problema. Inoltre, consulta la pagina di assistenza di Firebase per scoprire altre opzioni.