Solución de problemas en tu juego de Android

En esta página, se describe cómo solucionar los problemas que puedes encontrar durante el desarrollo de juegos para Android con el SDK de Play Juegos.

No se puede acceder

Si no puedes permitir que los jugadores accedan a tu juego, primero asegúrate de haber seguido las instrucciones para crear tus ID de cliente y configurar los servicios de juego. Si aún encuentras errores de acceso, verifica los siguientes elementos para asegurarte de que tu juego esté configurado correctamente.

Verifica tus etiquetas de metadatos

Tu archivo AndroidManifest.xml debe contener una etiqueta de metadatos de juegos. Sigue estos pasos a fin de verificar que las etiquetas de metadatos estén configuradas de forma correcta:

  1. Abre el archivo AndroidManifest.xml y verifica que contenga una etiqueta meta-data como se muestra a continuación:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. Busca la definición de tu recurso @string/app_id. Por lo general, se define en un archivo en formato XML ubicado en el directorio res/xml, por ejemplo, res/xml/strings.xml o res/xml/ids.xml.

  3. Verifica que el valor del recurso @string/app_id coincida con el ID numérico de tu aplicación. El valor de este recurso solo debe contener dígitos. Por ejemplo:

    <string name="app_id">123456789012</string>
    

Verifica el nombre de tu paquete

El nombre del paquete del juego debe coincidir con el nombre de paquete de tu ID de cliente. Sigue estos pasos a fin de verificar el nombre del paquete:

  1. Abre tu AndroidManifest.xml y comprueba que el nombre del paquete de tu juego sea el correcto. El nombre del paquete es el valor del atributo package de la etiqueta manifest.
  2. Verifica el nombre del paquete que proporcionaste cuando creaste el ID de cliente. Para verificar el nombre del paquete en Google Play Console, ve a Google Play Console y haz clic en la entrada correspondiente a tu juego. Ve a la pestaña Aplicaciones vinculadas y examina la lista de IDs de clientes. Debería haber una app vinculada a Android en esta lista cuyo nombre de paquete coincida con el nombre de paquete de tu AndroidManifest.xml.
  3. Si no coinciden, crea un ID de cliente nuevo con el nombre del paquete correcto y, luego, intenta acceder de nuevo.

Verifica la huella digital del certificado

El certificado con el que firmes el juego debe coincidir con la huella digital del certificado asociada con tu ID de cliente. Para verificar esto, primero verifica la huella digital SHA1 de tu certificado:

  1. Busca el archivo del certificado y obtén su huella digital SHA1. Para obtenerla, ejecuta este comando:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. Toma nota de la secuencia de dígitos hexadecimales con la etiqueta SHA1: en el resultado. Esa es la huella digital de tu certificado.

A continuación, comprueba que tu herramienta de compilación use este certificado:

  1. Genera el APK de tu juego desde la herramienta de compilación y fírmalo con el certificado que desees. Copia el APK generado en un directorio temporal.
  2. En el directorio temporal, ejecuta el siguiente comando para descomprimir el APK.

    unzip YourGame.apk
    
  3. Genera una clave privada con un archivo de certificado RSA:

    keytool -printcert -file META-INF/CERT.RSA
    

    Como alternativa, puedes generar la clave privada mediante un archivo de certificado DSA:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. Observa la secuencia de dígitos hexadecimales de la línea con la etiqueta SHA1:.

    Esta secuencia de dígitos debe coincidir con la huella digital del certificado del paso anterior. De lo contrario, tu herramienta de compilación o sistema no están configurados para firmar la aplicación con tu certificado. En este caso, consulta la documentación de tu entorno de compilación a fin de determinar cómo configurarlo de forma correcta y vuelve a acceder.

A continuación, comprueba si la huella digital del certificado coincide con la configurada en tu ID de cliente. Para ello, sigue estos pasos:

  1. Abre Google Play Console y navega a tu juego.
  2. En la página Detalles del juego, desplázate hasta la parte inferior y haz clic en el vínculo al proyecto vinculado de Google Cloud Platform.
  3. En Google Cloud Platform, selecciona tu proyecto.
  4. En la barra lateral izquierda, selecciona API y autenticación. Asegúrate de que el estado de la API de los Servicios de juego de Google Play esté ACTIVADO en la lista de API que se muestra.
  5. En la barra lateral izquierda, selecciona Apps registradas.
  6. Expande la sección del ID de cliente de OAuth 2.0 y observa la huella digital del certificado (SHA1).

Si esta huella digital no coincide con la huella digital de tu certificado de los pasos anteriores, debes crear un nuevo ID de cliente con la huella digital correcta del certificado. Debes crear el ID de cliente nuevo en Google Play Console, no en Google Cloud Platform.

Verifica que las cuentas de prueba estén habilitadas

Antes de publicar un juego, la cuenta que lo creó en Google Play Console también debe estar habilitada como verificador. Para verificar que esté configurado de manera correcta, sigue estos pasos:

  1. Abre Google Play Console y navega a tu juego.
  2. Abre la pestaña Pruebas.
  3. Verifica que la cuenta con la que intentas acceder esté en la lista de verificadores.

Si no aparece en la lista, agrégala, espera unos minutos y vuelve a intentar acceder.

Problemas de Proguard

Si usas Proguard y ves errores en el APK ofuscado, verifica el nivel de API de destino en tu archivo AndroidManifest.xml. Asegúrate de establecerlo en 17 o más.

Otras causas de problemas de configuración

Revisa otras causas habituales de errores:

  • Si tu juego está publicado, verifica que también se publique su configuración (es posible publicar la aplicación sin publicar la configuración del juego). Para ello, ve a Google Play Console, navega a tu app y comprueba que la casilla junto al nombre del juego indique que está publicado. Si indica que se encuentra en otro estado, como "Listo para publicar" o "Ready to Test", haz clic en la casilla y selecciona Publicar el proyecto de juego.
  • Si no puedes publicar tu juego, verifica que uno de los IDs de cliente tenga habilitada la opción que indica que la app es preferible para nuevas instalaciones.

Objetos de escucha anónimos

No uses objetos de escucha anónimos. Estos son implementaciones de una interfaz de objeto de escucha que se definen intercaladas, como se ilustra a continuación.

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

Los objetos de escucha anónimos no son confiables porque el SDK de Play Juegos los mantiene como referencias débiles, lo que significa que el recolector de elementos no utilizados puede reclamarlos antes de que se los invoque. En cambio, debes implementar el objeto de escucha usando un objeto persistente, como 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...
        }
    }