Android bloquea la aplicación con BaseGameActivity

Así que, algo difícil de preguntar. Quiero usar el servicio de juegos de Google para acceder a una tabla de clasificación para mi juego. He intentado usar BaseGameActivity como se muestra aquí Acceso a las APIs de juegos

Intenté algunas cosas, hizo alguna búsqueda, pero no puedo entender el problema. Mi aplicación se bloquea cuando se inicia la BaseGameActivity. El error del registro muestra:

03-10 17:44:54.071: E/AndroidRuntime(31435): FATAL EXCEPTION: main 03-10 17:44:54.071: E/AndroidRuntime(31435): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information. 03-10 17:44:54.071: E/AndroidRuntime(31435): at com.google.android.gms.internal.dw$hb(Unknown Source) 03-10 17:44:54.071: E/AndroidRuntime(31435): at com.google.android.gms.internal.dw$hb(Unknown Source) 03-10 17:44:54.071: E/AndroidRuntime(31435): at com.google.android.gms.internal.dw$b.bR(Unknown Source) 03-10 17:44:54.071: E/AndroidRuntime(31435): at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source) 

Consola muestra:

[2014-03-10 17:47:18 – BaseGameUtils] No se pudo encontrar BaseGameUtils.apk!

Respuesta: Tuve que hacer dos entradas de metadatos sobre el appid en el manifiesto. El registro sin filtros enumeró los errores correspondientes

Las dos entradas fueron

 <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" /> <meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="@string/app_id" /> 

Sólo una de estas entradas fue mencionada en el tutorial.

Acabo de terminar de colocar tablas de clasificación y fue un dolor, pero lo hice y funciona. Aquí hay una larga lista de sugerencias que pueden ayudarle directa o indirectamente. Yo uso Eclipse.

  • Para la API de Google Play, el SDK mínimo es 9, así que ponlo en tu manifiesto en su propia línea:

    <Uses-sdk android: minSdkVersion = "9" android: targetSdkVersion = "19" /> // cualquier objetivo que desee

  • Importe el proyecto BaseGameUtils a su área de trabajo. No tiene que modificar ninguno de este código.

  • Importar google-play-services_lib. Esto está en su carpeta sdk. Mi carpeta sdk está junto a mi carpeta eclipse. De todos modos esto está en: sdk / extras / google / google_play_services / libproject / google-play-services_lib. No tiene que modificar ninguno de este código.

  • Haga clic derecho en YourProject en la pestaña del explorador de paquetes (normalmente en el lado izquierdo de eclipse con todas las carpetas de su proyecto). A continuación, haga clic en Propiedades (Alt + Enter). A continuación, haga clic en Android. En la parte inferior de la página de Android, debe ser "Biblioteca". Haga clic en el botón Agregar y agregue BaseGameUtils y google-play-services_lib. No haga clic en "Es la biblioteca".

  • Asegúrese de que todos los archivos de android-support-v4.jar en todos los proyectos relevantes estén utilizando la misma versión actualizada. Puede actualizar su archivo de soporte haciendo clic con el botón derecho del ratón en su proyecto en la pestaña "explorador de paquetes" y accediendo a -> Herramientas de Android-> Agregar biblioteca de soporte. A continuación, acepta y actualiza. Usted puede comprobar más para ver si todos los proyectos enumerados tienen este tarro actualizado haciendo clic derecho en su proyecto y va a las propiedades. A continuación, haga clic en Java Build Path y luego haga clic en la pestaña libraries. Debería ver el tarro de soporte en la lista. Si no, puede agregar el tarro, donde quiera que esté ubicado en el proyecto. Si no lo hace, puede tener algo llamado JAR MIXMATCH. Por supuesto, usted verá el problema exacto en su consola por lo que es fácil de arreglar y diagnosticar.

  • Su manifiesto debe ser: <meta-data android: name = "com.google.android.gms.games.APP_ID" android: value = "@ string / app_id" /> <meta-data android: name = "com.google .android.gms.version "android: value =" @ integer / google_play_services_version "/>

La última línea con @integer se ve en la google_play_services_version para que no tenga que hacer nada en el futuro siempre que cambie la versión de Google Play. No codifique el valor del número de versión o tendrás que actualizarlo manualmente con frecuencia.

  • MyProject extiende BaseGameActivity.

  • A continuación, para llamar a la tabla de clasificación y actualizar, su código de ejemplo de 2 líneas de código funciona muy bien. Vea abajo. https://developers.google.com/games/services/android/leaderboards Tienes que pasar el ID de la tabla de clasificación que se te da cuando vinculas tu aplicación a la consola de desarrolladores de google play. Es una cadena que se parece a algo así: "DkbGvageyBASEWEFCx". Actualizar y obtener una tabla de clasificación se bloqueará si no está conectado. Echa un vistazo a este código de ejemplo completo a continuación.

    // para actualizar if (getApiClient (). IsConnected ()) // getAPIClient es parte de BaseGameUtils Games.Leaderboards.submitScore (getApiClient (), leaderboardID, puntuación);

    // para mostrar si (getApiClient (). IsConnected ()) startActivityForResult (Games.Leaderboards.getLeaderboardIntent (getApiClient (), leaderboardID), 1337);

  • Por último, si está utilizando una aplicación con un almacén de claves diferente que tiene un SHA1 diferente (Algoritmo de hash seguro) que el que tiene en la tienda de Google Play, se producirá un error y no podrá conectarse. Así que si has subido una aplicación con un almacén de claves con un SHA1 como ab: cd: de … y estás depurando tu aplicación, es posible que veas problemas ya que Eclipse usará un almacén de claves de depuración android predeterminado que tiene un SHA1 diferente. No podrás conectarte y, en consecuencia, no podrás utilizar ningún servicio de Google Play.

  • Te recomiendo que mires el código de ejemplo llamado "Trivial Quest". https://github.com/playgameservices/android-samples Está bajo eclipse_compat. Este código muestra muestra cómo iniciar y desbloquear un logro. Si puede iniciar sesión, puede hacer logros y tablas de clasificación muy fácilmente.

  • Hay un montón de cosas, pero nos has dado sólo una pequeña pieza del rompecabezas. Si tiene más problemas, por favor háganoslo saber.

Creo que quizás necesites poner la Biblioteca de Servicios de Google Play en tus dependencias,

En esta línea:

03-10 17: 44: 54.071: E / AndroidRuntime (31435): en com.google.android.gms.internal.dw $ hb (fuente desconocida)

Probablemente usted tiene problemas con la dependencia de mapas de google, la biblioteca GMS de google se utiliza

A mapas y otros servicios de Google Play Services, si tienes problemas con eso, es posible que hayas añadido versiones incorrectas en tu proyecto.

La mejor manera para usted es, downalod Google Play Services For Games y poner en su proyecto

Dependencias.

https://developers.google.com/games/services/downloads/ (estos servicios de Google Play son específicos de los juegos)

  • Enviar puntuaciones a las tablas de clasificación de Google Play Games y mostrar nuevos rangos
  • Los fósforos de turnbased desaparecen después de cargar por primera vez
  • Servicios de juegos de Google Play: no puede iniciar sesión
  • Android google play juegos seleccionar actividad para iniciar cuando se hace clic en la notificación
  • ¿Posibles razones para que el dispositivo Android no reciba las notificaciones de juegos de Google?
  • Emulador de Android TV con API de Google
  • Cómo seleccionar oponentes para TurnBaseMatches después de GMS 11.0.0?
  • Los servicios de juegos de Android android no están configurados correctamente. ¿alguien sabe Como arreglarlo?
  • Decidir quién es el jugador uno y dos en un juego basado en ronda con Google Play Game Services
  • La aplicación no está configurada correctamente para utilizar los servicios de juego de Google
  • Uso de Google Play Games Services en el emulador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.