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:
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 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:
- Apri
AndroidManifest.xml
e verifica che il nome del pacchetto del gioco sia corretto. Il pacchetto name è il valore dell'attributopackage
nel tagmanifest
. - 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
. - 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:
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
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:
- Genera l'APK del tuo gioco dallo strumento di creazione e firmalo con il certificato. 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
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:
- 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.
- Seleziona il tuo progetto in Google Cloud.
- 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.
- 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 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 sia presente anche l'account che ha creato il gioco in Google Play Console abilitato come tester. Per verificare che sia configurata 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 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...
}
}