In questa pagina viene spiegato come risolvere i problemi che potresti riscontrare durante lo sviluppo di giochi Android con i servizi per i giochi di Google Play.
Logging
Per risolvere i problemi relativi al tuo gioco, puoi attivare la registrazione dettagliata sul dispositivo utilizzando il comando adb shell
. Puoi quindi visualizzare i messaggi di log dei servizi per i giochi di Google Play utilizzando logcat.
Attiva registrazione
Per attivare il logging sul dispositivo di test:
Collega il dispositivo a un computer su cui è installato l'SDK Android.
Apri un terminale ed esegui questo comando:
adb shell setprop log.tag.Games VERBOSE
Esegui il gioco sul dispositivo e riproduci il problema di cui stai tentando di eseguire il debug.
Visualizza i log:
adb logcat
Disabilita logging
Per disattivare la registrazione dettagliata per i servizi per i giochi di Play sul tuo dispositivo e ripristinare il comportamento di registrazione originale, esegui questo comando:
adb shell setprop log.tag.Games INFO
Non è stato possibile accedere
Se non riesci a far accedere i giocatori al tuo gioco, assicurati innanzitutto di aver seguito le istruzioni per creare gli ID client e configurare i servizi per i giochi. Se continui a riscontrare errori di accesso, controlla i seguenti elementi per assicurarti che il 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:
Apri
AndroidManifest.xml
e verifica che contenga un tagmeta-data
, come mostrato di seguito:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
Individua la definizione della risorsa
@string/app_id
. Di solito viene definito in un file XML situato nella directoryres/xml
, ad esempiores/xml/strings.xml
ores/xml/ids.xml
.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. Ecco alcuni esempi:<string name="app_id">123456789012</string>
Controllare il nome del pacchetto
Il nome del pacchetto del gioco deve corrispondere a quello indicato nell'ID client. Per verificare il nome del pacchetto:
Apri
AndroidManifest.xml
e verifica che il nome del pacchetto del gioco sia corretto. Il nome del pacchetto è il valore dell'attributopackage
nel tagmanifest
.Verifica il nome del pacchetto che hai fornito al momento della creazione dell'ID client. Per verificare il nome del pacchetto in Google Play Console, vai su 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 dovrebbe essere presente un'app Android collegata il cui nome di pacchetto corrisponde al nome del pacchetto nel tuo
AndroidManifest.xml
. In caso di mancata corrispondenza, crea un nuovo ID client con il nome del pacchetto corretto e riprova ad accedere.
Controlla l'impronta digitale del certificato
Il certificato con cui vuoi firmare il gioco deve corrispondere all'impronta digitale del certificato associata all'ID client. Per verificarlo, controlla innanzitutto l'impronta SHA1 del certificato come segue:
Individua il file del certificato e recupera la relativa impronta SHA1. Per ottenere l'impronta SHA1, esegui questo comando:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
Prendi nota della sequenza di cifre esadecimali etichettate
SHA1:
nell'output. Si tratta della fingerprint del tuo certificato.
Dopodiché, verifica che il tuo strumento di creazione utilizzi questo certificato:
- Genera l'APK del tuo gioco dallo strumento di creazione e firmalo con il certificato desiderato. Copia l'APK generato in una directory temporanea.
Nella directory temporanea, esegui il comando seguente per decomprimere l'APK.
unzip YourGame.apk
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
Osserva la sequenza di cifre esadecimali sulla 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 compilazione non è configurato per firmare l'applicazione con il certificato. In questo caso, consulta la documentazione dell'ambiente di build per determinare come configurarlo correttamente e riprova ad accedere.
Quindi, controlla se l'impronta del certificato corrisponde a quella configurata nell'ID client. Per farlo:
- Apri Play Console e vai al tuo gioco.
- Nella pagina Dettagli gioco, scorri fino in fondo e fai clic sul link al progetto della piattaforma Google Cloud collegato.
- Seleziona il progetto.
- Nella barra laterale a sinistra, seleziona API e autenticazione. Assicurati che lo stato dell'API dei servizi per i giochi di Google Play sia ON nell'elenco di API visualizzato.
- Nella barra laterale a sinistra, seleziona App registrate.
- Espandi la sezione ID client OAuth 2.0 e prendi nota dell'impronta digitale del certificato (SHA1).
Se l'impronta digitale del certificato non corrisponde a quella utilizzata nei passaggi precedenti, devi creare un nuovo ID client con l'impronta digitale del certificato corretta. Devi creare il nuovo ID client in Play Console, non nel progetto Google Cloud Platform.
Verificare che gli account di prova siano abilitati
Prima di pubblicare un gioco, è necessario attivare come tester anche l'account che lo ha creato in Play Console. Per verificare che la configurazione sia corretta:
- Apri Play Console e vai al tuo gioco.
- Apri la scheda Test.
- 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, 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 su un valore superiore.
Altre cause dei problemi di configurazione
Verifica la presenza di altre cause comuni degli errori:
- Se il tuo gioco è stato pubblicato, controlla che siano pubblicate anche le impostazioni del gioco (puoi pubblicare l'applicazione senza pubblicare le impostazioni del gioco). Per farlo, vai su Google Play Console, vai alla tua app e seleziona che la casella accanto al nome del gioco indichi che è stato pubblicato. Se indica che è 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 in uno degli ID client sia attiva 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 considera come riferimenti deboli, il che significa che potrebbero essere recuperati dal garbage collector prima di essere 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...
}
}