Questa pagina descrive come risolvere i problemi che potresti riscontrare durante lo sviluppo di giochi per Android con i servizi per i giochi di Google Play.
Logging
Per risolvere i problemi relativi al gioco, puoi attivare il logging dettagliato sul dispositivo utilizzando il comando adb shell. Puoi quindi visualizzare i messaggi di log di Google Play Games Services utilizzando logcat.
Abilita il logging
Per abilitare il logging sul dispositivo di test:
Collega il dispositivo a una macchina su cui è installato 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 il logging
Per disabilitare il logging dettagliato per i Play Games Services sul dispositivo e ripristinare il comportamento di logging originale, esegui il seguente 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.
Controlla i tag dei metadati
Il file AndroidManifest.xml deve contenere un tag dei metadati dei giochi. Per verificare che i tag dei metadati siano configurati correttamente:
Apri
AndroidManifest.xmle verifica che contenga un tagmeta-datacome 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 è definita in un file XML che si trova nella directoryres/xml, ad esempiores/xml/strings.xmlores/xml/ids.xml.Verifica che il valore della risorsa
@string/app_idcorrisponda all'ID numerico dell'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 gioco deve corrispondere al nome del pacchetto dell'ID client. Per verificare il nome del pacchetto:
Apri
AndroidManifest.xmle verifica che il nome del pacchetto del gioco sia corretto. Il nome del pacchetto è il valore dell'attributopackagenel 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 al nome del pacchetto in
AndroidManifest.xml. Se non c'è corrispondenza, crea un nuovo ID client con il nome del pacchetto corretto e riprova a eseguire l'autenticazione.
Controlla la fingerprint del certificato
Il certificato con cui stai autenticando il gioco deve corrispondere alla fingerprint del certificato associata all'ID client. Per verificarlo, controlla innanzitutto la fingerprint SHA1 del certificato come segue:
Trova il file del certificato e ottieni la relativa fingerprint SHA1. Per ottenere la fingerprint SHA1, esegui questo comando:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -vPrendi nota della sequenza di cifre esadecimali etichettata
SHA1:nell'output. Questa è la fingerprint del certificato.
Poi, verifica che lo strumento di build utilizzi questo certificato:
- Genera l'APK del gioco dallo strumento di build e firmalo con il certificato desiderato. Copia l'APK generato in una directory temporanea.
Nella directory temporanea, esegui il seguente comando per decomprimere l'APK.
unzip YourGame.apkGenera una chiave privata utilizzando un file di certificato RSA:
keytool -printcert -file META-INF/CERT.RSAIn alternativa, puoi generare la chiave privata utilizzando un file di certificato DSA:
keytool -printcert -file META-INF/CERT.DSAPrendi nota della sequenza di cifre esadecimali nella riga etichettata
SHA1:.Questa sequenza di cifre deve corrispondere alla fingerprint del certificato del passaggio precedente. Se non c'è corrispondenza, lo strumento di build 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 a eseguire l'autenticazione.
Poi, verifica se la fingerprint del certificato corrisponde alla fingerprint configurata nell'ID client. Per farlo:
- Apri Play Console e vai al tuo gioco.
- Nella pagina Dettagli del gioco, scorri verso il basso 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 dei servizi per i giochi di Google Play sia ON nell'elenco delle API visualizzato.
- Nella barra laterale a sinistra, seleziona App registrate.
- Espandi la sezione ID client OAuth 2.0 e prendi nota della fingerprint del certificato (SHA1).
Se questa fingerprint non corrisponde alla fingerprint del certificato dei passaggi precedenti, devi creare un nuovo ID client con la fingerprint del certificato corretta. Devi creare il nuovo ID client in Play Console, non nel progetto Google Cloud Platform.
Verifica che gli account di test siano abilitati
Prima della pubblicazione di un gioco, l'account che ha creato il gioco 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 in AndroidManifest.xml. Assicurati di impostarlo su 17 o 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 dei giochi). Per farlo, vai a Google Play Console, vai alla tua app e verifica che la casella accanto al nome del gioco indichi che è 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 esattamente uno degli ID client abbia l'opzione Questa app è preferita per le nuove installazioni abilitata.
Listener anonimi
Non utilizzare listener anonimi. I listener anonimi sono implementazioni di un'interfaccia di listener che vengono 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...
}
}
I listener anonimi non sono affidabili perché l'SDK Play Games li mantiene come riferimenti deboli, il che significa che potrebbero essere recuperati dal garbage collector prima di essere richiamati. Dovresti 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...
}
}