Risoluzione dei problemi relativi al gioco Android

In questa pagina viene spiegato come risolvere i problemi che potresti riscontrare durante lo sviluppo di giochi Android con l'SDK Play Giochi.

Non è stato possibile accedere

Se non riesci ad accedere ai giocatori nel tuo gioco, assicurati innanzitutto di aver seguito le istruzioni per creare i tuoi ID client e configurare i servizi per i giochi. Se continui a riscontrare errori di accesso, controlla i seguenti elementi per assicurarti che il tuo gioco sia configurato correttamente.

Controllare i tag dei metadati

AndroidManifest.xml deve contenere un tag di metadati dei giochi. Per verificare che i tag dei metadati siano impostati correttamente:

  1. Apri AndroidManifest.xml e verifica che contenga un tag meta-data come mostrato di seguito:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. Trova la definizione della tua risorsa @string/app_id. Di solito è definito in un file XML che si trova nella directory res/xml, ad esempio res/xml/strings.xml o res/xml/ids.xml.

  3. Verifica che il valore della risorsa @string/app_id corrisponda all'ID numerico della tua applicazione. Il valore di questa risorsa deve contenere solo cifre. Ad esempio:

    <string name="app_id">123456789012</string>
    

Controlla il nome del pacchetto

Il nome del pacchetto del tuo gioco deve corrispondere a quello indicato nel tuo ID client. Per verificare il nome del pacchetto:

  1. Apri AndroidManifest.xml e verifica che il nome del pacchetto del tuo gioco sia corretto. Il nome del pacchetto è il valore dell'attributo package nel tag manifest.
  2. Verifica il nome del pacchetto che hai fornito durante la creazione del tuo ID client. Per verificare il nome del pacchetto in Google Play Console, vai a Google Play Console e fai clic sulla voce corrispondente al tuo gioco. Vai alla scheda App collegate ed esamina l'elenco degli ID client. In questo elenco deve essere presente un'app Android collegata il cui nome pacchetto corrisponde a quello indicato in AndroidManifest.xml.
  3. In caso di mancata corrispondenza, crea un nuovo ID client con il nome del pacchetto corretto e prova ad accedere di nuovo.

Controlla l'impronta del certificato

Il certificato con il quale stai firmando il gioco deve corrispondere all'impronta del certificato associata al tuo ID client. Per verificare, controlla innanzitutto l'impronta SHA1 del certificato:

  1. Individua il file del certificato e ottieni l'impronta SHA1. Per ottenere l'impronta SHA1, esegui questo comando:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. Prendi nota della sequenza di cifre esadecimali etichettate SHA1: nell'output. Questa è l'impronta del tuo certificato.

Dopodiché, controlla che lo strumento di compilazione utilizzi questo certificato:

  1. Genera l'APK del tuo gioco dallo strumento per la creazione e firmalo con il certificato desiderato. Copia l'APK generato in una directory temporanea.
  2. Nella directory temporanea, esegui il comando seguente per decomprimere l'APK.

    unzip YourGame.apk
    
  3. Genera una chiave privata utilizzando un file di certificato RSA:

    keytool -printcert -file META-INF/CERT.RSA
    

    In alternativa, puoi generare la chiave privata utilizzando un file di certificato DSA:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. Osserva la sequenza di cifre esadecimali alla riga SHA1:.

    Questa sequenza di cifre deve corrispondere all'impronta del certificato del passaggio precedente. In caso di mancata corrispondenza, lo strumento o il sistema di build non è configurato per firmare l'applicazione con il certificato. In questo caso, consulta la documentazione dell'ambiente di compilazione per determinare come configurarlo correttamente e provare ad accedere di nuovo.

Poi, controlla se l'impronta del certificato corrisponde all'impronta configurata nel tuo ID client. Per farlo:

  1. Apri Google Play Console e vai al tuo gioco.
  2. Nella pagina Dettagli del gioco, scorri verso il basso e fai clic sul link al progetto Google Cloud Platform collegato.
  3. In Google Cloud Platform, seleziona il tuo progetto.
  4. Nella barra laterale a sinistra, seleziona API e autenticazione. Assicurati che lo stato dell'API Google Play Games Services sia ON nell'elenco di API visualizzato.
  5. Nella barra laterale a sinistra, seleziona App registrate.
  6. Espandi la sezione Client-ID OAuth 2.0 e prendi nota dell'impronta del certificato (SHA1).

Se questa impronta non corrisponde all'impronta del certificato dei passaggi precedenti, devi creare un nuovo ID client con l'impronta digitale del certificato corretta. Devi creare il nuovo ID client in Google Play Console, non in Google Cloud Platform.

Verifica che gli account di prova siano abilitati

Prima della pubblicazione di un gioco, è necessario abilitare anche l'account che lo ha creato in Google Play Console come tester. Per verificare che sia configurata correttamente:

  1. Apri Google Play Console e vai al tuo gioco.
  2. Apri la scheda Test.
  3. Controlla che l'account con cui stai tentando di eseguire l'accesso sia presente nell'elenco dei tester.

Se l'account con cui stai tentando di accedere non è presente nell'elenco, aggiungilo all'elenco, attendi qualche minuto e riprova ad accedere.

Problemi di Guardia

Se utilizzi Proguard e noti errori nell'APK offuscato, controlla il livello API target su AndroidManifest.xml. Assicurati di impostarla su 17 o su un valore superiore.

Altre cause di problemi di configurazione

Controlla le altre cause comuni di errore:

  • Se il gioco è pubblicato, controlla anche la pubblicazione delle impostazioni del gioco (è possibile pubblicare l'applicazione senza pubblicare le impostazioni dei giochi). Per farlo, vai su Google Play Console, vai alla tua app e seleziona la casella accanto al nome del gioco per indicare che è stata pubblicata. Se è in un altro stato, ad esempio "Pronto per la pubblicazione" o "Pronto per il test", fai clic sulla casella e seleziona Pubblica gioco.
  • Se non puoi pubblicare il tuo gioco, verifica che in uno degli ID client sia abilitata l'opzione Questa app è preferita per le nuove installazioni.

listener anonimi

Non utilizzare listener anonimi. I listener anonimi sono implementazioni di un'interfaccia listener definite in linea, come illustrato di seguito.

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

Gli ascoltatori anonimi non sono affidabili perché l'SDK di Play Giochi li mantiene come riferimenti deboli, il che significa che potrebbero essere recuperati dal raccoglitore di rifiuti prima che vengano richiamati. Devi invece implementare il listener utilizzando un oggetto permanente come Activity.

    public class MyActivity extends Activity
            implements ImageManager.OnImageLoadedListener {

        private void loadOurImages() {
            ImageManager im = ...;
            im.loadImage(this);
        }

        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }