Compartir a través de


Unificación de componentes de Google Play Services y NuGet

Historial

Solía haber varios componentes de Google Play Services y paquetes NuGet:

  • Google Play Services (Froyo)
  • Google Play Services (Gingerbread)
  • Google Play Services (ICS)
  • Google Play Services (JellyBean)
  • Google Play Services (KitKat)

Google solo envía dos archivos .jar para Google Play Services:

  • google-play-services-froyo.jar
  • google-play-services.jar

La discrepancia existía porque nuestras herramientas no indicaron a aapt.exe correctamente cuál era el nivel máximo de API de recursos que se usaría para una aplicación determinada. Esto significa que recibimos errores de compilación al intentar usar el enlace de Google Play Services (KitKat) en un nivel de API inferior, como Gingerbread.

Unificación de Google Play Services

En versiones más recientes de Xamarin.Android, ahora se indica a aapt.exe qué versión máxima de recursos se puede usar, por lo que este problema desaparece.

Esto significa que no hay ninguna razón real a fin de tener paquetes independientes para Gingerbread/ICS/JellyBean/KitKat (pero todavía necesitamos un enlace independiente para Froyo, ya que es un archivo de .jar totalmente diferente).

Para facilitar las cosas a los desarrolladores, ahora hemos unificado nuestros componentes y paquetes NuGet en dos:

  • Google Play Services (Froyo) (enlaza google-play-services-froyo.jar)
  • Google Play Services (enlaza google-play-services.jar)

¿Cuál debe usarse?

En casi todos los casos, se debe usar Google Play Services. La única razón para usar el paquete (Froyo) es si se establece de forma activa el destino Froyo. La única razón por la que existe este archivo .jar independiente de Google es que Froyo está presente en un porcentaje tan pequeño de dispositivos que ellos mismos han decidido dejar de admitirlo, por lo que este archivo .jar es una instantánea inmovilizada y no compatible de Google Play Services.

Nota sobre Gingerbread

Gingerbread no tiene compatibilidad con Fragment de manera predeterminada y, debido a esto, algunas de las clases del enlace no se pueden usar en una aplicación en runtime en un dispositivo Gingerbread. Las clases como MapFragment no funcionarán en Gingerbread y su variante compatible debe usarse en lugar de SupportMapFragment. Es necesario que el desarrollador sepa cuál debe usar. Esta incompatibilidad se observa en Google en su documentación de Google Play Services.

¿Qué ocurre con los componentes o paquetes NuGet anteriores?

Como ya no son necesarios, hemos deshabilitado o eliminado de la lista los siguientes componentes y paquetes NuGet:

  • Google Play Services (Gingerbread)
  • Google Play Services (JellyBean)
  • Google Play Services (KitKat)

El componente o NuGet de Google Play Services (ICS) existente se ha cambiado de nombre a Google Play Services y se mantendrá actualizado en el futuro. Todos los proyectos que hacen referencia a uno de los paquetes deshabilitados o eliminados de la lista deben actualizarse para usar este.

Los componentes deshabilitados siguen existiendo y deben poderse restaurar para los proyectos en los que todavía se hace referencia, a fin de evitar interrumpirlos. Del mismo modo, los paquetes NuGet eliminados de la lista siguen existiendo y se pueden restaurar. No se actualizarán en el futuro.