martes, 30 de diciembre de 2014

Android Lollipop para Programadores


Se ha presentado el nuevo Android 5.0 Lollipop, y juntamente con las imágenes del sistema se ha liberado la versión 5.0 del SDK. Este nuevo SDK viene cargado de novedades y actualizaciones. Vamos a intentar hacer un rápido resumen de estos cambios y qué nuevas herramientas existen para los desarrolladores para empezar a trabajar con Lollipop.
El nuevo SDK incluye ART como runtime por defecto, deberemos testear las aplicaciones que desarrollemos para que funcionen con el nuevo runtime y en el caso de ser necesario adaptarlas.
Hay que tener en consideración que las APIs han variado desde la última preview siendo necesario revisar que nuestras apps funcionen correctamente, y en caso de que las apps hagan uso de notificaciones también será necesario adaptarlas al nuevo estilo y comportamiento del sistema.
El objetivo de estos post es presentarles a todos las novedades de esta última versión, con un speech informal y otro más tecnico, acompañado de los links para que puedan profundizar.

Cambios importantes de comportamiento

Si han publicado previamente una aplicación para Android, tenga en cuenta que su aplicación podría verse afectada por los cambios en Android 5.0.

Android Runtime (ART)
Android 4.4 introdujo un runtime experimental, ART. En 4.4 ART era opcional, y el runtime por defecto se mantuvo Dalvik. Con Android 5.0, ART es ahora runtime predeterminado.
Algunos de los nuevos features son:
  • Compilacion Ahead-of-time (AOT)
  • Mejoras en garbage collection (GC)
  • Mejoras en debugging support

La mayoría de las aplicaciones Android deben trabajar sin ningún tipo de cambios en el nuevo runtime ART. Sin embargo, algunas de las técnicas que trabajan en Dalvik no funcionan en ART. Para obtener información acerca de los temas más importantes, consulten en la web oficial de android developers sobre "Verificación de Comportamiento App en el Android Runtime (ART)".

Presten especial atención si desarrollaron con:
-Java Native Interface (JNI) para ejecutar C/C++ code.
-Usaron herramientas de desarrollo que generan código no estándar (por ejemplo, algunos ofuscadores).
-Usaron técnicas que son incompatibles con la compactación de la recolección de basura. (ART no implementa actualmente compactación GC, pero compactación GC está en desarrollo en el proyecto de código abierto Android).

¿Por qué este cambio? Básicamente querían mejorar el rendimiento de Android, y se llegó a la conclusión de que para mejorar el rendimiento, también debían pensar en cambiar la máquina virtual Dalvik que se venía utilizando.
Pero, ¿tanto cambio hay en el rendimiento? Si comparamos ART con su antecesora Dalvik, es más que notable la diferencia, evitandose pausas innecesarias.
Por ejemplo, podemos ver pruebas hechas en un Nexus 5:
Captura de pantalla 2014-06-25 a la(s) 18.45.27
Para mantener la compatibilidad con versiones anteriores, ART usa el mismo byte code de entrada que Dalvik, en los archivos .dex estándars como parte de los archivos APK, mientras que los archivos .odex se reemplazan con ejecutables de "Formato Ejecutable y Enlazable (ELF)".
Una vez que una aplicación se compila utilizando la tool dex2oat, es dirigido exclusivamente a partir del ejecutable ELF compilado.

Este enfoque elimina diversos gastos involucrados con compilación JIT, pero requiere tiempo adicional para la compilación cuando se instala una aplicación, y las aplicaciones ocupan más espacio de almacenamiento para almacenar el byte code compilado.



Soporte de 64-Bit en Android NDK
Android 5.0 introduce el soporte para sistemas de 64-bit. La mejora de 64 bits aumenta el espacio de direcciones y mejora el rendimiento, mientras que todavía de soporte a las aplicaciones de 32 bits existentes completamente.
El soporte de 64 bits también mejora el rendimiento de OpenSSL para la criptografía. Además, esta versión introduce nuevas API NDK media nativo, así como el soporte nativo de OpenGL ES (GLES) 3,1.
Binding to a Service
El método Context.bindService() ahora requiente un Intent explícito, y lanzará una excepción si usamos un Intent implícito. Para asegurarse que su aplicación es segura, utilice una Intent explícito al iniciar o vincular su Service, y no declaren Intent Filters para el servicio.
Chromium WebView
El release de Android 5.0 incluye la versión  de Chromium para los WebView basados en Chromium M37 release, agregando soporte para WebRTC, WebAudio, y WebGL. Entonces Android 5.0 cambia el comportamiento por defecto así:
Si el target es API level 21 superior:
-El sistema bloquea el contenido mixto y cookies de terceros de forma predeterminada. Para permitir contenido mixto y cookies de terceros, utilice el método  setMixedContentMode() y setAcceptThirdPartyCookies() respectivamente.
-Ahora, el sistema elige inteligentemente partes del documento HTML para dibujar. Este nuevo comportamiento predeterminado ayuda a reducir la huella de la memoria y aumentar el rendimiento. Si usted quiere hacer todo el documento a la vez, debe desactivar esta optimización llamando enableSlowWholeDocumentDraw().
Si el target es API level menor que 21:

-El sistema permite contenido mixto y cookies de terceros, y siempre renderiza el documento completo.

Luego continuaremos charlando sobre Material Design y un monton de otras mejoras en este gran sistema operativo mobile.

No hay comentarios:

Publicar un comentario