Android Studio 3.5 Canary agrega "Aplicar cambios", un reemplazo de ejecución instantánea

Android Studio 3.5 (actualmente en los canales de Canarias y Dev) ahora presenta una nueva forma de enviar cambios de código a su aplicación y ver sus efectos sobre la marcha sin tener que reiniciar la aplicación. Apodado simplemente "Aplicar cambios", es el sucesor de la función "Ejecución instantánea" en versiones anteriores de Android Studio.

El blog de desarrolladores de Android de Google dice lo siguiente sobre Aplicar cambios:

Aplicar cambios le permite insertar cambios de código y recursos en su aplicación en ejecución sin reiniciar su aplicación y, en algunos casos, sin reiniciar la actividad actual. Aplicar cambios reemplaza Instant Run con un enfoque completamente nuevo para la optimización de compilación. En lugar de reescribir el código de bytes de su APK durante el tiempo de compilación, Aplicar cambios redefine las clases sobre la marcha al aprovechar la instrumentación de tiempo de ejecución compatible con Android 8.0 (API nivel 26) o superior.

Además, Android Studio ahora le solicita que decida si reinicia su aplicación o actividad cuando detecta que los cambios no son compatibles con Apply Changes. Este control adicional debería proporcionarle una experiencia más consistente y predecible en comparación con el comportamiento de Instant Run.

La publicación del blog continúa enumerando algunas limitaciones a la nueva funcionalidad. Por ejemplo, el dispositivo en el que está probando su aplicación debe tener al menos Android 8.0 Oreo (API Nivel 26) y hay ciertos cambios de código que aún requerirán que su aplicación se reinicie. Al igual que con "Ejecución instantánea", "Aplicar cambios" obligará a su aplicación a reiniciarse si:

  • Agregar o eliminar una clase, método o campo
  • Cambiar el manifiesto
  • Cambio de firmas de métodos
  • Cambiar modificadores de métodos o clases
  • Renombrar clases
  • Cambio de herencia de clase
  • Agregar o eliminar un recurso

En "Problemas conocidos", la publicación del blog indica que, dado que Google inicialmente priorizó la estabilidad sobre el rendimiento en esta nueva función, "Aplicar cambios" a veces se ejecutará más lentamente que su característica anterior "Ejecución instantánea". Además, las imágenes del emulador x86_x64 no son compatibles, y para fines de depuración, solo se admite Android Pie (API Nivel 28). Puede ver la lista completa de limitaciones y problemas conocidos en el enlace de origen a continuación.

Para una descripción más detallada de la diferencia entre "Aplicar cambios" y "Ejecución instantánea", un empleado de Google en el equipo de Android Studio dijo lo siguiente en Reddit:

Hace algo muy, muy diferente. Instant Run tuvo un impacto muy específico en la compilación, instrumentando cada una de sus clases en tiempo de compilación para prepararlas para ser reemplazadas durante el tiempo de ejecución con una nueva versión de la clase. También dividió su APK en varios APK para volver a cargar su aplicación de manera más incremental.

Aplicar cambios no hace nada igual. Su APK es muy similar, ya sea que use Aplicar cambios o no. En su lugar, se basa en las nuevas capacidades de instrumentación de tiempo de ejecución de ART VM para recargar las clases dinámicamente y reemplazarlas mientras se ejecuta la aplicación. Es por eso que requiere versiones mucho más nuevas de Android.

Se espera que "Aplicar cambios" eventualmente reemplace "Ejecución instantánea" en los canales Beta y Estable a medida que Google realiza mejoras en su rendimiento y estabilidad.


Fuente: Blog de desarrolladores de Android