Debug del processo di creazione, installazione ed esecuzione del gioco

introduzione

Quella che segue è una guida per eseguire il debug del processo di compilazione e creazione per i giochi Unity utilizzando Firebase SDK per Unity. Descrive come indagare e risolvere molti dei problemi più comuni che puoi incontrare durante la configurazione e la creazione del tuo gioco per una nuova piattaforma o dopo un aggiornamento. È organizzato in ordine di quando questi errori possono verificarsi nel processo. Consultateli in ordine e procedete man mano che ciascuno viene risolto.

Oltre a questo documento, consulta le domande frequenti su Firebase per Unity per ulteriori informazioni.

Problemi di compilazione della modalità di riproduzione

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

Quando Unity si avvia o rileva modifiche alle dipendenze, al codice o ad altre risorse, tenterà di ricostruire il progetto. Se in quel momento il progetto non può essere compilato, l'editor registrerà gli errori di compilazione sulla console e se tenti di accedere alla modalità di riproduzione, riceverai un popup di errore nella scheda Scena di Unity che dice 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 di questo 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 di risoluzione:
  1. Laddove utilizzi classi o metodi Firebase nel codice, assicurati di renderli disponibili disponendo delle direttive using corrette per i particolari prodotti Firebase necessari.

    1. Esempi tratti da MechaHamster: Sali di livello con 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 Firebase Unity SDK come .unitypackage s o
      2. Esaminare ed eseguire una delle alternative in Opzioni di installazione aggiuntive di Unity .
    2. Assicurati che ogni prodotto Firebase nel tuo progetto e EDM4U :
      • Sono alla stessa versione
      • Sono stati installati esclusivamente come .unitypackage OPPURE esclusivamente tramite Unity Package Manager.
  3. Se hai importato Firebase Unity SDK prima della versione "10.0.0" come .unitypackage s, l'archivio zip Firebase Unity SDK contiene pacchetti per il supporto di .NET 3.x e .NET 4.x. Assicurati di aver incluso solo il livello .NET Framework compatibile nel tuo progetto:

    1. La compatibilità tra le versioni di Unity Editor e i livelli di .NET Framework viene discussa in Aggiungere Firebase al progetto Unity .
    2. Se hai importato accidentalmente i tuoi pacchetti Firebase al livello .NET Framework sbagliato o hai bisogno di passare dall'utilizzo di .unitypackage a una delle opzioni di installazione aggiuntive di Unity , il modo più pulito è rimuovere ogni pacchetto Firebase attraverso i metodi menzionati in questa sezione di migrazione e quindi reimportare nuovamente tutti i pacchetti Firebase.
  4. Verifica che il tuo editor stia ricostruendo il tuo progetto e che i tuoi tentativi di riproduzione riflettano lo stato più attuale del tuo progetto:

    1. Per impostazione predefinita, l'editor Unity è impostato per essere ricostruito ogni volta che vengono rilevate modifiche alle risorse o alla configurazione.
    2. È possibile che questa funzionalità sia stata disabilitata e che Unity Editor sia impostato su aggiornamento/ricompilazione manuale . Investiga su questo e prova un aggiornamento manuale se questo è il caso.

Errori di runtime della modalità di riproduzione

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

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

Se, all'avvio del gioco nell'editor su Mac OS, ti viene presentata una finestra di dialogo che dice "FirebaseCppApp-<versione>.bundle Impossibile aprire perché non è possibile verificare lo sviluppatore.", devi approvare quel file bundle specifico in Menu Sicurezza e Privacy del Mac.

Per fare ciò, fai clic sull'icona Apple > Preferenze di Sistema > Sicurezza e Privacy

Nel menu Sicurezza, circa a metà pagina, c'è una sezione che dice ""FirebaseCppApp-<versione>.bundle" è stato bloccato perché non proviene da uno sviluppatore identificato."

Fare clic sul pulsante denominato Consenti comunque .

c35166e224cce720.png

Torna a Unity e premi di nuovo Riproduci .

Verrà quindi visualizzato un avviso simile al primo:

5ad9ddb0d3a52892.png

Premi Apri e il tuo programma potrà procedere; non ti verrà più chiesto informazioni su questo particolare file.

