Esta página descreve como solucionar problemas que você pode encontrar durante o desenvolvimento do Android jogos com o SDK do Play Games.
Não foi possível fazer login
Se você não conseguir fazer o login dos usuários no jogo, primeiro verifique se seguiu as instruções para criar seus IDs de cliente e configurar os serviços relacionados a jogos. Se você ainda não conseguir fazer login de erros, verifique os itens a seguir para garantir que seu jogo esteja configurado corretamente.
Conferir as tags de metadados
O AndroidManifest.xml
precisa ter uma tag de metadados de jogos. Para verificar se
as tags de metadados estão configuradas corretamente, siga estas etapas:
Abra seu
AndroidManifest.xml
e verifique se ele contém uma tagmeta-data
, conforme mostrado abaixo:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
Localize a definição do recurso
@string/app_id
. Geralmente, ele é definido em um arquivo XML localizado no diretóriores/xml
, por exemplo,res/xml/strings.xml
oures/xml/ids.xml
.Verifique se o valor do recurso
@string/app_id
corresponde ao ID numérico do aplicativo. O valor desse recurso contém apenas dígitos. Exemplo:<string name="app_id">123456789012</string>
Conferir o nome do pacote
O nome do pacote do jogo precisa ser igual ao nome do pacote do seu ID do cliente. Para verificar o nome do pacote, siga estas etapas:
- Abra seu arquivo
AndroidManifest.xml
e verifique se o nome do pacote do jogo está correto. O nome do pacote é o valor do atributopackage
na tagmanifest
. - Verifique o nome do pacote fornecido ao criar seu ID do cliente. Para verificar o nome do pacote em
Google Play Console, acesse o Google Play Console e clique na entrada correspondente ao seu jogo.
Acesse a guia Apps vinculados e examine a lista de IDs do cliente. Deve haver um perfil para Android vinculado
na lista com um nome de pacote que corresponda ao nome no
AndroidManifest.xml
. - Se houver incompatibilidade, crie um novo ID do cliente com o nome de pacote correto e tente fazer login. de novo.
Conferir a impressão digital do certificado
O certificado com o qual você está assinando o jogo deve corresponder à impressão digital do certificado associadas ao seu ID do cliente. Para confirmar isso, primeiro confira a impressão digital SHA1 do seu certificado:
Encontre o arquivo do certificado e extraia a impressão digital SHA1 dele. Para conferir a impressão digital SHA1, execute este comando:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
Anote a sequência de dígitos hexadecimais rotulados como
SHA1:
na saída. Essa é a impressão digital do seu certificado.
Em seguida, confira se a ferramenta de build está usando o certificado:
- Gere o APK do jogo na ferramenta de build e assine com o certificado desejado. Copie o APK gerado para um diretório temporário.
No diretório temporário, execute o comando abaixo para descompactar o APK.
unzip YourGame.apk
Gere uma chave privada usando um arquivo de certificado RSA:
keytool -printcert -file META-INF/CERT.RSA
Também é possível gerar a chave privada usando um arquivo de certificado DSA:
keytool -printcert -file META-INF/CERT.DSA
Anote a sequência de dígitos hexadecimais na linha marcada como
SHA1:
.Essa sequência precisa corresponder à impressão digital do certificado da etapa anterior. Se elas forem diferentes, a ferramenta de build ou o sistema não estão configurados para assinar o aplicativo com o certificado. Nesse caso, consulte a documentação do seu ambiente de build para determinar como fazer a configuração corretamente e tente se conectar de novo.
Em seguida, confira se a impressão digital do certificado corresponde à configurada no seu ID do cliente. Para fazer isso:
- Abra o Google Play Console e navegue até seu jogo.
- Na página Detalhes do jogo, role até o final e clique no link para o projeto do Google Cloud Platform vinculado.
- No Google Cloud Platform, selecione seu projeto.
- Na barra lateral à esquerda, selecione APIs e autorização. Confira se o status da API dos serviços relacionados a jogos do Google Play está ATIVADO na lista de APIs mostrada.
- Na barra lateral à esquerda, selecione Apps registrados.
- Expanda a seção "ID do cliente do OAuth 2.0" e anote a impressão digital do certificado (SHA1).
Se essa impressão digital não corresponder à do certificado das etapas anteriores, crie um novo ID do cliente com a impressão digital do certificado correta. Você precisa criar o novo ID do cliente no Google Play Console, não no Google Cloud Platform.
Conferir se as contas de teste estão ativadas
Antes de um jogo ser publicado, a conta que criou o jogo no Google Play Console também precisa estar ativado como testador. Para verificar se isso está configurado corretamente:
- Abra o Google Play Console e navegue até seu jogo.
- Abra a guia Testes.
- Confira se a conta que você está usando para fazer login está na lista de testadores.
Se não estiver, adicione a conta à lista, aguarde alguns minutos e tente fazer login novamente.
Problemas com o Proguard
Se você estiver usando o Proguard e encontrar erros no APK ofuscado, confira o nível da API de destino
no AndroidManifest.xml
. Defina o nível como 17 ou mais recente.
Outras causas de problemas de configuração
Confira outras causas comuns de erros:
- Se o jogo estiver publicado, confira se as configurações também estão. É possível publicar o app sem publicar as configurações do jogo. Para fazer isso, acesse Google Play Console, acesse seu app e verifique se a caixa ao lado do nome do jogo indica após a publicação. Se ela indicar que ele está em outro estado, como "Pronto para publicar" ou "Pronto para testar", clique na caixa e selecione Publicar jogo.
- Se não for possível publicar o jogo, confira se a opção Este app dá preferência a novas instalações está ativada para exatamente um dos IDs do cliente.
Listeners anônimos
Não use listeners anônimos. Eles são implementações de uma interface de listener definidas in-line, conforme ilustrado abaixo.
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
Listeners anônimos não são confiáveis porque o SDK do Play Games os mantém como referências fracas,
ou seja, eles podem ser excluídos pelo coletor de lixo antes de serem
invocados. Em vez disso, implemente o listener usando um objeto persistente
como o 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...
}
}