Questa pagina descrive come risolvere i problemi che potresti riscontrare durante lo sviluppo di giochi per Android con i servizi di gioco Google Play.
Logging
Per risolvere i problemi relativi al gioco, puoi attivare la registrazione dettagliata
sul tuo dispositivo utilizzando il comando adb shell
. Puoi quindi visualizzare i
messaggi di log di Google Play Games Services utilizzando logcat.
Attiva registrazione
Per attivare la registrazione sul dispositivo di test:
Collega il dispositivo a una macchina 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 che stai cercando di debuggare.
Visualizza i log:
adb logcat
Disattivare la registrazione
Per disattivare il logging dettagliato per Play Games Services sul tuo dispositivo e ripristinare il comportamento di logging originale, esegui questo comando:
adb shell setprop log.tag.Games INFO
Impossibile eseguire l'autenticazione
Se non riesci ad autenticare i giocatori nel 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 autenticazione, controlla i seguenti elementi per assicurarti che il gioco sia configurato correttamente.
Controllare i tag dei metadati
Il tuo AndroidManifest.xml
deve contenere un tag di metadati dei giochi. Per verificare che
i tag dei metadati siano configurati correttamente:
Apri il file
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 è definito in un file XML che si trova 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. Ad esempio:<string name="app_id">123456789012</string>
Controllare il nome del pacchetto
Il nome del pacchetto del tuo gioco deve corrispondere a quello dell'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 durante la creazione dell'ID client. Per verificare il nome del pacchetto in Google Play Console, vai a 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 del pacchetto corrisponde a quello del tuo
AndroidManifest.xml
. Se non c'è corrispondenza, crea un nuovo ID client con il nome del pacchetto corretto e riprova ad autenticarti.
Controllare l'impronta del certificato
Il certificato con cui autentichi il gioco deve corrispondere all'impronta del certificato associata al tuo ID client. Per verificarlo, controlla innanzitutto l'impronta SHA1 del certificato nel seguente modo:
Trova il file del certificato e ottieni 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 come
SHA1:
nell'output. Questa è l'impronta del certificato.
A questo punto, verifica che lo strumento di compilazione utilizzi questo certificato:
- Genera l'APK del gioco dallo strumento di compilazione e firmalo con il certificato che preferisci. Copia l'APK generato in una directory temporanea.
Nella directory temporanea, esegui questo comando 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
Prendi nota della sequenza di cifre esadecimali sulla riga etichettata
SHA1:
.Questa sequenza di cifre deve corrispondere all'impronta del certificato del passaggio precedente. Se non corrispondono, lo strumento di compilazione o il sistema 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 autenticarti.
Successivamente, 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 Google Cloud Platform collegato.
- Seleziona il progetto.
- Nella barra laterale a sinistra, seleziona API e autenticazione. Assicurati che lo stato dell'API Google Play Games Services sia ON nell'elenco delle API visualizzato.
- Nella barra laterale a sinistra, seleziona App registrate.
- Espandi la sezione ID client OAuth 2.0 e annota l'impronta digitale del certificato (SHA1).
Se questa impronta non corrisponde a quella del certificato dei passaggi precedenti, devi creare un nuovo ID client con l'impronta del certificato corretta. Devi creare il nuovo ID client nella Play Console, non nel progetto Google Cloud.
Verifica che gli account di test siano abilitati
Prima della pubblicazione di un gioco, l'account che lo ha creato in Play Console deve essere abilitato anche come tester. Per verificare che sia configurato correttamente:
- Apri Play Console e vai al tuo gioco.
- Apri la scheda Test.
- Verifica che l'account con cui stai tentando di eseguire l'autenticazione sia presente nell'elenco dei tester.
Se l'account con cui stai tentando di eseguire l'autenticazione non è presente nell'elenco, aggiungilo, attendi qualche minuto e riprova a eseguire l'autenticazione.
Problemi di Proguard
Se utilizzi Proguard e visualizzi errori nell'APK offuscato, controlla il livello API target
nel file AndroidManifest.xml
. Assicurati di impostarlo su 17 o un valore superiore.
Altre cause di problemi di configurazione
Controlla altre cause comuni di errori:
- Se il gioco è pubblicato, verifica che anche le impostazioni del gioco siano pubblicate (è possibile pubblicare l'applicazione senza pubblicare le impostazioni del gioco). Per farlo, vai a Google Play Console, seleziona la tua app e verifica che la casella accanto al nome del gioco indichi che è stato pubblicato. Se indica 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 abbia l'opzione Questa app è preferita per le nuove installazioni attivata.
Ascoltatori anonimi
Non utilizzare ascoltatori anonimi. I listener anonimi sono implementazioni di un'interfaccia di listener che vengono definiti inline, come illustrato di seguito.
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
I listener anonimi non sono affidabili perché l'SDK Play Giochi li gestisce 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 persistente
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...
}
}