Assicurati che il tuo progetto contenga e utilizzi file di configurazione validi

  1. Assicurati che le impostazioni di creazione siano impostate per la destinazione desiderata (iOS o Android) in File > Impostazioni di creazione . Per una discussione più completa, leggere la documentazione sulle 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 crea il target dalla console Firebase in Impostazioni progetto > Le tue app : se disponi già di questi file, eliminali nel tuo progetto e sostituiscili con la versione più recente, assicurandoti che siano scritti esattamente come mostrato sopra senza "(1)" o altri numeri allegati ai nomi dei file.
  3. Se la console contiene un messaggio relativo ai file in Assets/StreamingAssets/ , assicurati che non ci siano messaggi sulla console che indichino che Unity non è stato in grado di modificare i file lì
  4. Assicurati che Assets/StreamingAssets/google-services-desktop.json venga generato e corrisponda al file di configurazione scaricato.
    • Se non viene generato automaticamente e StreamingAssets/ non esiste, creare manualmente la directory nella directory Assets .
    • Controlla se Unity ha ora 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/ che Unity Package Manager per assicurarti che gli SDK Firebase e EDM4U siano stati installati esclusivamente tramite l'uno o l'altro metodo.
  2. Alcuni plugin sviluppati da Google , come Google Play, e plugin di terze parti potrebbero dipendere da EDM4U. Tali plugin possono includere EDM4U nei pacchetti .unitypackage o Unity Package Manager (UPM). Assicurati che ci sia solo una copia di EDM4U nel tuo progetto. Se qualche pacchetto UPM dipende da EDM4U, è meglio conservare solo le versioni UPM di EDM4U, che possono essere trovate nella pagina Archivio API di Google per Unity .

Assicurati che tutti i prodotti Firebase nel tuo progetto abbiano la stessa versione.

  1. Se gli SDK Firebase sono stati installati tramite .unitypackage , controlla se tutte le librerie FirebaseCppApp in Assets/Firebase/Plugins/x86_64/ sono alla 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 installare nuovamente tutti gli SDK Firebase, questa volta con le stesse versioni. Il modo più pulito è rimuovere ogni pacchetto Firebase attraverso i metodi menzionati in questa sezione sulla migrazione .

Errori di creazione del risolutore e del dispositivo di destinazione

Se il tuo gioco funziona nell'editor (configurato per la destinazione di build appropriata di tua scelta), verifica quindi che il gestore delle dipendenze esterne per Unity (EDM4U) sia configurato e funzionante correttamente.

Il repository GitHub EDM4U contiene una guida passo passo per questa parte del processo che dovresti rivedere e seguire prima di procedere.

Problemi e minimizzazione di "Single Dex" ( obbligatorio se si utilizza Cloud Firestore)

Durante la creazione di un'app Android, potresti riscontrare un errore di compilazione 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 .dex vengono utilizzati per contenere una serie di definizioni di classi e i relativi dati aggiuntivi associati per le applicazioni Android. Un singolo file dex è limitato a fare riferimento a 65.536 metodi; le build falliranno se il numero totale di metodi di tutte le librerie Android nel tuo progetto supera questo limite.

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

Abilita minimizzazione

Unity ha introdotto la Minificazione nel 2017.2 per eliminare 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 lettore > Android > Impostazioni di pubblicazione > Minimizza . * Le opzioni potrebbero differire nelle diverse versioni di Unity, quindi fare riferimento alla documentazione ufficiale di Unity.

Abilita Multidex

Se, dopo aver abilitato la minimizzazione, il numero di metodi referenziati supera ancora il limite, un'altra opzione è abilitare multidex . Esistono diversi modi per raggiungere questo obiettivo in Unity:

  • Se il modello Gradle personalizzato in Impostazioni lettore è 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 utente multidex .

Comprendere e correggere gli errori di runtime del dispositivo di destinazione

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

Questa sezione spiega come esaminare i log per possibili errori e uno di questi errori che si verifica solo in fase di esecuzione sul dispositivo o sul simulatore.

Androide

Simulatore

  • Esamina i log visualizzati nella console del tuo emulatore o visualizza la finestra Logcat .

Dispositivo

Acquisisci familiarità con adb e adb logcat e come usarli.

  • Anche se puoi utilizzare i vari strumenti dell'ambiente della riga di comando per filtrare l'output, considera in alternativa 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 si utilizza Logcat tramite Android Studio sono disponibili strumenti di ricerca aggiuntivi che semplificano la generazione di ricerche produttive.

iOS

Ispezione dei registri

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

Problemi rapidi

Se ti imbatti in log di errori che menzionano swift, consulta la sezione relativa al Gestore delle dipendenze esterne per Unity .

Ulteriori passi

Se il tuo gioco presenta ancora problemi di compilazione, creazione o esecuzione relativi a Firebase, esamina la pagina dei problemi di Firebase SDK per Unity e valuta la possibilità di presentare un nuovo problema. Inoltre, fai riferimento alla pagina di supporto di Firebase per informazioni su opzioni aggiuntive.