Risoluzione dei problemi con il gioco Android

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

Impossibile accedere

Se non riesci a far partecipare i giocatori al tuo gioco, assicurati innanzitutto di aver seguito le istruzioni per creare gli ID cliente e configurare i servizi per i giochi. Se continui a riscontrare l'accesso errori, controlla gli elementi che seguono per assicurarti che il gioco sia configurato correttamente.

Controllare i tag dei metadati

AndroidManifest.xml deve contenere un tag dei 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. Individua la definizione della 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>
    

Controllare il nome del pacchetto

Il nome del pacchetto del 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 gioco sia corretto. Il pacchetto name è il valore dell'attributo package nel tag manifest.
  2. Verifica il nome del pacchetto specificato durante la creazione dell'ID client. Per verificare il nome del pacchetto su Google Play Console, apri Google Play Console e fai clic sulla voce corrispondente al tuo gioco. Vai alla scheda App collegate ed esamina l'elenco degli ID client. Deve essere collegato ad Android app in questo elenco il cui nome pacchetto corrisponde al nome del pacchetto in AndroidManifest.xml.
  3. In caso di mancata corrispondenza, crea un nuovo ID client con il nome di pacchetto corretto e prova ad accedere di nuovo.

Controlla l'impronta digitale del certificato

Il certificato con cui stai firmando il gioco deve corrispondere alla fingerprint del certificato associati al tuo ID cliente. Per verificarlo, controlla innanzitutto l'impronta SHA1 del certificato:

  1. Individua il file del certificato e recupera la relativa impronta SHA1. Per ottenere 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 con SHA1: nella come output. ovvero l'impronta digitale del certificato.

A questo punto, verifica che lo strumento di creazione utilizzi questo certificato:

  1. Genera l'APK del tuo gioco dallo strumento di creazione e firmalo con il certificato. Copia l'APK generato in una directory temporanea.
  2. Nella directory temporanea, esegui questo comando 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. Nota la sequenza di cifre esadecimali nella riga con l'etichetta SHA1:.

    Questa sequenza di cifre deve corrispondere all'impronta digitale del certificato passaggio precedente. Se c'è una mancata corrispondenza, lo strumento o il sistema di creazione non configurato per firmare l'applicazione con il tuo certificato. In questo caso, consulta la documentazione del tuo ambiente di build per determinare come configurare correttamente e riprova ad accedere.

Dopodiché, controlla se l'impronta digitale del certificato corrisponde all'impronta configurata nel tuo ID cliente. Per:

  1. Apri Google Play Console e vai al tuo gioco.
  2. Nella pagina Dettagli del gioco, scorri fino in fondo e fai clic sul link progetto Google Cloud collegato.
  3. Seleziona il tuo progetto in Google Cloud.
  4. Nella barra laterale a sinistra, seleziona API e auth. Assicurati che Nell'elenco di API visualizzato, lo stato dell'API dei servizi per i giochi di Google Play è ON.
  5. Nella barra laterale a sinistra, seleziona App registrate.
  6. Espandi la sezione ID client OAuth 2.0 e prendi nota del certificato impronta digitale (SHA1).

Se l'impronta digitale non corrisponde a quella del certificato indicata nella passaggi precedenti, devi creare un nuovo ID client con il certificato corretto impronta. Devi creare il nuovo ID client in Google Play Console, non in la piattaforma Google Cloud.

Verificare che gli account di prova siano abilitati

Per pubblicare un gioco, è necessario che venga creato anche l'account che lo ha creato in Google Play Console abilitato come tester. Per verificare che sia configurata correttamente:

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

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

Problemi relativi a ProGuard

Se utilizzi ProGuard e vengono visualizzati errori nell'APK offuscato, controlla il livello API target su AndroidManifest.xml. Assicurati di impostarlo su 17 o superiore.

Altre cause dei problemi di configurazione

Verifica altre cause comuni di errori:

  • Se il gioco è stato pubblicato, controlla che anche le relative impostazioni siano pubblicate (è possibile pubblicare l'applicazione senza pubblicare le impostazioni dei giochi). Per farlo, vai alla sezione Google Play Console, apri l'app e controlla che la casella accanto al nome del gioco indichi per confermare la pubblicazione. Se indica che si trova 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 riesci a pubblicare il gioco, verifica che esattamente uno degli ID client includa la dicitura Questa app è opzione preferita per le nuove installazioni.

Listener anonimi

Non utilizzare listener anonimi. I listener anonimi sono implementazioni di un'interfaccia listener definiti 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 Play Giochi li mantiene come riferimenti deboli, il che significa che potrebbero essere recuperati dal garbage collector prima richiamato. Devi 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...
        }
    }