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 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 dei metadati dei giochi. Per verificare che i tag dei metadati siano configurati 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 è 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 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 a quello indicato nell'ID cliente. 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 cliente. 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 dovrebbe essere presente un'app Android collegata il cui nome del pacchetto corrisponde a quello del pacchetto in
AndroidManifest.xml
. - In caso di mancata corrispondenza, crea un nuovo ID client con il nome di pacchetto corretto e prova ad accedere di nuovo.
Controllare l'impronta del certificato
Il certificato con cui firmi il gioco deve corrispondere all'impronta del certificato associata al tuo ID cliente. Per verificare, controlla innanzitutto l'impronta SHA1 del certificato:
Individua il file del certificato e ottieni 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
Prendi nota della sequenza di cifre esadecimali etichettate con
SHA1:
nella come output. Si tratta dell'impronta del certificato.
A questo punto, verifica che lo strumento di creazione utilizzi questo certificato:
- Genera l'APK del tuo gioco dallo strumento di compilazione e firmalo con il certificato preferito. Copia l'APK generato in una directory temporanea.
Nella directory temporanea, esegui il seguente comando per decomprimere l'APK.
unzip YourGame.apk
Genera una chiave privata utilizzando un file del 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
Nota la sequenza di cifre esadecimali nella riga con l'etichetta
SHA1:
.Questa sequenza di cifre deve corrispondere all'impronta del certificato del passaggio precedente. Se non c'è corrispondenza, lo strumento o il sistema di compilazione non è configurato per firmare l'applicazione con il tuo certificato. In questo caso, consulta la documentazione dell'ambiente di compilazione per scoprire come configurarlo correttamente e prova di nuovo ad accedere.
Successivamente, controlla se l'impronta del certificato corrisponde a quella configurata nel tuo ID cliente. Per:
- Apri Google Play Console e vai al tuo gioco.
- Nella pagina Dettagli del gioco, scorri fino in fondo e fai clic sul link progetto Google Cloud collegato.
- Nella piattaforma Google Cloud, seleziona il progetto.
- Nella barra laterale a sinistra, seleziona API e autenticazione. Assicurati che Nell'elenco di API visualizzato, lo stato dell'API dei servizi per i giochi di Google Play è ON.
- Nella barra laterale a sinistra, seleziona App registrate.
- Espandi la sezione ID client OAuth 2.0 e prendi nota del certificato impronta digitale (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 in Google Play Console, non in la piattaforma Google Cloud.
Verificare che gli account di test 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 configurato correttamente:
- Apri Google 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 e attendi qualche minuto e riprova ad accedere.
Problemi di 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 di problemi di configurazione
Verifica se sono presenti altre cause comuni di errori:
- Se il gioco è pubblicato, controlla che siano pubblicate anche le impostazioni del gioco (è possibile pubblicare l'applicazione senza pubblicare le impostazioni del gioco). 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...
}
}