Versiones anteriores

Las siguientes son notas de la versión de Android Studio 3.6 y anteriores, y del complemento de Android para Gradle 3.6.0 y anteriores.

Versiones anteriores de Android Studio

3.6 (febrero de 2020)

Android Studio 3.6 es una actualización importante que incluye una variedad de funciones y mejoras nuevas.

También queremos agradecer a todos los colaboradores de la comunidad que nos ayudaron con esta versión.

3.6.3 (abril de 2020)

Esta actualización menor incluye diversas correcciones de errores. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

3.6.2 (marzo de 2020)

Esta actualización menor incluye diversas correcciones de errores. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

3.6.1 (febrero de 2020)

Esta actualización menor incluye diversas correcciones de errores. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

Herramientas de diseño

Esta versión de Android Studio incluye actualizaciones para diversas herramientas de diseño, como el editor de diseño y Resource Manager.

Editores de diseño para acercar y dividir la vista

la vista dividida muestra las vistas de diseño y texto al mismo tiempo

En esta versión, se incluyen las siguientes actualizaciones de los editores de diseño visual:

  • Los editores de diseño, como el editor de diseño y el editor de navegación, ahora ofrecen una vista dividida que te permite ver las vistas de diseño y código de la IU al mismo tiempo. En la esquina superior derecha de la ventana del editor, ahora verás tres botones íconos de vistas para activar o desactivar las opciones de visualización:

    • Para habilitar la vista dividida, haz clic en el ícono Dividir ícono de vista dividida.
    • Para habilitar la vista de fuente XML, haz clic en el ícono Fuente ícono de vista de fuente.
    • Para habilitar la vista de diseño, haz clic en el ícono Diseño ícono de vista de diseño.
  • Los controles para acercar o alejar y para desplazarse lateralmente en los editores de diseño se movieron a un panel flotante en la esquina inferior derecha de la ventana del editor.

Para obtener más información, consulta Cómo compilar una IU con un editor de diseño.

Pestaña de recursos del selector de color

Para ayudarte a actualizar rápidamente los valores de recursos de color en tu app cuando usas el selector de color en tu XML o en las herramientas de diseño, el IDE ahora propaga los valores de recursos de color por ti.

Selector de color con valores de color propagados

Resource Manager

Resource Manager contiene las siguientes actualizaciones:

  • Ahora Resource Manager admite la mayoría de los tipos de recursos.
  • Cuando se busca un recurso, ahora Resource Manager muestra resultados de todos los módulos del proyecto. Anteriormente, las búsquedas solo mostraban resultados del módulo seleccionado.
  • El botón de filtro te permite ver recursos de módulos dependientes locales, bibliotecas externas y el framework de Android. Además, puedes usar el filtro para mostrar los atributos de tema.
  • Ahora puedes cambiar el nombre de los recursos durante el proceso de importación. Para ello, haz clic en el cuadro de texto que se encuentra sobre el recurso.

Si deseas obtener más información, consulta Cómo administrar los recursos de IU de tu app con Resource Manager.

Actualizaciones del complemento de Android para Gradle

La versión más reciente del complemento de Android para Gradle incluye muchas actualizaciones, como optimizaciones de la velocidad de compilación, compatibilidad con el complemento de publicación de Maven y compatibilidad con la vinculación de vistas. Para obtener más información, consulta las notas de la versión completas.

Vinculación de vistas

La vinculación de vistas te permite escribir más fácilmente código que interactúe con las vistas con la generación de una clase de vinculación para cada archivo de diseño XML. Estas clases contienen referencias directas a todas las vistas que tienen un ID en el diseño correspondiente.

Debido a que reemplaza findViewById(), la vinculación de vistas elimina el riesgo de excepciones de puntero nulo que resultan de un ID de vista no válido.

Para habilitar la vinculación de vistas, debes usar el complemento de Android para Gradle 3.6.0, o una versión posterior, e incluir lo siguiente en el archivo build.gradle de cada módulo:

Groovy

  android {
      buildFeatures.viewBinding = true
  }
  

Kotlin

  android {
      buildFeatures.viewBinding = true
  }
  

Apply Changes

Ahora, puedes agregar una clase y, luego, implementar ese cambio de código en tu app en ejecución. Para ello, haz clic en Apply Code Changes  o en Apply Changes and Restart Activity .

Si deseas obtener más información sobre la diferencia entre estas dos acciones, consulta Apply Changes.

Opción de menú de refactorización para habilitar la compatibilidad con apps instantáneas

Ahora puedes habilitar instantáneamente tu módulo básico en cualquier momento después de crear tu proyecto de app de la siguiente manera:

  1. Abre el panel Project seleccionando View > Tool Windows > Project en la barra de menú.
  2. Haz clic con el botón derecho en el módulo base, que suele llamarse "app", y selecciona Refactor > Enable Instant Apps Support.
  3. En el cuadro de diálogo que aparece, selecciona el módulo base del menú desplegable.
  4. Haz clic en OK.

Nota: Se quitó la opción para habilitar instantáneamente el módulo base de tu app desde el asistente Create New Project.

Para obtener más información, lee la Descripción general de Google Play Instant.

Cómo desofuscar el código de bytes de clase y método en el Analizador de APK

Cuando usas el Analizador de APK para inspeccionar archivos DEX, puedes desofuscar el código de bytes del método y la clase de la siguiente manera:

  1. Selecciona Build > Analyze APK en la barra de menú.
  2. En el cuadro de diálogo que aparece, navega hasta el APK que deseas inspeccionar y selecciónalo.
  3. Haz clic en Open.
  4. En el Analizador de APK, selecciona el archivo DEX que deseas inspeccionar.
  5. En el visor de archivos DEX, carga el archivo de asignaciones de ProGuard para el APK que estás analizando.
  6. Haz clic con el botón derecho en la clase o el método que deseas inspeccionar y selecciona Show bytecode.

Herramientas nativas

Las siguientes actualizaciones admiten el desarrollo nativo (C/C++) en Android Studio.

Compatibilidad con Kotlin

Las siguientes funciones de NDK en Android Studio, que antes eran compatibles con Java, ahora también son compatibles con Kotlin:

  • Navega desde una declaración JNI hasta la función de implementación correspondiente en C/C++. Puedes ver esta asignación si colocas el cursor sobre el marcador del elemento C o C++ cerca del número de línea del archivo de código fuente administrado.

  • Crea automáticamente una función de implementación de stub para una declaración JNI. Primero, define la declaración JNI; luego, escribe "jni" o el nombre del método en el archivo C/C++ que quieres activar.

  • Las funciones de implementación nativas no utilizadas se destacan como advertencia en el código fuente. Las declaraciones JNI con implementaciones faltantes también se destacan como error.

  • Cuando renombras (refactorizas) una función de implementación nativa, se actualizan todas las declaraciones JNI correspondientes. Renombra una declaración JNI para actualizar la función de implementación nativa.

  • Se incluye comprobación de firma para implementaciones JNI vinculadas implícitamente.

Otras mejoras de JNI

El editor de código de Android Studio ahora admite un flujo de trabajo de desarrollo de JNI más integrado, que incluye sugerencias de tipo mejoradas, autocompletado, inspecciones y refactorización de código.

Recarga de APK para bibliotecas nativas {:#3.6-reload-apk}

Ya no es necesario crear un proyecto nuevo cuando el APK de tu proyecto se actualiza fuera del IDE. Android Studio detecta cambios en el APK y te brinda la opción de volver a importarlos.

Acción de adjuntar fuentes de APK solo de Kotlin

Ahora, es posible adjuntar fuentes de APK externas solo de Kotlin cuando generas perfiles y depuras los APKs compilados previamente. Para obtener más información, consulta Cómo adjuntar códigos fuente Kotlin/Java.

Detección de pérdidas en el Generador de perfiles de memoria

Cuando se analiza un volcado de montón en el Generador de perfiles de memoria, ahora puedes filtrar los datos de perfiles que Android Studio cree que pueden indicar pérdidas de memoria para instancias Activity y Fragment en tu app.

Los tipos de datos que muestra el filtro incluyen los siguientes:

  • Instancias Activity que se destruyeron, pero a las que todavía se hace referencia.
  • Instancias Fragment que no tienen un FragmentManager válido, pero a las que aún se hace referencia

Acción de adjuntar fuentes de APK solo de Kotlin

Ahora, es posible adjuntar fuentes de APK externas solo de Kotlin cuando generas perfiles y depuras los APKs compilados previamente. Para obtener más información, consulta Cómo adjuntar códigos fuente Kotlin/Java.

Detección de pérdidas en el Generador de perfiles de memoria

Cuando se analiza un volcado de montón en el Generador de perfiles de memoria, ahora puedes filtrar los datos de perfiles que Android Studio cree que pueden indicar pérdidas de memoria para instancias Activity y Fragment en tu app.

Los tipos de datos que muestra el filtro incluyen los siguientes:

  • Instancias Activity que se destruyeron, pero a las que todavía se hace referencia.
  • Instancias Fragment que no tienen un FragmentManager válido, pero a las que aún se hace referencia

En ciertas situaciones, como las que se incluyen a continuación, el filtro puede generar falsos positivos:

  • Se creó un Fragment, pero todavía no se usó.
  • Se almacena en caché un Fragment, pero no como parte de un FragmentTransaction.

Para usar esta función, primero debes capturar un volcado de montón o importar un archivo de volcado de montón en Android Studio. A fin de mostrar los fragmentos y las actividades que pueden tener pérdidas de memoria, selecciona la casilla de verificación Activity/Fragment Leaks en el panel de volcado de montón del Generador de perfiles de memoria.

Generador de perfiles: detección de fuga de memoria

Filtrado de un volcado de montón para las fugas de memoria.

Emuladores

Android Studio 3.6 te ayuda a aprovechar varias actualizaciones incluidas en Android Emulator 29.2.7 y versiones posteriores, como se describe a continuación.

Compatibilidad mejorada con las ubicaciones

Android Emulator 29.2.7 y las versiones posteriores ofrecen compatibilidad adicional para emular las coordenadas GPS y la información de ruta. Cuando abres los controles extendidos del emulador, las opciones de la pestaña de ubicación ahora se organizan en dos pestañas: Single points y Routes.

Single points

En la pestaña Single points, puedes usar la vista web de Google Maps para buscar lugares de interés, del mismo modo que lo harías con Google Maps en un teléfono o navegador. Cuando buscas una ubicación en el mapa (o haces clic en ella), puedes guardar la ubicación seleccionando Save point cerca de la parte inferior del mapa. Todas tus ubicaciones guardadas aparecen en el lado derecho de la ventana Extended controls.

Si deseas establecer la ubicación del emulador en la ubicación que seleccionaste en el mapa, haz clic en el botón Set location que se encuentra cerca de la parte inferior derecha de la ventana Extended controls.

Pestaña Single points en los controles extendidos del emulador..

Routes

Al igual que la pestaña Single points, la pestaña Routes proporciona una vista web de Google Maps que puedes usar para crear una ruta entre dos o más ubicaciones. Para crear y guardar una ruta, sigue estos pasos:

  1. En la vista de mapa, usa el campo de texto para buscar el primer destino de tu ruta.
  2. Selecciona la ubicación en los resultados de la búsqueda.
  3. Selecciona el botón Navigate.
  4. Selecciona el punto de partida de tu ruta en el mapa.
  5. (Opcional) Haz clic en Add destination para agregar más paradas a tu ruta.
  6. Para guardar la ruta, haz clic en Save route en la vista de mapa.
  7. Especifica un nombre para la ruta y haz clic en Save.

Para simular el emulador siguiendo la ruta que guardaste, selecciona la ruta en la lista de Saved routes y haz clic en Play route, cerca de la parte inferior derecha de la ventana Extended controls. Para detener la simulación, haz clic en Stop route.

Pestaña Routes en los controles extendidos del emulador..

Si quieres simular de forma continua el emulador siguiendo la ruta especificada, habilita el botón que se encuentra junto a Repeat playback. Para cambiar la velocidad con la que el emulador sigue la ruta especificada, selecciona una opción del menú desplegable Playback speed.

Compatibilidad con pantallas múltiples

Android Emulator ahora te permite implementar tu app en varias pantallas, que admiten dimensiones personalizables y pueden ayudarte a probar apps compatibles con multiventana y multipantalla. Mientras se ejecuta un dispositivo virtual, puedes agregar hasta dos pantallas adicionales de la siguiente manera:

  1. Abre Extended controls y ve a la pestaña Displays.

  2. Para agregar otra pantalla, haz clic en Add secondary display.

  3. En el menú desplegable Secondary displays, realiza una de las siguientes acciones:

  4. Selecciona una de las relaciones de aspecto predeterminadas.

  5. Selecciona custom y establece la altura (en height), el ancho (en width) y los DPI para tu pantalla personalizada.

  6. (Opcional) Haz clic en Add secondary display para agregar una tercera pantalla.

  7. Haz clic en Apply changes para agregar las pantallas especificadas al dispositivo virtual activo.

Agrega varias pantallas a la pestaña Emulator Extended Controls Display.

Plantillas de proyectos y dispositivos virtuales nuevos para el SO Android Automotive

Cuando creas un proyecto nuevo con Android Studio, ahora puedes seleccionar entre tres plantillas de la pestaña Automotive en el asistente de Create New Project: No Activity, Media Service y Messaging Service. En el caso de los proyectos existentes, puedes agregar compatibilidad con los dispositivos Android Automotive. Para ello, selecciona File > New > New Module en la barra de menú y selecciona Automotive Module. Luego, el asistente de Create New Module te guía en la creación de un módulo nuevo con una de las plantillas de proyectos de Android Automotive.

Selección de una plantilla de proyectos de Android Automotive..

Además, ahora puedes crear un dispositivo virtual de Android (AVD) para dispositivos con el SO Android Automotive. Para ello, selecciona una de las siguientes opciones en la pestaña Automotive del asistente de Virtual Device Configuration.

  1. Polestar 2: Crea un AVD que emula la consola central de Polestar 2.
  2. Automotive (1024p horizontal): Crea un AVD para unidades principales de Android Automotive de 1024 x 768 px.

Seleccionar un dispositivo virtual de Android Automotive..

Descargas del SDK reanudables

Cuando descargas herramientas y componentes del SDK con SDK Manager, Android Studio te permite reanudar las descargas interrumpidas (por ejemplo, debido a un problema de red) en lugar de reiniciar la descarga desde el principio. Esta mejora es especialmente útil para las descargas grandes, como Android Emulator o las imágenes del sistema, cuando la conexión a Internet no es confiable.

Además, si tienes una tarea de descarga del SDK ejecutándose en segundo plano, puedes pausar o reanudar la descarga mediante los controles de la barra de estado.

Una tarea de descarga en segundo plano en la barra de estado con controles nuevos que te permiten pausar o reanudar la descarga.

Una tarea de descarga en segundo plano en la barra de estado con controles nuevos que te permiten pausar o reanudar la descarga.

Win32 dejó de estar disponible

La versión de 32 bits de Android Studio para Windows dejará de recibir actualizaciones después de diciembre de 2019 y dejará de ser compatible después de diciembre de 2020. Puedes seguir usando Android Studio. Sin embargo, para recibir actualizaciones adicionales, actualiza tu estación de trabajo a una versión de Windows de 64 bits.

Si quieres obtener más información, lee el blog sobre la baja de la versión de 32 bits para Windows.

Nueva opción para optimizar el tiempo de sincronización de Gradle

En las versiones anteriores, Android Studio recuperaba la lista de todas las tareas de Gradle durante la sincronización de Gradle. Para proyectos grandes, la recuperación de la lista de tareas puede provocar tiempos de sincronización lentos.

Para mejorar el rendimiento de la sincronización de Gradle, ve a File > Settings > Experimental y selecciona Do not build Gradle task list during Gradle sync.

Cuando habilitas esta opción, Android Studio omite compilar la lista de tareas durante la sincronización, lo que permite que se complete más rápido la sincronización de Gradle y mejore la capacidad de respuesta de la IU. Ten en cuenta que, cuando el IDE omite compilar la lista de tareas, las listas de tareas en el panel de Gradle están vacías, y el autocompletado del nombre de la tarea en los archivos de compilación no funciona.

Nueva ubicación para activar o desactivar el modo sin conexión de Gradle

Para habilitar o inhabilitar el modo sin conexión de Gradle, primero selecciona View > Tool Windows > Gradle en la barra de menú. Luego, en la parte superior de la ventana de Gradle, haz clic en Toggle Offline Mode Botón de Gradle sin conexión en el panel de Gradle..

IntelliJ IDEA 2019.2

Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA mediante la versión 2019.2.

Para obtener más información sobre las mejoras de otras versiones de IntelliJ que se incluyen de forma acumulativa con la versión 2019.2, consulta las siguientes páginas:

Colaboradores de la comunidad

Gracias a todos los colaboradores de la comunidad que nos ayudaron a descubrir errores y otras formas de mejorar Android Studio 3.6. En particular, queremos agradecer a las siguientes personas que informaron errores:

  • Albert Lo
  • Alexey Rott
  • Andrea Leganza
  • Benedikt Kolb
  • César Puerta
  • Curtis Kroetsch
  • Damian Wieczorek
  • Dan Lew
  • David Burström
  • Deepanshu
  • Egor Andreevici
  • Eli Graber
  • Emin Kokalari
  • Evan Tatarka
  • Frantisek Nagy
  • Greg Moens
  • Hannes Achleitner
  • Hans Petter Eide
  • Henning Bunk
  • Hugo Visser
  • Igor Escodro
  • Iñaki Villar
  • Javentira Lienata
  • Joe Rogers
  • Kristoffer Danielsson
  • Liran Barsisa
  • Louis CAD
  • Lóránt Pintér
  • Łukasz Wasylkowski
  • Luke Fielke
  • Malvin Sutanto
  • Masatoshi Kubode
  • Mathew Winters
  • Michael Bailey
  • Michał Górny
  • Mihai Neacsu
  • Mike Scamell
  • Monte Creasor
  • Nelson Osacky
  • Nelson Osacky
  • Nick Firmani
  • Nicklas Ansman Giertz
  • Niclas Kron
  • Nicolás Lichtmaier
  • Niek Haarman
  • Niels van Hove
  • Niklas Baudy
  • Renato Goncalves
  • Roar Grønmo
  • Ruslan Baratov
  • Sinan Kozak
  • Slawomir Czerwinski
  • Stefan Wolf
  • Stephen D'Amico
  • Tao Wang
  • Tomas Chladek
  • Tomáš Procházka
  • Tony Robalik
  • Torbjørn Sørli
  • Warren He
  • Yenchi Lin
  • Zac Sweers
  • 3.5 (agosto de 2019)

    Android Studio 3.5 es una actualización importante y el resultado de Project Marble. A partir del lanzamiento de Android Studio 3.3, la iniciativa Project Marble abarca varios lanzamientos que se centran en mejorar tres áreas principales del IDE: estado del sistema, pulido de funciones y corrección de errores.

    Si deseas obtener más información sobre estas y otras actualizaciones de Project Marble, consulta la entrada del Blog para desarrolladores de Android o las secciones que se incluyen a continuación.

    También queremos agradecerles a todos los colaboradores de la comunidad que nos ayudaron con esta versión.

    3.5.3 (diciembre de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento.

    3.5.2 (noviembre de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    3.5.1 (octubre de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    Project Marble: Estado del sistema

    En esta sección, se describen los cambios en Android Studio 3.5 que se centran en mejorar el estado del sistema.

    Configuración de memoria recomendada

    Android Studio ahora te notifica si detecta que puedes mejorar el rendimiento al aumentar la cantidad máxima de RAM que tu SO debe asignar a los procesos de Android Studio, como el IDE central, el daemon de Gradle y el daemon de Kotlin. Si quieres aceptar la configuración recomendada, haz clic en el vínculo de acción en la notificación o cambia los ajustes manualmente seleccionando File > Settings (o Android Studio > Preferences en macOS). Luego, busca la sección Memory Settings en Appearance & Behavior > System Settings. Para obtener más información, consulta Tamaño máximo de montón.

    Una notificación sobre la configuración de memoria recomendada.

    Una notificación sobre la configuración de memoria recomendada.

    Informe de uso de memoria

    Los problemas de memoria en Android Studio a veces son difíciles de informar y reproducir. Para resolver este problema, Android Studio te permite generar un informe de uso de memoria. Para ello, haz clic en Help > Analyze Memory Usage en la barra de menú. Cuando lo haces, el IDE corrige de forma local los datos de información personal antes de preguntar si deseas enviarlos al equipo de Android Studio para identificar los problemas de memoria. Si quieres obtener más información, consulta Cómo ejecutar un informe de uso de memoria.

    Un informe de uso de memoria.

    Un informe de uso de memoria.

    Windows: Optimización de E/S de archivos antivirus

    Ahora, Android Studio verifica automáticamente si ciertos directorios de proyectos se excluyen del análisis antivirus en tiempo real. Cuando se pueden realizar modificaciones a los efectos de mejorar el rendimiento de compilación, Android Studio te notifica y te proporciona instrucciones para optimizar la configuración del antivirus. Si deseas obtener más información, consulta Cómo minimizar el impacto del software antivirus en la velocidad de compilación.

    Project Marble: Pulido de funciones

    En esta sección, se describen los cambios en Android Studio 3.5 que se centran en mejorar las funciones existentes.

    Apply Changes

    Apply Changes te permite insertar cambios de código y recursos en tu app en ejecución sin reiniciarla y, en algunos casos, sin reiniciar la actividad actual. La función implementa un enfoque completamente nuevo para preservar el estado de tu app. A diferencia de Instant Run, que reescribe el código de bytes de tu APK, Apply Changes redefine las clases en el momento aprovechando la instrumentación de tiempo de ejecución compatible con Android 8.0 (nivel de API 26) o versiones posteriores.

    Para obtener más información, consulta Apply Changes.

    Los botones de la barra de herramientas de Apply Changes.

    Los botones de la barra de herramientas de Apply Changes.

    Flujo de implementación de apps

    El IDE tiene un nuevo menú desplegable que te permite seleccionar rápidamente el dispositivo en el que deseas implementar la app. En este menú, también se incluye una opción nueva que te permite ejecutar la app en varios dispositivos a la vez.

    Menú desplegable del dispositivo de destino.

    Menú desplegable del dispositivo de destino.

    Mejora de la detección de caché y la sincronización de Gradle

    El IDE ahora detecta mejor si Gradle borra de manera periódica la caché de compilación para reducir el consumo de disco duro. En versiones anteriores, este estado hacía que el IDE informara dependencias faltantes y que fallara la sincronización de Gradle. Ahora, el IDE simplemente descarga dependencias según sea necesario a fin de garantizar que se complete de manera correcta la sincronización de Gradle.

    Mejora del resultado del error de compilación

    La ventana Build Ícono de ventana de compilación ahora proporciona mejores informes de errores, además de un vínculo al archivo y la línea del error informado, para los siguientes procesos de compilación:

    • Compilación y vinculación de AAPT
    • R8 y ProGuard
    • Dexing
    • Combinación de recursos
    • Análisis de archivos XML
    • Compilación de Java, Kotlinc y CMake

    Actualizaciones del proyecto

    Experiencia de actualización mejorada a fin de proporcionar más información y acciones que te ayudan a actualizar el IDE y el complemento de Android para Gradle. Por ejemplo, más errores de sincronización y compilación incluyen acciones que te ayudarán a mitigar errores durante la actualización.

    Es importante tener en cuenta que puedes actualizar el IDE independientemente de otros componentes, como el complemento de Android para Gradle. Por lo tanto, puedes actualizar el IDE de forma segura tan pronto como esté disponible una versión más reciente y actualizar los otros componentes más adelante.

    Editor de diseño

    Android Studio 3.5 incluye varias mejoras en la visualización, administración e interacción del diseño.

    Cuando usas ConstraintLayout, una sección Constraints nueva en el panel Attributes enumera las relaciones de restricciones del componente de IU seleccionado. Puedes seleccionar una restricción desde la plataforma de diseño o la lista de restricciones para destacar la restricción en ambas áreas.

    Relaciones de restricción para un elemento de IU seleccionado.

    Relaciones de restricción para un elemento de IU seleccionado.

    Del mismo modo, ahora puedes quitar una restricción si la seleccionas y presionas la tecla Delete. También puedes quitar una restricción si mantienes presionada la tecla Control (Command en macOS) y haces clic en el anclaje de restricciones. Ten en cuenta que, cuando mantienes presionada la tecla Control o Command, y colocas el cursor sobre un ancla, las restricciones asociadas se tornan de color rojo para indicar que puedes hacer clic para borrarlas.

    Cuando se selecciona una vista, puedes crear una restricción. A tal fin, haz clic en cualquiera de los íconos + en la sección Constraint Widget del panel Attributes, como se muestra en la imagen incluida a continuación. Cuando creas una restricción nueva, el editor de diseño ahora selecciona y destaca la restricción, lo que proporciona información visual inmediata sobre lo que acabas de agregar.

    Una animación que muestra cómo usar el widget de restricciones para crear restricciones.

    Uso del widget de restricción para crear restricciones.

    Cuando se crea una restricción, el editor de diseño ahora solo muestra los puntos de anclaje aptos que puedes restringir. Antes, el editor de diseño destacaba todos los puntos de anclaje en todas las vistas, independientemente de si podía restringirlas o no. Además, una superposición azul ahora destaca el objetivo de la restricción. Este resaltado es útil cuando se intenta crear una restricción para un componente que se superpone con otro.

    Una animación que muestra cómo crear una restricción para un componente superpuesto en Android Studio 3.4.

    Creación de una restricción para un componente superpuesto en Android Studio 3.4.

    Una animación que muestra cómo crear una restricción para un componente superpuesto en Android Studio 3.5.

    Creación de una restricción para un componente superpuesto en Android Studio 3.5.

    Además de las actualizaciones detalladas arriba, Android Studio 3.5 también incluye las siguientes mejoras del editor de diseño:

    • El menú desplegable Constraint Widget y de margen predeterminado ahora permite utilizar los recursos de dimensión para los márgenes.
    • En la barra de herramientas del editor de diseño, se actualizó la lista de dispositivos que determinan el tamaño de la superficie de diseño. Además, se mejoró el comportamiento de ajuste y cambio de tamaño, y los controladores de cambio de tamaño en la superficie de diseño ahora son visibles. Cuando se cambia el tamaño, aparecen superposiciones nuevas que muestran tamaños de dispositivos comunes.
    • El editor de diseño tiene un nuevo esquema de colores que mejora la coherencia y reduce el contraste entre los componentes, el texto y las restricciones.
    • El modo de plano técnico ahora incluye compatibilidad de texto para algunos componentes en los que no se mostraba el texto.

    Para obtener más información sobre estos cambios, consulta Project Marble de Android Studio: Editor de diseño.

    Vinculación de datos

    Además de agregar compatibilidad de procesamiento de anotaciones incrementales para la vinculación de datos, el IDE mejora las funciones y el rendimiento del editor inteligente al crear expresiones de vinculación de datos en XML.

    Una animación que muestra el rendimiento del editor de código en Android Studio 3.4.

    Rendimiento del editor de código en Android Studio 3.4.

    Una animación que muestra el rendimiento del editor de código en Android Studio 3.5.

    Rendimiento mejorado de edición de código en Android Studio 3.5.

    Compatibilidad mejorada en proyectos con C/C++

    Android Studio 3.5 incluye varios cambios que mejoran la compatibilidad con proyectos de C/C++.

    Mejoras en el panel Build Variants para la sincronización de variantes únicas

    Ahora, puedes especificar tanto la variante de compilación activa como la ABI activa en el panel Build Variants. Esta función simplifica la configuración de compilación por módulo y también puede mejorar el rendimiento de la sincronización de Gradle.

    Para obtener más información, consulta Cómo cambiar la variante de compilación.

    Panel Build Variants que muestra la selección de variantes individuales por ABI.

    Panel Build Variants con selección de variante única por ABI.

    Versiones en paralelo del NDK

    Ahora, puedes usar varias versiones del NDK en paralelo. Esta función te brinda más flexibilidad cuando configuras tus proyectos, por ejemplo, si tienes proyectos que usan versiones diferentes del NDK en la misma máquina.

    Si tu proyecto usa el complemento de Gradle para Android 3.5.0 o versiones posteriores, también puedes especificar la versión del NDK que debe usar cada módulo de tu proyecto. Puedes usar esta función para crear compilaciones reproducibles y mitigar las incompatibilidades entre las versiones del NDK y el complemento de Android para Gradle.

    Si quieres obtener más información, consulta Cómo instalar y configurar el NDK, CMake y LLDB.

    Compatibilidad con ChromeOS

    Android Studio ahora es compatible con los dispositivos ChromeOS, como la HP Chromebook x360 14, la Acer Chromebook 13/Spin 13 y otros equipos sobre los que puedes consultar en los requisitos del sistema. Para comenzar, descarga Android Studio en tu dispositivo compatible ChromeOS y sigue las instrucciones de instalación.

    Nota: Actualmente, Android Studio en ChromeOS permite implementar tu app solo en un dispositivo de hardware conectado. Si deseas obtener más información, lee Cómo ejecutar apps en un dispositivo de hardware.

    Entrega condicional para módulos de funciones

    La entrega condicional te permite establecer ciertos requisitos de configuración del dispositivo para que los módulos de funciones se descarguen automáticamente durante la instalación de la app. Por ejemplo, puedes configurar un módulo de funciones que incluya la funcionalidad de realidad aumentada (RA) para que esté disponible desde la instalación de la app solo en los dispositivos compatibles con RA.

    En la actualidad, este mecanismo de publicación admite controlar la descarga de un módulo en el momento de la instalación de la app en función de las siguientes configuraciones del dispositivo:

    • Funciones de hardware y software del dispositivo, incluida la versión de OpenGL ES
    • País del usuario
    • Nivel de API

    Si un dispositivo no cumple con todos los requisitos que especificaste, no se descargará el módulo durante la instalación de la app. Sin embargo, tu app puede solicitar más tarde que se descargue el módulo a pedido con la biblioteca de Play Core. Para obtener más información, consulta Cómo configurar la entrega condicional.

    IntelliJ IDEA 2019.1

    En la versión 2019.1, el IDE principal de Android Studio se actualizó con mejoras de IntelliJ IDEA, como la personalización del tema.

    La última versión de IntelliJ que se incluyó con Android Studio fue la 2018.3.4. Para obtener más información sobre las mejoras de otras versiones de IntelliJ que se incluyen de manera acumulativa con esta versión de Android Studio, consulta las siguientes actualizaciones de corrección de errores:

    Actualizaciones del complemento de Android para Gradle 3.5.0

    Para obtener información sobre las novedades del complemento de Android para Gradle 3.5.0, como la compatibilidad mejorada del procesamiento de anotaciones incrementales y las pruebas de unidades que se pueden almacenar en la memoria caché, consulta las notas de la versión.

    Colaboradores de la comunidad

    Gracias a todos los colaboradores de la comunidad que nos ayudaron a descubrir errores y otras formas de mejorar Android Studio 3.5. En particular, queremos agradecerles a las siguientes personas que informaron errores P0 y P1:

    3.4 (abril de 2019)

    Android Studio 3.4 es una actualización importante que incluye una variedad de nuevas características y mejoras.

    3.4.2 (julio de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    3.4.1 (mayo de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    Errores conocidos de la versión 3.4.0

    • Se inhabilita la generación de perfiles cuando se implementa la app en un dispositivo con Android Q Beta.

    • Cuando se usa la biblioteca de vinculación de datos, LiveDataListener.onChanged() puede fallar con una NPE. Se incluirá una corrección para este problema en Android Studio 3.4.1 y ya está disponible en la versión preliminar más reciente de Android Studio 3.5 (consulta el error 122066788).

    IntelliJ IDEA 2018.3.4

    Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA mediante la versión 2018.3.4.

    Actualizaciones del complemento de Android para Gradle 3.4.0

    Si quieres obtener información sobre las novedades del complemento de Android para Gradle 3.4.0, consulta las notas de la versión.

    Nuevo Diálogo de estructura del proyecto

    El nuevo Diálogo de estructura del proyecto (PSD) facilita la actualización de dependencias y la configuración de diferentes aspectos del proyecto, como los módulos, las variantes de compilación, las configuraciones de firma y las variables de compilación.

    Puedes abrir el PSD seleccionando File > Project Structure en la barra de menú. También puedes abrir el PSD presionando Ctrl+Shift+Alt+S en Windows y Linux, o Command+; (punto y coma) en macOS. A continuación, encontrarás descripciones de algunas de las secciones nuevas y actualizadas del PSD.

    Variables

    La nueva sección de variables del PSD permite crear y administrar variables de compilación, como aquellas que posibilitan mantener la coherencia de los números de versión de las dependencias en todo el proyecto.

    • Consulta y edita de manera rápida las variables de compilación que ya existen en las secuencias de comandos de compilación de Gradle de tu proyecto.
    • Agrega nuevas variables de compilación en el nivel del proyecto o módulo directamente desde el PSD.

    Nota: Si los archivos de configuración de compilación existentes asignan valores a través de secuencias de comandos complejas de Groovy, es posible que no puedas editar esos valores mediante el PSD. Además, no puedes editar archivos de compilación escritos en Kotlin con el PSD.

    Módulos

    Configura las propiedades que se aplican a todas las variantes de compilación en un módulo existente o agrega nuevos módulos al proyecto desde la sección Modules. Por ejemplo, aquí puedes configurar las propiedades de defaultConfig o administrar las configuraciones de firma.

    Dependencias

    Sigue estos pasos para inspeccionar y visualizar cada dependencia en el gráfico de dependencias del proyecto, tal como lo resolvió Gradle durante la sincronización del proyecto:

    1. En el panel izquierdo del PSD, selecciona Dependencies.
    2. En el panel Modules, selecciona el módulo que contenga las dependencias resueltas que quieras inspeccionar.
    3. A la derecha del PSD, abre el panel Resolved Dependencies (que se muestra a continuación).

    También puedes buscar y agregar con rapidez dependencias a un proyecto. Para hacerlo, selecciona primero un módulo en la sección Dependencies del PSD, haz clic en el botón (+) en la sección Declared Dependencies y selecciona el tipo de dependencia que quieras agregar.

    Según el tipo de dependencia que selecciones, debería aparecer un cuadro de diálogo similar al siguiente para que puedas agregar la dependencia al módulo.

    Variantes de compilación

    En esta sección del PSD, puedes crear y configurar variantes de compilación y de productos para cada módulo del proyecto. Puedes agregar marcadores de posición de manifiesto y archivos ProGuard, asignar claves de firma y mucho más.

    Sugerencias

    En la sección Suggestions, que se muestra a continuación, puedes consultar actualizaciones recomendadas para las dependencias del proyecto y las variables de compilación.

    Nuevo administrador de recursos

    El administrador de recursos es una nueva ventana de herramientas para importar, crear, administrar y usar recursos en tu app. Para abrir la ventana de herramientas, selecciona View > Tool Windows > Resource Manager en la barra de menú. El administrador de recursos permite hacer lo siguiente:

    • Visualizar recursos: Puedes obtener una vista previa de elementos de diseño, colores y diseños para encontrar rápidamente los recursos que necesitas.
    • Importar de forma masiva: Puedes importar varios elementos de diseño a la vez arrastrándolos y soltándolos en la ventana de herramientas de Resource Manager o utilizando el asistente Import Drawables. Para acceder al asistente, selecciona el botón (+) en la esquina superior izquierda de la ventana de herramientas y elige Import Drawables en el menú desplegable.
    • Convertir SVG en objetos VectorDrawable: Puedes usar el asistente Import Drawables para convertir las imágenes SVG en objetos VectorDrawable.
    • Arrastrar y soltar recursos: Desde la ventana de herramientas de Resource Manager, puedes arrastrar y soltar elementos de diseño en las vistas de diseño y XML del editor de diseño.
    • Ver versiones alternativas: Ahora, puedes ver versiones alternativas de los recursos haciendo doble clic en un recurso dentro de la ventana Tool. Esta vista permite ver las diferentes versiones que creaste y los calificadores que se incluyeron.
    • Vistas de mosaico y de lista: Puedes cambiar la vista dentro de la ventana de herramientas para visualizar los recursos de manera distinta.

    Si deseas obtener más información, consulta la guía para administrar los recursos de la app.

    Comprobación de los IDs de compilación a la hora de generar perfiles y depurar APKs

    Cuando incluyes en tu APK archivos de símbolos de depuración para las bibliotecas compartidas .so, Android Studio comprueba que el ID de compilación de dichos archivos coincida con el de las bibliotecas .so dentro del APK.

    Si compilas las bibliotecas nativas de tu APK con un ID de compilación, Android Studio comprobará que ese ID de los archivos de símbolos coincida con el de compilación de las bibliotecas nativas y rechazará los archivos de símbolos que no lo hagan. Si no usas un ID de compilación en el proceso, es posible que ocurran problemas de depuración si proporcionas archivos de símbolos incorrectos.

    R8 habilitada de forma predeterminada

    R8 integra en un solo paso los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX, lo que mejora notablemente el rendimiento de las compilaciones. R8 se presentó en el complemento de Android para Gradle 3.3.0 y ahora está habilitada de forma predeterminada para proyectos de bibliotecas de apps y Android que utilicen el complemento 3.4.0 y versiones posteriores.

    En la siguiente imagen, se proporciona una descripción general del proceso de compilación antes de la incorporación de R8.

    Antes de R8, ProGuard era un paso de compilación independiente de la conversión a DEX y la expansión de sintaxis.

    Con R8, ahora los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX (D8) se completan en un único paso, como se muestra a continuación.

    Con R8, la eliminación de accesos directos, la reducción, la ofuscación, la optimización y la conversión a DEX se llevan a cabo en un único paso de compilación.

    Ten en cuenta que R8 se diseñó para trabajar con las reglas de ProGuard existentes, de modo que es probable que R8 funcione como corresponde sin necesidad de que realices ninguna acción. Sin embargo, dado que se trata de una tecnología diferente a la de ProGuard, diseñada específicamente para proyectos de Android, es posible que durante la reducción y la optimización se quite código que ProGuard no quitaría. Por lo tanto, en esta situación poco probable, quizás debas agregar reglas adicionales para mantener ese código en el resultado de la compilación.

    Si tienes inconvenientes con el uso de R8, consulta las Preguntas frecuentes sobre la compatibilidad de R8 para comprobar si hay una solución a tu problema. Si no la hay, informa el error. Para inhabilitar R8, agrega una de las siguientes líneas al archivo gradle.properties de tu proyecto:

        # Disables R8 for Android Library modules only.
        android.enableR8.libraries = false
        # Disables R8 for all modules.
        android.enableR8 = false
        
      

    Nota: Para un tipo de compilación determinado, si configuras useProguard en false en el archivo build.gradle del módulo de la app, el complemento de Android para Gradle usará R8 a fin de reducir el código de la app para ese tipo de compilación, independientemente de si inhabilitas R8 en el archivo gradle.properties del proyecto.

    Todos los tipos de argumentos que admite el componente Navigation ahora se admiten en el editor de Navigation. Si deseas obtener más información sobre qué tipos se admiten, consulta Cómo pasar datos entre destinos.

    Mejoras en el editor de diseño {:#layout-editor}

    El panel Attributes en el editor de diseño se simplificó en una sola página con secciones que se expanden para ver los atributos que puedes configurar. El panel Attributes también incluye las siguientes actualizaciones:

    • Una nueva sección llamada Declared Attributes que incluye los atributos que especifica el archivo de diseño y permite agregar rápidamente otros nuevos.
    • El panel Attributes ahora también presenta indicadores junto a cada atributo que están rellenos cuando el valor del atributo es una referencia de recursos y vacíos en los demás casos.
    • Los atributos con errores o advertencias ahora están resaltados en rojo si tienen errores (por ejemplo, cuando usas valores de diseño no válidos) y en naranja si hay advertencias (por ejemplo, cuando usas valores hard-coded).

    Nueva acción de intent para importar dependencias rápidamente

    Si comienzas a usar ciertas clases de Jetpack y Firebase en tu código, una nueva acción de intent sugiere agregar la dependencia de la biblioteca de Gradle requerida a tu proyecto si todavía no lo hiciste. Por ejemplo, si incluyes una referencia a la clase WorkManager sin importar antes la dependencia android.arch.work:work-runtime requerida, una acción de intent te permite hacerlo con facilidad con un solo clic, tal como se muestra a continuación.

    Más específicamente, debido a que Jetpack modificó y volvió a empaquetar la biblioteca de compatibilidad en paquetes discretos que son más fáciles de administrar y actualizar, esta acción de intent te ayuda a agregar de manera rápida solo las dependencias que necesitas para los componentes de Jetpack que quieres usar.

    3.3 (enero de 2019)

    Android Studio 3.3 es una actualización importante que incluye una variedad de funciones y mejoras nuevas.

    3.3.2 (marzo de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    3.3.1 (febrero de 2019)

    Esta actualización menor incluye diversas correcciones de errores y mejoras de rendimiento.

    IntelliJ IDEA 2018.2.2

    Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA mediante la versión 2018.2.2.

    Actualizaciones del complemento de Android para Gradle

    Si quieres obtener información sobre las novedades del complemento de Android para Gradle, consulta las notas de la versión.

    El editor de navegación permite visualizar y compilar la navegación con rapidez en tu app mediante el componente de arquitectura de Navigation.

    Para obtener más información, consulta Cómo implementar navegaciones con el componente de arquitectura de Navigation.

    Cómo borrar directorios de Android Studio sin usar

    Cuando ejecutas una versión principal de Android Studio por primera vez, esta busca directorios que contengan cachés, parámetros de configuración, índices y registros de versiones de Android Studio de las que no se pueda encontrar la instalación correspondiente. En el cuadro de diálogo Delete Unused Android Studio Directories, se muestran ubicaciones, tamaños y horas de última modificación de estos directorios sin usar, y, además, se ofrece la opción de borrarlos.

    Los directorios que Android Studio tiene en cuenta para su eliminación son los siguientes:

    • Linux: ~/.AndroidStudio[Preview]X.Y
    • Mac: ~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]X.Y
    • Windows: %USER%.AndroidStudio[Preview]X.Y

    Mejoras de lint

    Cuando se invoca lint desde Gradle, funciona mucho más rápido. Se prevé un rendimiento cuatro veces superior de lint en los proyectos más grandes.

    Asistente Create New Project

    El asistente Create New Project tiene un nuevo aspecto, además de actualizaciones que ayudan a simplificar la creación de proyectos de Android Studio nuevos.

    Para obtener más información, consulta Cómo crear un proyecto.

    Actualizaciones del generador de perfiles

    Android Studio 3.3 incluye actualizaciones para varios de los generadores de perfiles individuales.

    Mejor rendimiento

    Sobre la base de los comentarios de los usuarios, se mejoró ampliamente el rendimiento de renderización cuando se usan los generadores de perfiles. Sigue enviando comentarios, en especial, si observas problemas de rendimiento.

    Opciones de seguimiento de la asignación de memoria del generador de perfiles

    Para mejorar el rendimiento de la app durante la generación de perfiles, el Generador de perfiles de memoria ahora muestra, de forma predeterminada, las asignaciones de memoria periódicamente. Si lo deseas, puedes cambiar este comportamiento en el menú desplegable Allocation Tracking cuando realices pruebas en dispositivos con Android 8.0 (nivel de API 26) o versiones posteriores.

    En el menú desplegable Allocation Tracking, puedes elegir uno de los siguientes modos:

    • Full: Captura todas las asignaciones de memoria de objetos. Ten en cuenta que, si tu app asigna una gran cantidad de objetos, es posible que se produzcan importantes problemas de rendimiento durante la generación de perfiles.

    • Sampled: captura una muestra periódica de las asignaciones de memoria de objetos. Este es el comportamiento predeterminado y tiene menos impacto en el rendimiento de la app durante la generación de perfiles. Puedes observar algunos problemas de rendimiento con apps que asignen muchos objetos en poco tiempo.

    • Off: desactiva la asignación de memoria. Si aún no está seleccionado, este modo se habilita automáticamente mientras se registra la actividad de una CPU y vuelve a la configuración anterior cuando finaliza el registro. Puedes cambiar este comportamiento en el diálogo de configuración de registro de la CPU.

      El seguimiento afecta a los objetos Java y a las referencias JNI.

    Cómo inspeccionar datos de renderización de fotogramas

    En el Generador de perfiles de CPU, puedes inspeccionar cuánto tiempo le toma a tu app de Java renderizar cada fotograma del subproceso de IU y de RenderThread. Estos datos pueden resultar útiles a fin de investigar los cuellos de botella que causan el bloqueo de la IU y una baja velocidad de fotogramas. Por ejemplo, cada fotograma que tarda más de los 16 ms necesarios para mantener una velocidad de fotogramas fluida se muestra en rojo.

    Si deseas ver los datos de renderización de fotogramas, registra un seguimiento utilizando la configuración Trace System Calls. Después de registrar el seguimiento, busca información sobre cada fotograma debajo de la sección FRAMES, como se muestra a continuación.

    Si deseas obtener más información para investigar y solucionar problemas de velocidad de fotogramas, consulta Renderización lenta.

    Fragmentos en el cronograma del evento

    El cronograma del evento ahora muestra cuándo se adjuntan y separan fragmentos. Además, cuando colocas el cursor sobre un fragmento, un cuadro de información te muestra su estado.

    Cómo visualizar texto con formato en las cargas útiles de conexión del Generador de perfiles de red

    Anteriormente, en el Generador de perfiles de red, solo era posible ver texto sin formato de las cargas útiles de conexión. Ahora, Android Studio 3.3 formatea ciertos tipos de texto de forma predeterminada, como JSON, XML y HTML. En las pestañas Respuesta y Request, haz clic en el vínculo Ver datos analizados para mostrar el texto con formato y en View Source para mostrar el que no lo tiene.

    Si deseas obtener más información, consulta Cómo inspeccionar el tráfico de red con el Generador de perfiles de red.

    Descarga automática de componentes del SDK

    Cuando necesites un componente del SDK de las plataformas SDK, NDK o CMake para tu proyecto, Gradle ahora intenta descargar automáticamente los paquetes necesarios, siempre y cuando hayas aceptado previamente los contratos de licencia relacionados usando SDK Manager.

    Si deseas obtener más información, consulta Cómo descargar automáticamente los paquetes que faltan con Gradle.

    Compatibilidad con Clang-Tidy

    Android Studio ahora es compatible con análisis de código estático mediante Clang-Tidy para proyectos que incluyen código nativo. Si quieres habilitar la compatibilidad con Clang-Tidy, actualiza tu NDK a la versión r18 o una posterior.

    Luego, puedes habilitar o volver a habilitar las inspecciones abriendo el diálogo Settings o Preferences y navegando a Editor > Inspections > C/C++ > General > Clang-Tidy. Cuando se selecciona esta inspección en el cuadro de diálogo Settings o Preferences, también puedes ver la lista de verificaciones de Clang-Tidy que están habilitadas e inhabilitadas en la sección Option del panel de la derecha. Para habilitar verificaciones adicionales, agrégalas a la lista y haz clic en Apply.

    Si deseas configurar Clang-Tidy con opciones adicionales, haz clic en Configure Clang-Tidy Checks Options y agrégalas al diálogo que aparezca.

    Eliminación de opciones para la personalización de C++

    Se quitaron las siguientes opciones del diálogo de Customize C++ Support:

    • Compatibilidad con excepciones (-fexceptions)
    • Compatibilidad con información del tipo de tiempo de ejecución (-ftti)

    Los comportamientos correspondientes están habilitados para todos los proyectos que se crean con Android Studio.

    CMake versión 3.10.2

    La versión 3.10.2 de CMake ahora se incluye con SDK Manager. Ten en cuenta que Gradle todavía usa la versión 3.6.0 de forma predeterminada.

    Si quieres especificar una versión de CMake para que use Gradle, agrega lo siguiente al archivo build.gradle de tu módulo:

        android {
            ...
            externalNativeBuild {
                cmake {
                    ...
                    version "3.10.2"
                }
            }
        }
        
      

    Si deseas obtener más información a fin de configurar CMake en build.gradle, consulta Cómo configurar Gradle manualmente.

    Nueva sintaxis "+" para especificar versiones mínimas de CMake

    Cuando se especifica una versión de CMake en el archivo build.gradle de tu módulo principal, ahora puedes agregar un "+" de modo que coincida con el comportamiento del comando cmake_minimum_required() de CMake.

    Precaución: Se desaconseja el uso de la sintaxis "+" con otras dependencias de compilación, ya que las dependencias dinámicas pueden generar actualizaciones inesperadas de versiones y dificultades a la hora de resolver las diferencias de versión.

    Los paquetes Android App Bundle ahora son compatibles con Apps instantáneas

    Ahora, Android Studio permite compilar paquetes Android App Bundle totalmente compatibles con Google Play Instant. En otras palabras, ahora puedes compilar e implementar apps instaladas y experiencias instantáneas desde un solo proyecto de Android Studio e incluirlas en un solo paquete Android App Bundle.

    Si estás creando un nuevo proyecto de Android Studio mediante el diálogo Create New Project, asegúrate de marcar la casilla junto a Configure your project > This project will support instant apps. Luego, Android Studio crea un nuevo proyecto de app como lo haría con normalidad, pero incluye las siguientes propiedades en el manifiesto a fin de agregar compatibilidad con apps instantáneas al módulo básico de la app:

        <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
            <dist:module dist:instant="true" />
            ...
        </manifest>
        
      

    Después, puedes crear un módulo de funciones habilitadas instantáneamente. Para ello, selecciona File > New > New Module en la barra de menú y elige Instant Dynamic Feature Module en el diálogo Create New Module. Ten en cuenta que crear este módulo también habilita instantáneamente el módulo básico de la app.

    Si deseas implementar tu app en un dispositivo local como experiencia instantánea, edita la configuración de ejecución y marca la casilla junto a General > Deploy as instant app.

    Sincronización de proyectos con una sola variante

    Sincronizar tu proyecto con la configuración de compilación es un paso importante para que Android Studio pueda comprender la manera en que está estructurado tu proyecto. Sin embargo, en el caso de proyectos grandes, el proceso puede demorar mucho. Si tu proyecto usa múltiples variantes de compilación, ahora puedes optimizar las sincronizaciones del proyecto limitándolas solo a la variante que hayas seleccionado.

    Para habilitar esta optimización, debes usar Android Studio 3.3 o una versión posterior con el complemento de Android para Gradle 3.3.0 o una versión posterior. Cuando cumples con esos requisitos, el IDE te solicita que habilites la optimización al momento de sincronizar el proyecto. La optimización también está habilitada de forma predeterminada en proyectos nuevos.

    Para habilitarla manualmente, haz clic en File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle en Mac) y selecciona la casilla de verificación Only sync the active variant.

    Nota: Por el momento, esta optimización admite proyectos que solo incluyen el lenguaje de programación Java. Si, por ejemplo, el IDE detecta código Kotlin o C++ en el proyecto, no habilitará automáticamente esta optimización, y tú no deberás hacerlo de forma manual.

    Para obtener más información, consulta Cómo habilitar la sincronización de proyectos con una sola variante.

    Cómo enviar comentarios rápidos

    Si habilitaste la opción para compartir estadísticas de uso a fin de ayudar a mejorar Android Studio, verás estos dos íconos nuevos en la barra de estado, en la parte inferior de la ventana del IDE:

    Haz clic en el ícono que mejor represente tu experiencia actual con el IDE. Cuando lo hagas, el IDE enviará estadísticas de uso que permitan al equipo de Android Studio comprender mejor tu opinión. En algunos casos, por ejemplo, cuando indiques que tuviste una experiencia negativa con el IDE, podrás proporcionar más comentarios.

    Si aún no lo hiciste, habilita las estadísticas de uso. Para ello, abre el diálogo Settings (Preferences en Mac), navega hasta la opción Appearance & Behavior > System Settings > Data Sharing y marca Send usage statistics to Google.

    3.2 (septiembre de 2018)

    Android Studio 3.2 es una actualización importante que incluye varias funciones y mejoras nuevas.

    3.2.1 (octubre de 2018)

    Esta actualización de Android Studio 3.2 incluye los cambios y las correcciones que figuran a continuación:

    • La versión de Kotlin del paquete ahora es 1.2.71.
    • La versión predeterminada de las herramientas de compilación ahora es 28.0.3.
    • En la biblioteca de navegación, se cambiaron los nombres de los tipos de argumentos de type a argType.
    • Se corrigieron los siguientes errores:
      • Cuando se usaba la biblioteca de vinculación de datos, los nombres de variables con guiones bajos causaban errores de compilación.
      • CMake causaba errores en IntelliSense y otras funciones de CLion.
      • Agregar un SliceProvider causaba errores de compilación en proyectos que no usaban bibliotecas androidx.*.
      • Algunas pruebas de unidades Kotlin no se ejecutaban.
      • Un problema con la vinculación de datos causaba una PsiInvalidElementAccessException.
      • Los elementos <merge> causaban fallas ocasionales en el editor de diseño.

    Problemas conocidos de la versión 3.2.0

    Nota: Estos problemas se resolvieron en Android Studio 3.2.1

    • Recomendamos encarecidamente no usar la versión 1.2.70 de Kotlin.

      La versión 1.2.61 corrige un error que puede hacer que Android Studio se bloquee, pero Kotlin 1.2.70 no incluye esta solución.

      Sin embargo, las versiones de Kotlin 1.2.71 y posteriores incluyen esta solución.

    • Aunque normalmente no necesitas especificar la versión de las herramientas de compilación, cuando usas el complemento de Gradle para Android 3.2.0 con renderscriptSupportModeEnabled establecido en true, debes incluir lo siguiente en el archivo build.gradle de cada módulo:

      android.buildToolsVersion "28.0.3"

    Novedades del Asistente

    Un nuevo asistente te informa los cambios más recientes en Android Studio.

    El asistente se abre cuando inicias Android Studio o después de una instalación reciente si detecta que hay información nueva para mostrar. También puedes abrir el asistente en Help > What's new in Android Studio.

    Android Jetpack

    Android Jetpack ayuda a acelerar el desarrollo en Android con componentes, herramientas y pautas que eliminan las tareas repetitivas y permiten compilar de manera más rápida y simple apps de alta calidad que pueden probarse. Android Studio incluye las siguientes actualizaciones para admitir Jetpack. Si deseas obtener más información, consulta la documentación de Jetpack.

    El nuevo editor de navegación se integra con los componentes de navegación de Android Jetpack para proporcionar una vista gráfica que permita crear la estructura de navegación de tu app. El editor de navegación simplifica el diseño y la implementación de la navegación entre destinos dentro de la app.

    En Android Studio 3.2, el editor de navegación es una función experimental. Para habilitarlo, haz clic en File > Settings (Android Studio > Preferences en Mac), selecciona la categoría Experimental en el panel de la izquierda, marca la casilla junto a la opción Enable Navigation Editor y reinicia Android Studio.

    Si deseas obtener más información, consulta la documentación del editor de navegación.

    Migración de AndroidX

    Como parte de Jetpack, estamos migrando las bibliotecas de compatibilidad de Android a una nueva biblioteca de extensiones con el espacio de nombres androidx. Para obtener más información, consulta la descripción general de AndroidX.

    Android Studio 3.2 te ayuda en este proceso con una nueva función de migración.

    Para migrar un proyecto existente a AndroidX, elige Refactor > Migrate to AndroidX. Si tienes dependencias de Maven que no se migraron al espacio de nombres de AndroidX, el sistema de compilación de Android Studio también convierte automáticamente esas dependencias de proyecto.

    El complemento de Android para Gradle proporciona las siguientes marcas globales que puedes configurar en el archivo gradle.properties:

    • android.useAndroidX: Cuando se establece en true, esta marca indica que deseas comenzar a usar AndroidX a partir de este momento. Si no hay ninguna marca, Android Studio se comporta como si una se hubiera establecido en false.
    • android.enableJetifier: Cuando se establece en true, esta marca indica que deseas tener compatibilidad con herramientas (desde el complemento de Android para Gradle) a fin de convertir automáticamente las bibliotecas de terceros existentes como si estuvieran escritas para AndroidX. Si no hay ninguna marca, Android Studio se comporta como si una se hubiera establecido en false.

    Las dos marcas están configuradas en true cuando se usa el comando Migrate to AndroidX.

    Si quieres comenzar a usar las bibliotecas de AndroidX de inmediato y no necesitas convertir bibliotecas de terceros existentes, puedes establecer la marca android.useAndroidX en true y la marca android.enableJetifier en false.

    Android App Bundle

    Android App Bundle es un nuevo formato de carga que incluye todos los recursos y el código compilado de tu app, pero delega la generación del APK y la firma a Google Play Store.

    El nuevo modelo de entrega de apps de Google Play usa tu paquete de aplicación a fin de generar y entregar APK optimizados para la configuración del dispositivo de cada usuario, de manera que solo descarguen el código y los recursos necesarios para ejecutar la app. Ya no tendrás que compilar, firmar ni administrar múltiples APK, y los usuarios podrán realizar descargas más pequeñas y optimizadas.

    Además, puedes agregar módulos de funciones a tu proyecto de app e incluirlos en el paquete de aplicación. Luego, los usuarios pueden descargar e instalar las funciones de la app a pedido.

    Para crear un paquete, selecciona Build > Build Bundle(s) / APK(s) > Build Bundle(s).

    Para obtener más información, incluidas las instrucciones para compilar y analizar un Android App Bundle, consulta Android App Bundle.

    Datos de muestra en el editor de diseño

    Muchos diseños de Android incluyen datos de tiempo de ejecución que pueden dificultar la visualización de la apariencia del diseño durante el desarrollo de apps. Ahora, puedes obtener fácilmente una vista previa en el editor de diseño junto con datos de muestra. Cuando agregas una vista, aparece el botón debajo de ella en la ventana de diseño. Haz clic en este botón para configurar los atributos de vista de diseño. Puedes elegir entre una variedad de plantillas de datos de muestra y especificar la cantidad de elementos de muestra para propagar la vista.

    Para intentar usar datos de muestra, agrega un elemento RecyclerView a un nuevo diseño, haz clic en el botón de los atributos de diseño debajo de la vista y elige una selección en el carrusel de plantillas de datos de muestra.

    Slices

    Las Slices proporcionan una nueva manera de incorporar partes de la funcionalidad de tu app a otras superficies de interfaz de usuario en Android. Por ejemplo, las Slices pueden hacer que sea posible mostrar la funcionalidad y el contenido de la app en sugerencias de la Búsqueda de Google.

    Android Studio 3.2 tiene una plantilla integrada que te ayudará a extender tu app con las nuevas APIs de Slice Provider, además de la posibilidad de realizar comprobaciones de lint para asegurarte de estar siguiendo las prácticas recomendadas para construir Slices.

    Para comenzar, haz clic con el botón derecho en la carpeta de un proyecto y selecciona New > Other > Slice Provider.

    Para obtener más información, incluida la forma de probar las interacciones de las Slices, consulta la Guía de introducción a las Slices.

    Kotlin 1.2.61

    Android Studio 3.2 incluye Kotlin 1.2.61, y el nuevo SDK de Android se integra mejor con Kotlin. Para obtener más información, consulta el blog para desarrolladores de Android.

    IntelliJ IDEA 2018.1.6

    Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA con la actualización 2018.1.6.

    Generadores de perfiles de Android

    Prueba las siguientes funciones nuevas de Android Profiler en Android Studio 3.2.

    Sesiones

    Ahora, puedes guardar los datos del generador de perfiles como sesiones para volver a visitarlas y revisarlas en otro momento. Recuerda que el generador de perfiles conserva los datos de sesión hasta que reinicias el IDE.

    Cuando registras un seguimiento de método o capturas un volcado de montón, el IDE agrega esos datos (junto con la actividad de red de la app) como una entrada independiente de la sesión actual, y puedes ir y volver fácilmente entre registros con el fin de comparar datos.

    Registro del sistema

    En el Generador de perfiles de CPU, selecciona la nueva configuración de registro del sistema a los efectos de inspeccionar la CPU del sistema del dispositivo y la actividad de subprocesos. Esta configuración de registro se compila en systrace y sirve para investigar los problemas del sistema, como los bloqueos de IU.

    Cuando usas esta configuración de registro, puedes marcar visualmente rutinas de código importantes en el cronograma del generador de perfiles mediante la instrumentación del código C/C++ con la API nativa de registros o del código Java con la clase Trace.

    Cómo inspeccionar referencias de JNI en el Generador de perfiles de memoria

    Si implementas tu app en un dispositivo que ejecuta Android 8.0 (nivel de API 26) o una versión posterior, ahora puedes inspeccionar asignaciones de memoria del código JNI de la app mediante el Generador de perfiles de memoria.

    Mientras se esté ejecutando la app, selecciona una parte del cronograma que quieras inspeccionar y elige JNI heap en el menú desplegable de la parte superior de la lista de clases, como se muestra más abajo. Podrás inspeccionar los objetos de la pila como lo harías normalmente y hacer doble clic en ellos en la pestaña Allocation Call Stack para ver dónde se asignan y publican las referencias de JNI en tu código.

    Cómo importar, exportar e inspeccionar archivos de volcado de montón de la memoria

    Ahora, puedes importar, exportar e inspeccionar archivos .hprof de volcado de montón de la memoria creados con el Generador de perfiles de memoria.

    Para importar el archivo .hprof, haz clic en Start new profiler session en el panel Sessions del generador de perfiles y selecciona Load from file. Luego, podrás inspeccionar los datos en el Generador de perfiles de memoria, como lo harías con cualquier otro volcado de montón.

    Si quieres guardar los datos de volcado de montón a fin de revisarlos luego, usa el botón Export Heap Dump, que está a la derecha de la entrada Heap Dump en el panel Sessions. En el diálogo Export As, guarda el archivo con la extensión de nombre de archivo .hprof.

    Cómo registrar la actividad de la CPU durante el inicio de una app

    Ahora, puedes registrar la actividad de la CPU durante el inicio de tu app de la siguiente manera:

    1. Selecciona Run > Edit Configurations en el menú principal.
    2. En la pestaña Profiling de la configuración de ejecución deseada, marca la casilla junto a la opción Start recording a method trace on startup.
    3. Selecciona una configuración de registro de CPU para usarla en el menú desplegable.
    4. Implementa tu app en un dispositivo que ejecute Android 8.0 (nivel de API 26) o una versión posterior seleccionando Run > Profile.
    Cómo exportar registros de CPU

    Después de registrar la actividad de la CPU con el Generador de perfiles correspondiente, puedes exportar los datos como un archivo .trace a fin de compartirlos con otras personas o inspeccionarlos más tarde.

    Para exportar un registro después de haber registrado la actividad de la CPU, sigue estos pasos:

    1. Haz clic con el botón derecho en el registro que quieras exportar del cronograma de la CPU.
    2. Selecciona la opción Export trace del menú desplegable.
    3. Navega hasta donde quieras guardar el archivo y haz clic en Save.
    Cómo importar e inspeccionar archivos de registro de la CPU

    Ahora, puedes importar e inspeccionar archivos .trace creados con la API de depuración o el Generador de perfiles de CPU. Por el momento, no es posible importar registros del sistema.

    Para importar el archivo de registro, haz clic en Start new profiler session en el panel Sessions del generador de perfiles y selecciona Load from file. Luego, podrás inspeccionar los datos en el Generador de perfiles de CPU como lo harías normalmente, con las siguientes excepciones:

    • La actividad de la CPU no está representada en el cronograma de la CPU.
    • El cronograma de actividades de subprocesos indica solo cuando hay datos de seguimiento disponibles para cada subproceso y no los estados reales de esos subprocesos (como en ejecución, en espera o suspendido).
    Cómo registrar la actividad de la CPU con la API de depuración

    Ahora puedes iniciar y detener el registro de la actividad de la CPU en el Generador de perfiles de CPU mediante la instrumentación de tu app con la API de depuración. Después de implementar tu app en un dispositivo, el generador de perfiles comienza a registrar automáticamente la actividad de la CPU cuando la app llama a startMethodTracing(String tracePath) y deja de hacerlo cuando la app llama a stopMethodTracing(). Mientras se registra la actividad de la CPU que se activa con esta API, el Generador de perfiles de CPU muestra la API de Debug como la configuración de registro de CPU seleccionada.

    Generador de perfiles de energía

    En el Generador de perfiles de energía, se visualiza el uso de energía estimado de tu app y los eventos del sistema que afectan dicho uso, como los bloqueos de activación, las alarmas y los trabajos.

    Esta herramienta aparece como una nueva fila en la parte inferior de la ventana Profiler cuando ejecutas tu app en un dispositivo conectado o en Android Emulator con Android 8.0 (nivel de API 26) o una versión posterior.

    Haz clic en la fila Energy para maximizar la vista del Generador de perfiles de energía. Coloca el puntero del mouse sobre una barra del cronograma a fin de ver un desglose del uso de energía de la CPU, la red y los recursos de ubicación (GPS), además de eventos del sistema relevantes.

    Los eventos del sistema que afectan el uso de energía se indican en el cronograma de System debajo del cronograma de Energy. Los detalles de los eventos del sistema dentro del intervalo de tiempo especificado aparecen en el panel de eventos cuando seleccionas un intervalo en el cronograma de Energy.

    Selecciona un evento del sistema (por ejemplo, un bloqueo de activación) en el panel de eventos para ver la pila de llamadas y otros detalles. A fin de dirigirte al código responsable de un evento del sistema, haz doble clic en la entrada correspondiente de la pila de llamadas.

    Comprobación de lint

    Android Studio 3.2 incluye muchas funciones nuevas y mejoradas para la comprobación de lint.

    Las nuevas comprobaciones de lint te ayudan a encontrar e identificar problemas comunes de código, que van desde advertencias sobre posibles problemas de usabilidad hasta errores de prioridad alta relativos a vulnerabilidades de seguridad potenciales.

    Comprobaciones de lint con respecto a la interoperabilidad de Java/Kotlin

    Para asegurarte de que tu código Java interopere de manera correcta con el código Kotlin, las nuevas comprobaciones de lint aplican las prácticas recomendadas que se describen en la Guía de interoperabilidad de Kotlin. Ejemplos de estas comprobaciones incluyen la búsqueda de anotaciones de nulabilidad, el uso de palabras clave fijas de Kotlin y la ubicación de parámetros lambda al final.

    Si deseas habilitar estas comprobaciones, haz clic en File > Settings (Android Studio > Preferences en Mac) a fin de abrir el diálogo Settings, ve a la sección Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability y selecciona las reglas que quieras habilitar.

    Para habilitar estas verificaciones desde las compilaciones de línea de comandos, agrega lo siguiente en tu archivo build.gradle:

            android {
                lintOptions {
                    check 'Interoperability'
                }
            }
            
          
    Comprobaciones de lint para Slices

    Con las nuevas comprobaciones de lint para Slices, podrás asegurarte de crear Slices correctamente. Por ejemplo, entre otros aspectos, te advierten si no asignaste una acción primaria a una Slice.

    Nueva orientación de Gradle

    Usa la nueva tarea lintFix de Gradle para aplicar todas las sugerencias de corrección seguras mediante la comprobación de lint directamente en el código fuente. Un ejemplo de comprobación de lint que sugiere que se aplique una corrección segura es SyntheticAccessor.

    Actualizaciones de metadatos

    Se actualizaron diversos metadatos para las comprobaciones de lint, como las comprobaciones de transmisión de servicio, a fin de que funcionen con Android 9 (nivel de API 28).

    Advertencia si se ejecuta lint en una variante nueva

    Lint ahora registra con qué variante y versión se registra un modelo de referencia y te advierte si lo ejecutas en una variante diferente a la que se usó para crear dicho modelo.

    Mejoras en comprobaciones de lint existentes

    Android Studio 3.2 incluye muchas mejoras a comprobaciones de lint existentes. Por ejemplo, las comprobaciones de ciclo de recursos ahora se aplican a tipos de recursos adicionales, y el detector de traducciones puede encontrar traducciones faltantes de inmediato en el editor.

    IDs de problemas más detectables

    Los IDs de problemas ahora se muestran en más lugares, incluida la ventana Inspection Results. Esto te permite encontrar más fácilmente la información que necesitas para habilitar o inhabilitar comprobaciones específicas mediante lintOptions en build.gradle.

    Si deseas obtener más información, consulta Cómo configurar opciones de lint con Gradle.

    Vinculación de datos V2

    La vinculación de datos V2 ahora está habilitada de forma predeterminada y es compatible con V1. Esto significa que, si tienes dependencias de biblioteca que compilaste con V1, puedes utilizarlas con proyectos que usen la vinculación de datos V2. Sin embargo, ten en cuenta que los proyectos que usan V1 no pueden consumir dependencias compiladas con V2.

    Desugaring en D8

    En Android Studio 3.1, integramos el paso de desugaring a la herramienta D8 como una función experimental, lo que reduce el tiempo de compilación general. En Android Studio 3.2, la función de desugaring con D8 está activada de forma predeterminada.

    Nuevo reductor de código

    R8 es una nueva herramienta que reemplaza a ProGuard en la ofuscación y reducción de código. Puedes comenzar a usar la versión preliminar de R8 si incluyes lo siguiente en el archivo gradle.properties del proyecto:

          android.enableR8 = true
        

    Cambio en las ABI predeterminadas para varios APKs

    Cuando compilas varios APK orientados a una ABI diferente, el complemento ya no genera APK para las siguientes ABI de forma predeterminada: mips, mips64 y armeabi.

    Para compilar un APK que se oriente a estas ABI, usa NDK r16b o una versión anterior, y especifica las ABI en el archivo build.gradle, como se muestra a continuación:

        splits {
            abi {
                include 'armeabi', 'mips', 'mips64'
                ...
            }
        }
        
        splits {
            abi {
                include("armeabi", "mips", "mips64")
                ...
            }
        }
        

    Nota: Este cambio en el comportamiento también se incluye en Android Studio 3.1 RC1 y versiones posteriores.

    Funciones del editor mejoradas para archivos de compilación CMake

    Si usas CMake para agregar código C y C++ a tu proyecto, Android Studio ahora incluye funciones del editor mejoradas que puedes usar para editar secuencias de comandos de compilación de CMake, entre las que se incluyen:

    • Resaltado de sintaxis y sugerencias para completar código: El IDE ahora resalta y muestra sugerencias a fin de completar el código de comandos comunes de CMake. Además, puedes navegar hasta un archivo haciendo clic en él mientras presionas la tecla Ctrl (o Cmd en Mac).
    • Reformateo de código: Ahora, puedes usar la opción para volver a formatear el código de IntelliJ a fin de aplicar estilos de código a tus secuencias de comando de compilación de CMake.
    • Refactorización segura: Las herramientas de refactorización integradas del IDE también comprueban si cambias el nombre de los archivos a los que haces referencia en las secuencias de comandos de compilación de CMake o si borras esos archivos.

    Cuando usabas la ventana Project en versiones anteriores de Android Studio, podías explorar e inspeccionar solo los archivos de encabezados que pertenecían a bibliotecas que creabas desde un proyecto local. Con esta actualización, también puedes ver e inspeccionar archivos de encabezados que se incluyen con dependencias de bibliotecas de C/C++ externas que puedes importar al proyecto de tu app.

    Si ya incluyes código y bibliotecas de C/C++ en tu proyecto, abre la ventana Project a la izquierda del IDE. Para ello, selecciona View > Tool Windows > Project en el menú principal y elige Android en el menú desplegable. En el directorio cpp, todos los encabezados que están dentro del alcance del proyecto de tu app se organizan en el nodo include para cada una de las dependencias de bibliotecas de C/C++, como se muestra a continuación:

    Multidex nativo habilitado de forma predeterminada

    Las versiones anteriores de Android Studio habilitaban multidex nativo cuando se implementaba la versión de depuración de una app en un dispositivo con API de Android nivel 21 o posterior. Ahora, si ejecutas una implementación en un dispositivo o creas un APK para publicar, el complemento Gradle para Android habilita el multidex nativo correspondiente a todos los módulos configurados en minSdkVersion=21 o versiones posteriores.

    Se transfirió AAPT2 al repositorio de Maven de Google

    A partir de Android Studio 3.2, la fuente de AAPT2 (Android Asset Packaging Tool 2) es el repositorio de Maven de Google.

    Para usar AAPT2, asegúrate de tener una dependencia de google() en tu archivo build.gradle, como se muestra a continuación:

        buildscript {
            repositories {
                google() // here
                jcenter()
            }
            dependencies {
                classpath 'com.android.tools.build:gradle:3.2.0'
            }
        }
        allprojects {
            repositories {
                google() // and here
                jcenter()
            }
        }
        
        buildscript {
            repositories {
                google() // here
                jcenter()
            }
            dependencies {
                classpath("com.android.tools.build:gradle:3.2.0")
            }
        }
        allprojects {
            repositories {
                google() // and here
                jcenter()
            }
        }
        

    La nueva versión de AAPT2 corrige muchos problemas, entre los que se incluye la administración mejorada de caracteres no ASCII en Windows.

    Eliminación de la configuración on demand

    Se quitó la preferencia Configure on demand de Android Studio.

    Android Studio ya no pasa el argumento --configure-on-demand a Gradle.

    Asistente de conexión de ADB

    El nuevo Asistente de conexión de ADB proporciona instrucciones paso a paso para ayudarte a configurar y usar un dispositivo en la conexión de Android Debug Bridge (ADB).

    Para iniciar el asistente, selecciona Tools > Connection Assistant.

    El asistente de conexión de ADB proporciona instrucciones, controles en contexto y una lista de dispositivos conectados en una serie de páginas del panel Assistant.

    Mejoras del emulador

    Ahora, puedes guardar y cargar instantáneas de un AVD (dispositivo virtual Android) cuando quieras en el emulador de Android, lo que permite mostrar de forma rápida y sencilla un dispositivo emulado en un estado conocido para pruebas. Cuando editas un AVD con el administrador de AVD, puedes especificar qué instantánea quieres cargar cuando se inicia el dispositivo correspondiente.

    Los controles para guardar, cargar y administrar instantáneas de AVD ahora se encuentran en la pestaña Snapshots de la ventana Extended controls del emulador.

    Para obtener más información, consulta Instantáneas.

    Para obtener información adicional sobre las novedades y los cambios en el emulador, consulta las notas de la versión del emulador.

    3.1 (marzo de 2018)

    Android Studio 3.1.0 es una actualización importante que incluye una variedad de funciones y mejoras nuevas.

    3.1.4 (agosto de 2018)

    Esta actualización de Android Studio 3.1 incluye los cambios y las correcciones que figuran a continuación:

    • La versión de Kotlin del paquete ahora es 1.2.50.
    • Los proyectos nuevos se crean con los kotlin-stdlib-jdk* artifacts, en lugar de los artefactos kotlin-stdlib-jre*, que ya no están disponibles.
    • Se mejoró el análisis de R8 de las reglas de ProGuard.
    • Se corrigieron los siguientes errores:
      • Cuando se intentaba ejecutar la clase principal de Kotlin, el proceso se interrumpía con el error "Error: Could not find or load main class..."
      • R8 ingresaba en un bucle infinito cuando se realizaban determinadas optimizaciones.
      • El uso del comando Rerun failed tests en la ventana Run mostraba de forma incorrecta el mensaje "No tests were found" en algunas ocasiones.
      • D8 no administraba correctamente instancias invoke-virtual, lo que provocaba una falla con el error VerifyError: invoke-super/virtual can't be used on private method
      • El compilador de vinculación de datos dependía de una versión anterior de com.android.tools:annotations. Ahora, usa anotaciones de herramientas del proyecto base cuando están disponibles.
      • Android Studio fallaba durante las transiciones de fragmentos cuando usaba generadores de perfiles.
      • El depurador fallaba cuando se depuraba un diseño con un cuadro de texto.
      • D8 no leía algunos archivos ZIP con caracteres especiales.

    3.1.3 (junio de 2018)

    Esta actualización de Android Studio 3.1 incluye correcciones para los siguientes errores:

    • Las fugas de memoria que hacían que Android Studio se volviera lento y no respondiera después de haber utilizado el editor de diseño. Esta actualización incluye soluciones para la mayoría de estos problemas. Tenemos previsto publicar otra actualización pronto para abordar las demás fugas de memoria.
    • Algunas apps creadas con D8 fallaban en algunas tablets Verizon Ellipsis.
    • La instalación de apps creadas con D8 fallaba con el error INSTALL_FAILED_DEXOPT en dispositivos con Android 5.0 o 5.1 (nivel de API 21 o 22).
    • Algunas apps que utilizaban la biblioteca OkHttp y se habían creado con D8 se bloqueaban en dispositivos con Android 4.4 (nivel de API 19).
    • A veces, Android Studio no se iniciaba y ocurría una ProcessCanceledException durante la inicialización de la clase de com.intellij.psi.jsp.JspElementType.

    3.1.2 (abril de 2018)

    Esta actualización de Android Studio 3.1 incluye correcciones para los siguientes errores:

    • En algunos casos, Android Studio se bloqueaba indefinidamente al salir.
    • Las compilaciones configuradas con conjuntos de fuentes fallaban y aparecía el siguiente mensaje cuando estaba habilitado Instant Run:

      "The SourceSet name is not recognized by the Android Gradle Plugin."

    • Cuando Instant Run estaba habilitado, las compilaciones de nuevos proyectos de Kotlin fallaban cuando se activaban con el comando Run.
    • Durante la edición del archivo build.gradle, a veces ocurría un retraso notable entre el momento de escribir un carácter y el momento en que aparecía en la pantalla.
    • Ocurrían fallas de compilación durante la conversión a DEX en algunos proyectos con un gran número de módulos o dependencias externas, y aparecía el siguiente mensaje de error:

      "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

    • El cálculo de la lista de DEX principal de D8 no tenía en cuenta algunas invocaciones reflexivas.

    Esta actualización también incluye cambios que aceleran notablemente la ejecución de comprobaciones de lint desde Gradle en determinadas situaciones.

    3.1.1 (abril de 2018)

    Esta actualización de Android Studio 3.1 incluye correcciones para los siguientes errores:

    • En algunos casos, cuando un proyecto creado en Android Studio 3.0 se abría por primera vez en Android Studio 3.1, la tarea de creación compatible con Gradle se eliminaba del área Before launch en Run/Debug Configurations. Como resultado, los proyectos no se compilaban cuando se hacía clic en los botones Run o Debug, y esto, a su vez, provocaba fallas como la implementación de APK incorrectos y la aparición de errores cuando se usaba Instant Run.

      Para resolver este problema, Android Studio 3.1.1 agrega la tarea de creación compatible con Gradle a la configuración de ejecución de proyectos a los que les falte esta entrada. Esta modificación se produce después de la primera sincronización de Gradle cuando se carga el proyecto.

    • El depurador fallaba cuando se depuraba un diseño con un cuadro de texto si estaba habilitada la generación de perfiles avanzada.
    • Android Studio dejaba de funcionar después de hacer clic en Build Variants.
    • Los archivos AAR (archivo de Android) se extraían dos veces, una durante el proceso de sincronización de Gradle y otra durante el proceso de compilación de Gradle.
    • Faltaban partes de algunos elementos de diseño vectoriales importados de archivos SVG.
    • Se actualizó la advertencia que indica que dejará de estar disponible la configuración de dependencia compile para incluir pautas más específicas sobre las configuraciones de implementation y api. Para obtener información sobre cómo migrar sin usar la configuración compile, consulta la documentación de las nuevas configuraciones de dependencias.

    Codificación/IDE

    IntelliJ 2017.3.3

    Se actualizó el IDE principal de Android Studio con mejoras de IntelliJ IDEA mediante la versión 2017.3.3. Las mejoras incluyen un análisis optimizado del flujo de control para colecciones y strings, mejor inferencia de nulabilidad, nuevas soluciones rápidas y mucho más.

    Para obtener más información, consulta las notas de la versión de JetBrains correspondientes a las versiones 2017.2 y 2017.3 de IntelliJ IDEA, así como las notas de la versión de JetBrains relativas a las actualizaciones sobre corrección de errores.

    Mejoras de edición de SQL con Room

    Cuando usas la biblioteca de base de datos de Room, puedes aprovechar varias mejoras para la edición de SQL:

    • La finalización del código dentro de una Query entiende las tablas (entidades), las columnas, los parámetros de consulta, los alias, las uniones y las subconsultas de SQL, así como las cláusulas WITH.
    • El resaltado de sintaxis SQL ahora funciona.
    • Puedes hacer clic con el botón derecho en el nombre de una tabla en SQL y cambiarle el nombre, con lo cual también se vuelve a escribir el código Java o Kotlin correspondiente (incluido, por ejemplo, el tipo de datos que se muestra de la consulta). El cambio de nombre también funciona en la dirección opuesta, por lo que, cuando se cambia el nombre de una clase o un campo de Java, se vuelve a escribir el código SQL correspondiente.
    • Los usos de SQL se muestran cuando se utiliza Find usages (haz clic con el botón derecho y elige Find usages en el menú contextual).
    • Para ir a la declaración de una entidad SQL en el código Java o Kotlin, puedes mantener presionada la tecla Ctrl (Cmd en Mac) mientras haces clic en la entidad.

    Si deseas obtener información sobre el uso de SQL con Room, consulta Cómo guardar contenido en una base de datos local con Room.

    Actualizaciones de la vinculación de datos

    Esta actualización incluye varias mejoras relativas a la vinculación de datos:

    • Ahora, puedes usar un objeto LiveData como un campo observable en expresiones de vinculación de datos. La clase ViewDataBinding ahora incluye un método setLifecycle() nuevo que se usa para observar objetos LiveData.

    • La clase ObservableField ahora puede aceptar otros objetos Observable en su constructor.

    • Puedes obtener una vista previa de un nuevo compilador incremental para las clases de vinculación de datos. Si deseas obtener información sobre este nuevo compilador e instrucciones para habilitarlo, consulta Compilador de vinculación de datos V2.

      Los beneficios del nuevo compilador incluyen lo siguiente:

      • Las clases ViewBinding se generan mediante el complemento de Android para Gradle antes del compilador de Java.
      • Las bibliotecas mantienen las clases de vinculación que se generan cuando se compila la app, en lugar de regenerarlas cada vez. Esto puede mejorar mucho el rendimiento de proyectos con varios módulos.

    Compilador y Gradle

    D8 es el compilador de DEX predeterminado

    El compilador D8 ahora se usa de forma predeterminada para generar código de bytes DEX.

    Este nuevo compilador de DEX incluye varios beneficios, incluidos los siguientes:

    • Conversión a DEX más veloz
    • Menos uso de memoria
    • Generación de código mejorada (mejor asignación de registros, tablas de strings más inteligentes)
    • Mejor experiencia de depuración al recorrer el código

    No es necesario realizar ningún cambio en el código o el flujo de trabajo de desarrollo para obtener estos beneficios, a menos que hayas inhabilitado previamente el compilador D8 de forma manual.

    Si configuras android.enableD8 en false en gradle.properties, borra esa marca o configúrala en true:

            android.enableD8=true
          

    Se deseas obtener más información, consulta Nuevo compilador de DEX.

    Expansión de sintaxis incremental

    En proyectos que usan características de lenguaje Java 8, la función de expansión de sintaxis incremental está habilitada de forma predeterminada, lo que puede mejorar los tiempos de compilación.

    Esta función convierte la sintaxis en una forma que el compilador puede procesar de manera más eficiente.

    Puedes inhabilitar la función de expansión de sintaxis incremental mediante la especificación de lo siguiente en el archivo gradle.properties de tu proyecto:

            android.enableIncrementalDesugaring=false
          
    Ventana de resultados simplificada

    Se reemplazó la consola Gradle con la ventana Build, que tiene las pestañas Sync y Build.

    Si deseas obtener información para usar la nueva ventana Build simplificada, consulta Cómo controlar el proceso de compilación.

    Actualizaciones por lotes y simultaneidad de indexación

    Los procesos de indexación de IDE y de sincronización de Gradle ahora son mucho más eficientes y reducen el tiempo perdido en numerosas operaciones de indexación redundantes.

    C++ y LLDB

    Realizamos muchas mejoras de calidad y rendimiento en las fases de codificación, sincronización, compilación y depuración del desarrollo de C++. Por ejemplo:

    • Si trabajas con proyectos de C++ grandes, deberías notar una mejora significativa en la reducción del tiempo dedicado a compilar símbolos. El tiempo de sincronización también se reduce enormemente en proyectos grandes.

    • Se mejoró el rendimiento de compilación y sincronización con CMake mediante una reutilización más intensa de los resultados almacenados en caché.

    • La incorporación de formateadores ("impresoras con formato estilístico") a más estructuras de datos C++ facilita la lectura de los resultados de LLDB.

    • LLDB ahora funciona solamente con Android 4.1 (nivel de API 16) y versiones posteriores.

    Nota: La depuración nativa con Android Studio 3.0 o versiones posteriores no funciona en Windows de 32 bits. Si usas Windows de 32 bits y necesitas depurar código nativo, utiliza Android Studio 2.3.

    Kotlin

    Se actualizó Kotlin a la versión 1.2.30

    Android Studio 3.1 incluye la versión 1.2.30 de Kotlin.

    El código de Kotlin ahora se analiza con la comprobación de lint de la línea de comandos

    Ahora, cuando se ejecuta lint desde la línea de comandos, se analizan las clases de Kotlin.

    En cada proyecto en el que quieras ejecutar lint, el repositorio de Maven de Google deberá incluirse en el archivo build.gradle del nivel principal. El repositorio de Maven ya se incluye en proyectos creados en Android Studio 3.0 y versiones posteriores.

    Herramientas de rendimiento

    Cómo realizar muestras de procesos nativos de C++ con el generador de perfiles de CPU

    El Generador de perfiles de CPU ahora incluye una configuración predeterminada para registrar seguimientos de muestra de los subprocesos nativos de tu app. Puedes usar esta configuración si implementas la app en un dispositivo con Android 8.0 (nivel de API 26) o una versión posterior, y seleccionas Sampled (Native) en el menú desplegable de configuraciones de registro del Generador de perfiles de CPU. Después de eso, inspecciona y registra el seguimiento como lo harías normalmente.

    Puedes cambiar la configuración predeterminada (por ejemplo, el intervalo de muestreo) si creas una configuración de registro.

    Para volver a hacer el seguimiento de los subprocesos de Java, selecciona una configuración Sampled (Java) o una Instrumented (Java).

    Cómo filtrar registros de CPU, resultados de asignación de memoria y volcados de montón

    El Generador de perfiles de CPU y el Generador de perfiles de memoria incluyen una función de búsqueda que permite filtrar los resultados del registro de un seguimiento de método, las asignaciones de memoria o el volcado de montón.

    Para buscar, haz clic en Filter en la esquina superior derecha del panel, escribe la consulta y presiona Intro.

    Sugerencia: También puedes abrir el campo de búsqueda presionando Ctrl + F (Cmd + F en Mac).

    En la pestaña Flame Chart del Generador de perfiles de CPU, las pilas de llamadas que incluyen métodos relacionados con la búsqueda se resaltan y se mueven a la izquierda del gráfico.

    Si deseas obtener más información para filtrar por método, clase o nombre de paquete, consulta Cómo registrar e inspeccionar seguimientos de métodos.

    Pestaña "Request" en el Generador de perfiles de red

    El Generador de perfiles de red ahora incluye una pestaña Request que proporciona detalles sobre las solicitudes de red durante el cronograma seleccionado. En versiones anteriores, el Generador de perfiles de red solamente proporcionaba información sobre las respuestas de la red.

    Vista de subprocesos en el Generador de perfiles de red

    Después de seleccionar una parte del cronograma en el Generador de perfiles de red, puedes elegir una de las siguientes pestañas para ver más detalles sobre la actividad de red durante ese período:

    • Connection View: Proporciona la misma información que las versiones anteriores de Android Studio, es decir, enumera los archivos que se enviaron o recibieron durante la parte seleccionada del cronograma en todos los subprocesos de la CPU de la app. En cada solicitud, puedes inspeccionar el tamaño, el tipo, el estado y la duración de la transmisión.
    • Thread View: Muestra la actividad de red de cada uno de los subprocesos de CPU de la app. Esta vista te permite inspeccionar qué subprocesos de la app son responsables de cada solicitud de red.

    Inspector de diseño

    El inspector de diseños adquirió nuevas funciones, incluidas algunas que antes proporcionaban las herramientas "Hierarchy Viewer" y "Pixel Perfect" que ya no están disponibles:

    • Botones de zoom y combinaciones de teclas para navegar por los diseños e inspeccionarlos
    • Superposición de la cuadrícula de referencia
    • Capacidad para cargar una imagen de referencia y usarla como una superposición (útil para comparar tu diseño con un modelo de IU)
    • La opción Render subtree preview para aislar una vista en un diseño complejo

    Editor de diseño

    Se implementaron muchas mejoras en la opción Palette del editor de diseño:

    • Reorganización de categorías de vistas y diseños.
    • Nueva categoría Common de vistas y diseños que puedes agregar mediante un comando Favorite.
    • Mejoras en la búsqueda de vistas y diseños.
    • Nuevos comandos para abrir documentación de un elemento específico de una vista o un diseño.

    Puedes usar el nuevo comando Convert view en el árbol de componentes o en el editor de diseño para convertir una vista o un diseño en otro tipo de vista o diseño.

    Ahora, puedes crear fácilmente restricciones para los elementos cerca de la vista seleccionada usando el nuevo botón Create a connection en el inspector de vistas, situado en la parte superior de la ventana Attributes.

    Instant Run y Run

    Se logró un comportamiento más coherente de la opción Use same selection for future launches en el diálogo Select deployment target. Si se habilita la opción Use same selection, el diálogo Select deployment target se abrirá solamente la primera vez que uses el comando Run hasta que el dispositivo seleccionado ya no esté conectado.

    Cuando se orienta a un dispositivo con Android 8.0 (nivel de API 26) o una versión posterior, Instant Run puede implementar cambios en los recursos sin reiniciar la aplicación. Esto es posible porque un APK dividido contiene los recursos.

    Emulador

    Para obtener información sobre las novedades y los cambios en el emulador desde Android Studio 3.0, consulta las notas de la versión de Android Emulator desde la versión 27.0.2 hasta la versión 27.1.12.

    Estas son algunas de las mejoras más importantes:

    • Instantáneas de Quick Boot para guardar el estado del emulador y lograr inicios más rápidos, con la capacidad de usar el comando Save now para guardar un estado de inicio personalizado
    • Pantalla del emulador sin ventanas
    • Imágenes del sistema para Android 8.0 (nivel de API 26), Android 8.1 (nivel de API 27) y la Versión preliminar de Android P para desarrolladores

    Mejoras en la interfaz y la experiencia del usuario

    Información sobre herramientas, combinaciones de teclas y mensajes útiles adicionales

    Agregamos información sobre herramientas y mensajes superpuestos útiles en muchos lugares de Android Studio.

    Para ver combinaciones de teclas de muchos de los comandos, mantén el puntero del mouse sobre un botón hasta que aparezca la información sobre la herramienta.

    Se eliminó el menú Tools > Android

    Se eliminó el menú Tools > Android. Los comandos que estaban en este menú se movieron.

    • Muchos comandos ahora están en el menú Tools.
    • El comando Sync project with gradle files se movió al menú File.
    • Se eliminó el comando Device Monitor, tal como se describe a continuación.

    El monitor de dispositivos está disponible en la línea de comandos

    En Android Studio 3.1, Device Monitor cumple una función menor de la que tenía anteriormente. En muchos casos, la funcionalidad disponible a través del monitor de dispositivos ahora se proporciona con herramientas nuevas y mejoradas.

    Consulta la documentación del monitor de dispositivos a fin de obtener instrucciones para invocar dicho monitor desde la línea de comandos y conocer detalles sobre las herramientas disponibles mediante el monitor de dispositivos.

    3.0 (octubre de 2017)

    Android Studio 3.0.0 es una actualización importante que incluye una variedad de funciones y mejoras nuevas.

    Usuarios de macOS: Si actualizan una versión anterior de Android Studio, es posible que aparezca un diálogo de error de actualización con el mensaje "Some conflicts were found in the installation area". Ignoren el error y hagan clic en Cancel para reanudar la instalación.

    3.0.1 (noviembre de 2017)

    Esta es una actualización menor de Android Studio 3.0 que incluye correcciones de errores generales y mejoras de rendimiento.

    Complemento de Android para Gradle 3.0.0

    El nuevo complemento Gradle para Android incluye una variedad de mejoras y funciones nuevas, pero su objetivo principal es optimizar el rendimiento de compilación de los proyectos que tienen muchos módulos. Cuando uses el complemento nuevo con este tipo de proyectos, notarás lo siguiente:

    • Menor tiempo de configuración de compilación debido a la resolución de dependencias retrasadas
    • Resolución de dependencias compatibles con variantes solo para los proyectos y las variantes que compilas
    • Menor tiempo de compilación incremental cuando se aplican cambios simples en el código o los recursos

    Nota: Estas mejoras requieren cambios significativos que interrumpen algunos de los comportamientos del complemento, de DSL y de las APIs. La actualización a la versión 3.0.0 puede requerir cambios en los archivos de compilación y los complementos de Gradle.

    Esta actualización también incluye lo siguiente:

    • Compatibilidad con Android 8.0.
    • Compatibilidad con la compilación de APK independientes basados en recursos de idioma.
    • Compatibilidad con bibliotecas Java 8 y funciones de lenguaje Java 8 (sin el compilador Jack)
    • Compatibilidad con Android Test Support Library 1.0 (Android Test Utility y Android Test Orchestrator)
    • Aumento de las velocidades de compilación de ndk-build y CMake
    • Mejoras en la velocidad de sincronización de Gradle.
    • AAPT2 ahora está habilitado de forma predeterminada.
    • El uso de ndkCompile ahora es más restringido. En su lugar, debes comenzar a utilizar CMake o ndk-build para compilar código nativo que quieras empaquetar en tu APK. Si deseas obtener más información, consulta Cómo migrar desde ndkcompile

    Para obtener más información sobre los cambios, consulta las notas de la versión del complemento de Android para Gradle.

    Si tienes todo listo para realizar la actualización al nuevo complemento, consulta Cómo realizar la migración al complemento de Android para Gradle 3.0.0.

    Compatibilidad con Kotlin

    Como se anunció en Google I/O 2017, el lenguaje de programación de Kotlin ahora es compatible oficialmente con Android. Entonces, con esta actualización, Android Studio incluye compatibilidad con el lenguaje Kotlin para el desarrollo de Android.

    Puedes incorporar Kotlin en tu proyecto si conviertes un archivo Java a Kotlin (haz clic en Code > Convert Java File to Kotlin File) o si creas un proyecto nuevo compatible con Kotlin mediante el asistente de proyecto nuevo.

    Para comenzar, aprende a agregar Kotlin a tu proyecto.

    Compatibilidad con funciones del lenguaje Java 8

    Ahora, puedes aprovechar ciertas funciones del lenguaje Java 8 y usar bibliotecas compiladas con Java 8. Ya no se requiere Jack y, primero, debes inhabilitarlo para poder usar la compatibilidad mejorada con Java 8 que está integrada en la cadena de herramientas predeterminada.

    Para actualizar tu proyecto a fin de que admita el nuevo conjunto de herramientas del lenguaje Java 8, actualiza Source Compatibility y Target Compatibility a 1.8 en el diálogo Project Structure (haz clic en File > Project Structure). Para obtener más información, consulta cómo usar las funciones del lenguaje Java 8.

    Android Profiler

    El nuevo Android Profiler reemplaza la herramienta Android Monitor y proporciona un nuevo conjunto de herramientas para medir el uso de la CPU, la memoria y la red de tu app en tiempo real. Puedes llevar a cabo un seguimiento de métodos basado en muestras para cronometrar la ejecución de tu código, capturar volcados de montón, ver asignaciones de memoria e inspeccionar la información de archivos transmitidos por red.

    Para abrir, haz clic en View > Tool Windows > Android Profiler (o haz clic en Android Profiler en la barra de herramientas).

    El cronograma del evento en la parte superior de la ventana muestra eventos táctiles, pulsaciones de teclas y cambios de actividad de modo que tengas más contexto que te permita comprender otros eventos de rendimiento en el cronograma.

    Nota: La vista Logcat también se movió a una ventana independiente (antes estaba en Android Monitor, que se quitó).

    Desde el cronograma de resumen de Android Profiler, haz clic en los cronogramas CPU, MEMORY o NETWORK para acceder a las herramientas correspondientes del generador de perfiles.

    Generador de perfiles de CPU

    El Generador de perfiles de CPU permite analizar el uso de subprocesos de CPU de tu app activando un registro de CPU instrumentado o de muestra. Después, es posible solucionar problemas de rendimiento de la CPU mediante una variedad de filtros y vistas de datos.

    Para obtener más información, consulta la guía del Generador de perfiles de CPU.

    Generador de perfiles de memoria

    El Generador de perfiles de memoria te permite identificar fugas y saturación de memoria que pueden provocar saltos, bloqueos e incluso fallas de apps. Muestra un gráfico en tiempo real del uso de memoria de la app y te permite capturar un volcado de montón, forzar la recolección de elementos no utilizados y realizar el seguimiento de asignaciones de memoria.

    Para obtener más información, consulta la guía del Generador de perfiles de memoria.

    Generador de perfiles de red

    El Generador de perfiles de red te permite controlar la actividad de red de tu app, inspeccionar la carga útil de cada una de tus solicitudes de red y establecer vínculos de regreso a las líneas de código que generen dichas solicitudes.

    Para obtener más información, consulta la guía del Generador de perfiles de red.

    Generación de perfiles y depuración de APK

    Android Studio ahora permite generar perfiles de cualquier APK y depurarlo sin tener que compilarlo desde un proyecto de Android Studio, siempre y cuando el APK esté compilado para habilitar la depuración y tengas acceso a los símbolos de depuración y los archivos de origen.

    Para comenzar, haz clic en Profile or debug APK en la pantalla de bienvenida de Android Studio. O bien, si ya tienes un proyecto abierto, haz clic en File > Profile or debug APK en la barra de menú. Con esto, se desempacan los archivos del APK, pero no se descompila el código. Por lo tanto, para agregar correctamente interrupciones y ver seguimientos de pila, debes adjuntar archivos de origen de Java y símbolos de depuración nativos.

    Para obtener más información, consulta Cómo generar perfiles y depurar APK previamente compilados.

    Explorador de archivos de dispositivos

    El nuevo explorador de archivos del dispositivo te permite inspeccionar el sistema de archivos del dispositivo conectado y transferir archivos entre dicho dispositivo y la computadora. Esto reemplaza la herramienta de sistema de archivos disponible en DDMS.

    Para abrir, haz clic en View > Tool Windows > Device File Explorer.

    Para obtener más información, consulte la guía del explorador de archivos del dispositivo.

    Compatibilidad con apps instantáneas

    La nueva compatibilidad con Apps instantáneas Android te permite crear apps instantáneas en tu proyecto mediante dos nuevos tipos de módulos: los módulos "Instant App" y "Features" (se requiere que instales el SDK de desarrollo de apps instantáneas).

    Android Studio también incluye una nueva acción de refactorización modular para ayudarte a agregar compatibilidad con apps instantáneas en un proyecto existente. Por ejemplo, si deseas refactorizar tu proyecto para colocar algunas clases en un módulo de funciones de una app instantánea, selecciona las clases en la ventana Project y haz clic en Refactor > Modularize. En el cuadro de diálogo que aparece, selecciona el módulo donde deben ir las clases y haz clic en OK.

    Cuando todo esté listo para probar tu app instantánea, podrás compilar y ejecutar tu módulo Instant App en un dispositivo conectado especificando la URL de la app instantánea dentro de las opciones de inicio de configuración de ejecución: selecciona Run > Edit Configurations, elige el módulo Instant App y luego configura la URL en Launch Options.

    Para obtener más información, consulta Apps instantáneas Android.

    Módulos de Android Things

    Las nuevas plantillas de Android Things en los asistentes "New Project" y "New Module" te ayudan a empezar a desarrollar para dispositivos IOT con Android.

    Para obtener más información, consulta cómo crear un proyecto de Android Things.

    Asistente de íconos adaptables

    Image Asset Studio ahora es compatible con elementos de diseño vectorial y permite crear íconos de selector adaptables para Android 8.0 e íconos tradicionales (íconos "heredados") en dispositivos más antiguos.

    Para comenzar, haz clic con el botón derecho en la carpeta res de tu proyecto y selecciona New > Image Asset. En la ventana Asset Studio, selecciona el tipo de ícono Launcher Icons (Adaptive and Legacy).

    Nota: Debes establecer compileSdkVersion en 26 o más a fin de usar íconos de selector adaptables.

    Para obtener más información, consulta la sección sobre íconos adaptables.

    Compatibilidad con recursos de fuentes

    Para admitir los nuevos recursos de fuentes en Android 8.0, Android Studio incluye un selector de recursos de fuentes que ayuda a agrupar las fuentes en tu app o configurar tu proyecto para descargar las fuentes en el dispositivo (cuando estén disponibles). El editor de diseño también permite obtener una vista previa de las fuentes de tu diseño.

    Para probar las fuentes descargables, asegúrate de que tu dispositivo o emulador cuenten con los servicios de Google Play 11.2.63 o versiones posteriores. Para obtener más información, consulta la sección sobre fuentes descargables.

    Asistente de indexación de aplicaciones de Firebase

    Firebase Assistant se actualizó con un nuevo tutorial para probar la indexación de aplicaciones. Para abrir el asistente, selecciona Tools > Firebase. Luego, selecciona App Indexing > Test App Indexing.

    El tutorial incluye nuevos botones para probar la indexación de contenido público y personal:

    • En el paso 2, haz clic en Preview search results para verificar que tus URL aparezcan en los resultados de la Búsqueda de Google.
    • En el paso 3, haz clic en Check for errors para verificar que los objetos indexables de tu app se hayan agregado al índice de contenido personal.

    El Asistente de Android App Links se actualizó con las siguientes capacidades nuevas:

    • Se agregaron pruebas de URL para cada asignación de URL a fin de asegurarte de que los filtros de intent manejen URL reales.

      También puedes definir estas pruebas de URL de forma manual mediante la etiqueta <tools:validation>, que se describe a continuación.

    • Se creó un archivo de Vínculos de recursos digitales con la entrada del objeto apropiada para admitir Google Smart Lock y agregar la etiqueta asset_statements <meta-data> correspondiente a tu archivo de manifiesto.

    Validador de URL de filtros de intent

    Android Studio ahora admite una etiqueta especial en el archivo de manifiesto que te permite probar URLs de filtro de intent. Son las mismas etiquetas que App Links Assistant puede crear por ti.

    Para declarar una URL de prueba de un filtro de intent, agrega un elemento <tools:validation> junto con el elemento <intent-filter> correspondiente. Por ejemplo:

          <activity ...>
              <intent-filter>
                  ...
              </intent-filter>
              <tools:validation testUrl="https://www.example.com/recipe/1138" />
          </activity>
        
        

    Asegúrate de incluir también xmlns:tools="http://schemas.android.com/tools" en la etiqueta <manifest>.

    Si alguna de las URL de prueba no supera la definición del filtro de intent, aparecerá un error de lint. Este error no evita que compiles variantes de depuración, pero sí interrumpe tus compilaciones de versiones.

    Editor de diseño

    El editor de diseño se actualizó con una serie de mejoras, incluidas las siguientes:

    • Nuevo diseño de barra de herramientas e íconos.
    • Diseño actualizado en el árbol de componentes.
    • Inserciones mejoradas en la vista de arrastrar y soltar
    • Nuevo panel de errores debajo del editor, que muestra todos los problemas y las sugerencias para solucionarlos (si las hay)
    • Diversas mejoras en la IU para compilar con ConstraintLayout, entre ellas:
      • Nueva compatibilidad con la creación de barreras
      • Nueva compatibilidad con la creación de grupos: en la barra de herramientas, selecciona Guidelines > Add Group (requiere ConstraintLayout 1.1.0 beta 2 o versiones posteriores)
      • Nueva IU para crear cadenas: Selecciona varias vistas; luego, haz clic con el botón derecho y elige Chain

    Inspector de diseño

    El Inspector de diseño incluye mejoras para facilitar la depuración de problemas con los diseños de tu app, como la agrupación de propiedades en categorías comunes y una nueva funcionalidad de búsqueda en los paneles View Tree y Properties.

    Analizador de APK

    Ahora, puedes usar el analizador de APK desde la línea de comandos con la herramienta apkanalyzer.

    El analizador de APK también se actualizó con las siguientes mejoras:

    • Para los APK compilados con ProGuard, puedes cargar archivos de asignación de ProGuard que agreguen capacidades al visor de DEX, que incluyen las siguientes:
      • Nodos en negrita a fin de indicar que no se deben eliminar los nodos cuando se reduce el código
      • Un botón para mostrar los nodos que se eliminaron durante el proceso de reducción
      • Un botón que restablece los nombres originales de los nodos en la vista de árbol que ProGuard ofuscó
    • El visor de DEX ahora muestra el impacto de tamaño estimado de cada paquete, clase y método.
    • Nuevas opciones de filtrado en la parte superior para mostrar y ocultar campos y métodos.
    • En la vista de árbol, los nodos que son referencias no definidas en el archivo DEX aparecen en cursiva.

    Para obtener más información, consulta Cómo analizar tu compilación con el Analizador de APK.

    Vista previa de D8, el compilador de DEX

    Android Studio 3.0 incluye un nuevo compilador de DEX opcional llamado D8. Con el tiempo, reemplazará al compilador DX, pero puedes elegir usar el nuevo compilador D8 hoy mismo.

    La compilación a DEX afecta directamente el tiempo de compilación de tu app, el tamaño del archivo .dex y el rendimiento del tiempo de ejecución. Además, cuando se compara el nuevo compilador D8 con el compilador DX actual, D8 compila más rápido, genera archivos .dex más pequeños y ofrece un rendimiento igual o mejor del tiempo de ejecución de la app.

    Para probarlo, establece lo siguiente en el archivo gradle.properties de tu proyecto:

    android.enableD8=true
        

    Para obtener más información, consulta la entrada del blog sobre el compilador D8.

    El repositorio de Maven de Google

    Android Studio ahora usa el repositorio Maven de Google de forma predeterminada en lugar de depender del administrador de SDK de Android para obtener actualizaciones de la Biblioteca de compatibilidad de Android, los Servicios de Google Play, Firebase y otras dependencias. Esto hace que sea más fácil mantener tus bibliotecas actualizadas, especialmente cuando se utiliza un sistema de integración continua.

    Todos los proyectos nuevos ahora incluyen el repositorio de Maven para Google forma predeterminada. Para actualizar un proyecto existente, agrega google() al bloque repositories del archivo build.gradle de nivel superior:

          allprojects {
              repositories {
                  google()
              }
          }
        
        

    Obtén más información sobre el repositorio de Maven de Google aquí.

    Otros cambios

    • La depuración nativa con Android Studio ya no es compatible con Windows de 32 bits. Elegimos centrarnos en otras plataformas porque muy pocos desarrolladores están utilizando esta. Si usas Windows de 32 bits y tienes previsto depurar código nativo, debes seguir usando Android Studio 2.3.
    • Se actualizó el IDE base a IntelliJ 2017.1.2, que agrega una serie de funciones nuevas de 2016.3 y 2017.1, como la refactorización del lenguaje Java 8, las sugerencias de parámetros, el resaltado semántico, los puntos de interrupción que se pueden arrastrar, los resultados instantáneos en la búsqueda y mucho más.
    • Se agregaron muchas comprobaciones de lint nuevas.
    • Consulta también las últimas actualizaciones del emulador de Android.

    2.3 (marzo de 2017)

    Android Studio 2.3.0 es, principalmente, una corrección de errores y una actualización para ofrecer estabilidad, pero también incluye una serie de funciones nuevas.

    2.3.3 (junio de 2017)

    Esta es una actualización menor para agregar compatibilidad con Android O (nivel de API 26).

    2.3.2 (abril de 2017)

    Esta es una actualización menor de Android Studio 2.3 para implementar los siguientes cambios:

    • AVD Manager se actualizó para ser compatible con Google Play en las imágenes del sistema.
    • Se corrigieron errores de las compilaciones de NDK cuando se usa R14+ del NDK.

    Consulta también las actualizaciones correspondientes del Android Emulator 26.0.3.

    2.3.1 (abril de 2017)

    Esta es una actualización menor de Android Studio 2.3 que soluciona un problema en el que algunos dispositivos Android físicos no funcionaban correctamente con Instant Run (consulta el error #235879).

    <h3 class="hide-from-toc">
      New
    </h3>
    
    <div class="video-wrapper-left">
      <iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    
    <ul>
      <li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
      WebP format. WebP is an image file format from Google that provides lossy
      compression (like JPEG) as well as transparency (like PNG) but can provide
      better compression than either JPEG or PNG. For more information, see
        <a href="/studio/write/convert-webp.html">Convert images to WebP in Android
        Studio</a>.
      </li>
    
      <li>The new <a href="/studio/write/app-link-indexing.html">App Links
      Assistant</a> simplifies the process of adding Android App Links to your app
      into a step-by-step wizard. Android App Links are HTTP URLs that bring users
      directly to specific content in your Android app.
      </li>
    
      <li>The Layout Editor now includes support for two new ConstraintLayout
      features:
        <ul>
          <li>Define a view size based on an aspect ratio.
          </li>
          <li>Create packed, spread, and weighted linear groups with constraint
          chains.
          </li>
        </ul>
        For more information, see <a href=
        "/training/constraint-layout/index.html">Build a Responsive UI with
        ConstraintLayout</a>.
      </li>
    
      <li>The Layout Editor also now lets you create a list of <a href=
      "/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
      you don't have to click <b>View all attributes</b> to access the attributes
      you use most.
      </li>
    
      <li>When adding a material icon using the Vector Import Dialog (<b>File &gt;
      New &gt; Vector Asset</b>), you can now filter the list of available icons by
      category or by icon name. For more information, see <a href=
      "/studio/write/vector-asset-studio.html#materialicon">Adding a material
      icon</a>.
      </li>
    
      <li>
        <a href="/studio/write/annotations.html#accessibility">New and updated
        annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
        classes, and packages lets you restrict an API. The updated
        <code>@VisibleForTesting</code> annotation now has an optional
        <code>otherwise</code> argument that lets you designate what the visibility
        of a method should be if not for the need to make it visible for testing.
        Lint uses the <code>otherwise</code> option to enforce the intended
        visibility of the method.
      </li>
    
      <li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
      allows you to use a snapshot of your project's current set of warnings as a
      baseline for future inspection runs so only new issues are reported. The
      baseline snapshot lets you start using lint to fail the build for new issues
      without having to go back and address all existing issues first.
      </li>
    
      <li>New lint checks, including the following:
        <ul>
          <li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
          code that checks for SDK versions.
          </li>
          <li>Object Animator Validation: Lint analyzes your code to make sure that
          your <code>ObjectAnimator</code> calls reference valid methods with the
          right signatures and checks that those methods are annotated with <code>
            @Keep</code> to prevent ProGuard from renaming or removing them during
            release builds.
          </li>
          <li>Unnecessary Item Decorator Copy: Older versions of the
          <code>RecyclerView</code> library did not include a divider decorator
          class, but one was provided as a sample in the support demos. Recent
          versions of the library have a divider decorator class. Lint looks for
          the old sample and suggests replacing it with the new one.
          </li>
          <li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
          the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)">Context.getSystemService()</a></code>
          can cause a memory leak if the context is not the application context.
          Lint looks for these initializations, and if it <em>cannot</em> determine
          that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
          initialization.
          </li>
          <li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
          lint check had many limitations. You can now configure your project with
          a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
          }</code>, and lint makes sure that all of your resources are using this
          prefix. You can use variations of the name for styles and themes. For
          example for the <var>my_lib</var> prefix, you can have themes named
          <code>MyLibTheme</code>, <code>myLibAttr</code>,
          <code>my_lib_layout</code>, and so on.
          </li>
          <li>Switch to WebP: This check identifies images in your project that can
          be converted to WebP format based on your project’s
          <code>minSdkVersion</code> setting. An associated quickfix can
          automatically convert the images, or you can <a href=
          "/studio/write/convert-webp.html">convert images to WebP</a> manually.
          </li>
          <li>Unsafe WebP: If your project already includes WebP images, this check
          analyzes your project to ensure that your <code>minSdkVersion</code>
          setting is high enough to support the included images. For more
          information about WebP support in Android and Android Studio, see
          <a class="external" href=
          "https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
            Which browsers natively support WebP?</a> and <a href=
            "/studio/write/convert-webp.html">Create WebP Images Using Android
            Studio</a>.
          </li>
        </ul>
      </li>
    </ul>
    
    <h3 class="hide-from-toc">
      Changes
    </h3>
    
    <ul>
      <li>A separate button to push changes with Instant Run: After deploying your
      app, you now click <b>Apply Changes</b> <img src=
      "/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
      "inline-icon"> to quickly push incremental changes to your running app using
      Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
        alt="" class="inline-icon"> and <b>Debug</b> <img src=
        "/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
        buttons are always available to you when you want to reliably push your
        changes and force an app restart.
        <ul>
          <li>Instant Run is supported only when deploying your app to a target
          device running Android 5.0 (API level 21) or higher.
          </li>
          <li>Instant Run is no longer disabled for projects that <a href=
          "/studio/projects/add-native-code.html">link to external native
          projects</a> using CMake or ndk-build. However, you can only use Instant
          Run to push incremental changes to your Java code, not your native code.
          </li>
          <li>Cold swaps (which you can force for a running app by clicking
          <strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
          alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
          also fixes the issue where changes to notification and widget UIs were
          not updated on the target device.
          </li>
          <li>Includes optimizations that make app startup much faster. These
          optimizations may affect profiling, so you should temporarily <a href=
          "/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
          profiling your app.
          </li>
        </ul>
      </li>
    
      <li>
        <p>
          The <b>AVD Manager</b> <img src=
          "/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
          "inline-icon"> and <b>SDK Manager</b> <img src=
          "/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
          "inline-icon"> buttons are now included in the lean Navigation Bar as
          well as the full Toolbar. To use the lean Navigation Bar, click
          <b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
          is selected and <b>Toolbar</b> is <em>not</em> selected.
        </p>
        <img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
      </li>
    
      <li>The "Hybrid" debugger has been renamed to "Dual" debugger.
      </li>
    
      <li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
      Configurations</a> dialog, under Defaults in the left pane, the following run
      configuration names have changed with no behavior changes:
        <ul>
          <li>The JUnit name has changed to Android JUnit. If you have a project
          that uses JUnit run configurations, those configurations are transformed
          to Android JUnit run configurations the first time you open the project
          with Android Studio. A dialog appears to inform you of the name change.
          </li>
          <li>The Android Tests name has changed to Android Instrumented Tests.
          </li>
        </ul>
      </li>
    
      <li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
      been removed from Android Studio as of version 2.3. An open-source,
      standalone version of the tool is now available on <a href=
      "https://github.com/google/gapid" class="external-link">GitHub</a>.
      </li>
    
      <li>The Run/Debug option is no longer available when you right-click a <code>
        *.gradle build</code> script.
      </li>
    
      <li>All templates now use <code>ConstraintLayout</code> as the default
      layout.
      </li>
    
      <li>The Widgets palette in the Layout Editor has been redesigned.
      </li>
    </ul>
    
    <p>
      This release also includes a number of bug fixes. <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.3.0.</a>
    </p>
    
    <p class="note">
      <b>Known issue:</b> Some device manufacturers block apps from automatically
      launching after being installed on the device. When deploying your app to a
      physical device using Android Studio 2.3, this restriction breaks the
      intended behavior of Instant Run and causes the following error output:
      <code>Error: Not found; no service started</code>. To avoid this issue,
      either <a href="/studio/run/emulator.html">use the emulator</a> or enable
      automatic launching for your app in your device's settings. The procedure
      for doing this is different for each device, so check the instructions
      provided by the manufacturer. To learn more about this issue, see
      <a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
        #235879</a>.
    </p>
    

    2.2 (septiembre de 2016)

    2.2.3 (diciembre de 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes a bug fixes
      focused around gradle, the core IDE, and lint.
    </p>
    
    <p>
      Highlighted build changes:
    </p>
    
    <ul>
      <li>ProGuard version rollback. Due to a <a href=
      "https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
      discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
      have worked with the ProGuard team on getting a fix quickly, and we expect
      to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
      </li>
      <li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
      not working properly (<a href="http://b.android.com/224167">issue
      224167</a>)
      </li>
      <li>Bug fix for Gradle autodownload for Constraint Layout library
        (<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
        212128</a>)
      </li>
      <li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
      "http://b.android.com/227729">issue 227729</a>)
      </li>
    </ul>
    
    <p>
      <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2 (octubre de 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1 (octubre de 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    Novedades

    • Nuevo editor de diseño con herramientas personalizadas para admitir ConstraintLayout.
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <strong>Network type</strong> control.
          </li>
          <li>Added simulated vertical swipes for scrolling through vertical menus
          with a mouse wheel.
          </li>
        </ul>
      </li>
      
      <li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
      Configuration</a></strong> features:
        <ul>
          <li>The <strong>Debugger</strong> tab of the Android App and Android
          Tests templates now contain several new options for debugging with LLDB.
          </li>
          <li>The <strong>Profiling</strong> tab of the Android App and Android
          Tests templates now contain a <strong>Capture GPU Commands</strong>
          option for enabling GPU tracing. You can display GPU traces in the GPU
          Debugger (a beta feature).
          </li>
          <li>The Android Tests template now has a <strong>Firebase Test Lab Device
          Matrix</strong> option for the <strong>Deployment Target</strong>.
          </li>
          <li>The Native Application template has been deprecated. If you use this
          template in a project, Android Studio automatically converts it to the
          Android App template.
          </li>
          <li>The Android Application template has been renamed to Android App.
          </li>
        </ul>
      </li>
      
      <li>Improved installation, configuration, performance, and UI features in the
      <strong><a href="/studio/debug/am-gpu-debugger.html">GPU
      Debugger</a></strong> (currently in beta).
      </li>
      
      <li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
      Existing projects still use the JDK specified in <strong>File &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; SDK
      Location</strong> and checking the <strong>Use embedded JDK</strong>
      checkbox.
      </li>
      
      <li>Added new <strong>help menus and buttons</strong> in the UI so you can
      more easily find the online documentation.
      </li>
      

    Cambios

    • Se actualizó la base de código del IDE de IntelliJ 15 a IntelliJ 2016.1.
    • Instant Run ahora requiere que se instale el SDK de la plataforma correspondiente al nivel de API del dispositivo de destino.
    • Instant Run se inhabilitará automáticamente si el usuario está ejecutando la app con un perfil de trabajo o como un usuario secundario.
    • Se corrigieron muchos problemas de confiabilidad de Instant Run que provocaban que los cambios no se implementaran o la app fallara:
      • Algunos elementos de la app no se implementaron en la app en ejecución (Error #213454).
      • La app falla cuando el usuario realiza la transición entre las sesiones que son de Instant Run y las que no lo son en las que una clase serializable no tiene definido el valor serialVersionUID (Error #209006).
      • Los cambios de estilo no se reflejan con Instant Run (Error 210851).
      • La sesión de Instant Run no es confiable y causa FileNotFoundException (Error #213083).
      • Los cambios en los elementos de diseño no se reflejan hasta que se realiza una nueva compilación completa de KitKat (Error #21530).
      • Los cambios de recursos no se reflejan con Instant Run cuando los conjuntos de orígenes personalizados contienen rutas anidadas (Error #219145).
      • El intercambio directo y el intercambio con reinicio no funcionan si la clase modificada contiene una anotación con un valor enum (Error #209047).
      • Se realizaron cambios en los datos de anotación que no se reflejan con Instant Run (Error #210089).
      • Instant Run no registra los cambios de código si se realizan fuera del IDE (Error #213205).
      • La sesión de Instant Run no es confiable debido a un token de seguridad que no coincide (Error 211989).
      • El intercambio indirecto falla en dispositivos que no admiten correctamente "ejecutar como" (Error 210875).
      • La app falla después de reiniciar Instant Run (Error #219744).
      • Se observó ClassNotFoundException cuando se cambiaba de Instant Run a Instant Debug (Error #215805).
    • <li>Improved performance for <strong>Gradle sync</strong> within the IDE,
      especially for large projects.
      </li>
      
      <li>Improved build times for both full and incremental builds with new app
      packaging code.
      </li>
      
      <li>Improved <strong>Jack compiler performance and features</strong>,
      including support for annotation processors and dexing in process. To learn
      more, read the <a href=
      "/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
      2.2.0 release notes</a>.
      </li>
      
      <li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
      </li>
      
      <li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
      command-line options now report which ports and serial number the emulator
      instance is using, and warn if there are any issues with the values you
      provided.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/create-java-class.html">Create New Class dialog</a></strong>
      and the corresponding file templates. <strong>Note:</strong> If you've
      previously customized the <strong>AnnotationType</strong>,
      <strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
      <strong>Singleton</strong> file templates, you need to modify your templates
      to comply with the new templates or you won’t be able to use the new fields
      in the <strong>Create New Class</strong> dialog.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
      user interface and added support for Adobe Photoshop Document (PSD) files.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
      interface.
      </li>
      
      <li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
      </li>
      
      <li>Fixed memory leaks and reduced overall memory usage in Android Studio.
      </li>
      
      <li>Added a <strong>Background</strong> button in the <strong><a href=
      "/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
      get back to work and install your packages in the background.
      </li>
      
      <li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
      features</a></strong>, including support for screen readers and keyboard
      navigation.
      </li>
      
      <li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
      Java 8 language usage and more cross-file analysis.
      </li>
      
      <li>Several toolbar icons have changed.
      </li>
      

    2.1 (abril de 2016)

    Los cambios principales en esta actualización ofrecen compatibilidad para el desarrollo con la versión preliminar de Android N.

    2.1.3 (agosto de 2016)

    Esta actualización agrega compatibilidad con Gradle 2.14.1, que incluye mejoras de rendimiento, funciones nuevas y una importante corrección de seguridad. Para obtener más información, consulta las notas de la versión de Gradle.

    De forma predeterminada, los proyectos nuevos en Android Studio 2.1.3 usan Gradle 2.14.1. En el caso de proyectos existentes, el IDE te pide que realices una actualización a Gradle 2.14.1 y al complemento de Android para Gradle 2.1.3, que se requieren cuando se utiliza Gradle 2.14.1 y versiones posteriores.

    2.1.2 (junio de 2016)

    Esta actualización incluye una serie de pequeños cambios y correcciones de errores:

    • Actualizaciones y correcciones de errores de Instant Run.
    • Mejoras en el rendimiento y las notificaciones de fallas de LLDB.
    • Se corrigió una regresión en la actualización de seguridad de Android Studio 2.1.1 que causaba que git rebase fallara.

    2.1.1 (mayo de 2016)

    Actualización de seguridad.

    La plataforma de Android N agrega compatibilidad para funciones del lenguaje Java 8, que requieren un nuevo compilador experimental llamado Jack. Por el momento, la versión más reciente de Jack solo es compatible con Android Studio 2.1. Por lo tanto, si quieres usar funciones del lenguaje Java 8, debes usar Android Studio 2.1 para compilar tu app.

    Nota: Instant Run se inhabilita cuando habilitas el compilador Jack, dado que no son compatibles por el momento.

    Aunque Android Studio 2.1 ahora es estable, el compilador Jack todavía está en fase experimental y debes habilitarlo con la propiedad jackOptions en tu archivo build.gradle.

    Además de los cambios para admitir la versión preliminar de N, Android Studio 2.1 incluye correcciones de errores menores y las siguientes mejoras:

    • El depurador C++ compatible con Java ahora está habilitado de forma predeterminada cuando usas un emulador o dispositivo N y seleccionas el modo de depuración Native (en la pestaña Debugger para la configuración de ejecución y depuración).

    Para acceder a otras mejoras de compilación, como la compilación incremental de Java y la actualización del DEX en el proceso, actualiza tu complemento de Android para Gradle a la versión 2.1.0.

    2.0 (abril de 2016)

    Nota: Si estás desarrollando para la Versión preliminar de N para desarrolladores, debes usar la versión preliminar de Android Studio 2.1. Android Studio 2.0 no es compatible con todas las funciones necesarias para orientar a la versión preliminar de N.

    Instant Run:

    • Android Studio ahora implementa compilaciones limpias más rápido que nunca. Además, aplicar cambios de código incrementales en el emulador o en un dispositivo físico ahora es un proceso casi inmediato. Revisa las actualizaciones sin volver a implementar una compilación de depuración nueva o, en muchos casos, sin reiniciar la app.
    • Instant Run permite aplicar los siguientes cambios en una app en ejecución:
      • Cambios en la implementación de un método de instancia o estático existente
      • Cambios en un recurso existente de la app.
      • Cambios en el código estructural, como una firma de método o un campo estático (requiere un dispositivo de destino que ejecute el nivel de API 21 o versiones posteriores)
    • Consulta la documentación para obtener más información sobre Instant Run.

      Nota: Instant Run solamente es compatible cuando implementas la variante de compilación de depuración, usas el complemento de Android para Gradle 2.0.0 o una versión posterior, y configuras el archivo build.gradle en el nivel de módulo de tu app de modo que funcione con minSdkVersion 15 o versiones posteriores. A fin de obtener el mejor rendimiento, configura tu app para minSdkVersion 21 o una versión posterior.

    Nuevas incorporaciones a lint:

    • Inspección de las sentencias switch mediante valores enteros @IntDef anotados para garantizar que se controlen todas las constantes. Para agregar rápidamente cualquier declaración faltante, usa el menú desplegable de acción de intent y selecciona Add Missing @IntDef Constants.
    • Marcas para indicar intentos incorrectos de usar la interpolación de cadenas para insertar números de versión en el archivo build.gradle.
    • Marcas para indicar clases anónimas que extienden la clase Fragment.
    • Marcas para indicar código nativo en ubicaciones inseguras, como las carpetas res/ y asset/ (esta marca promueve el almacenamiento de código nativo en la carpeta libs/, que se empaqueta posteriormente y de forma segura en la carpeta data/app-lib/ de la app en el momento de la instalación). AOSP: #169950
    • Marcas que indican llamadas inseguras a Runtime.load() y System.load(). AOSP: #179980
    • Es posible buscar y quitar recursos no utilizados seleccionando Refactor > Remove Unused Resources en la barra de menú. Ahora, la detección de recursos no utilizados admite recursos a los que solo hacen referencia recursos no utilizados, referencias en archivos sin procesar (como referencias de imagen .html) y atributos tools:keep y tools:discard que utiliza el reductor de recursos de Gradle. Al mismo tiempo, tiene en cuenta conjuntos de orígenes inactivos (como los recursos utilizados en otras variantes de compilación) y maneja adecuadamente las importaciones de campos estáticos.
    • Comprobación de la compatibilidad de referencias implícitas de la API con todas las plataformas a las que se orienta minSdkVersion.
    • Marcas para indicar el uso inadecuado de RecyclerView y Parcelable.
    • Las inspecciones @IntDef, @IntRange y @Size ahora también se comprueban para varargs y arreglos int.

    Otras mejoras:

    • Se optimizó para Android Emulator 2.0, que es más rápido que nunca, y admite una gama más amplia de dispositivos virtuales y presenta una IU ampliamente mejorada. Para obtener más información sobre el nuevo emulador, consulta las notas de la versión de las herramientas del SDK.
    • Las mejoras en el Administrador del dispositivo virtual de Android son las siguientes:
      • Las imágenes del sistema ahora se clasifican en las siguientes pestañas: Recommended, x86 y Other.
      • En la configuración avanzada, puedes habilitar la compatibilidad con varios núcleos y especificar la cantidad de núcleos que puede usar el emulador.
      • En la configuración avanzada, puedes determinar cómo se renderizan los gráficos en el emulador mediante una de las siguientes opciones:
        • Hardware: Usa la tarjeta gráfica de tu computadora para lograr una renderización más rápida.
        • Software: usa procesamiento basado en software.
        • Auto: Deja que el emulador decida cuál es la mejor opción. Esta es el parámetro de configuración predeterminado.
    • Se redujeron los tiempos de empaquetado de AAPT mediante la especificación del destino de la implementación antes de compilar la app. Esto permite que Android Studio empaquete de manera eficiente solo los recursos que necesita el dispositivo especificado.
    • Se agregó la integración de Cloud Test Lab para proporcionar pruebas de apps on demand con la practicidad y escalabilidad de un servicio en la nube. Obtén más información para usar Cloud Test Lab con Android Studio.
    • Se agregó una vista previa del nuevo depurador de GPU. En aplicaciones con mucha demanda gráfica, ahora puedes recorrer visualmente tu código de OpenGL ES a fin de optimizar tu app o juego.
    • Se agregó la prueba de indexación de aplicaciones de Google. Agrega a tus apps compatibilidad con URLs, indexación de aplicaciones y la funcionalidad de búsqueda para ayudar a aumentar el tráfico hacia tu app, descubrir qué contenido de la app se usa más y atraer usuarios nuevos. Prueba y valida las URLs en tu app, todo en Android Studio. Consulta Compatibilidad con URLs e indexación de aplicaciones en Android Studio.
    • Actualizaciones de la última versión de IntelliJ 15, que incluyen mejoras en el análisis de código y el rendimiento. Consulta las novedades de IntelliJ para leer una descripción completa de las funciones y mejoras nuevas.
    • El autocompletado del editor XML ahora agrega comillas cuando completa los atributos. Para comprobar si esta opción está habilitada, abre el diálogo Setting o Preferences, ve a Editor > General > Smart Keys y marca la casilla junto a Add quotes for attribute value on attribute completion (Error #195113).
    • El editor XML ahora admite la función para completar el código en las expresiones de vinculación de datos.

    Android Studio v1.5.1 (diciembre de 2015)

    Correcciones y mejoras:

    • Se corrigió un problema de falla de procesamiento en el editor de diseño. Problema 194612
    • Se agregó la capacidad para variar los atributos del manifiesto de description según cada configuración. Problema 194705
    • Se mejoró el contraste del tema Darcula de Android Studio en Vector Asset Studio. Problema 191819
    • Se agregó compatibilidad con el botón Help en Vector Asset Studio.
    • Se agregó compatibilidad con el operador % para la vinculación de datos. Problema 194045
    • Se corrigió una situación en la que el lanzamiento de una app para la depuración provocaba que el depurador se conectara a un dispositivo incorrecto. Error 195167
    • Se corrigió una excepción de puntero nulo que podía suceder cuando se intentaba ejecutar una app en determinadas situaciones.

    Android Studio v1.5.0 (noviembre de 2015)

    Correcciones y mejoras:

    • Se agregaron a Android Monitor nuevas capacidades de análisis del monitor de memoria. Ahora, cuando ves un archivo HPROF que captura Android Monitor, la pantalla es más intuitiva para que puedas detectar más rápido los problemas, como las fugas de memoria. Para usar esta función, haz clic en Android Monitor en la parte inferior de la ventana principal. En Android Monitor, haz clic en la pestaña Memory. Cuando se esté ejecutando, haz clic en el ícono Dump Java Heap, selecciona Captures en la ventana principal y haz doble clic en el archivo para verlo. Haz clic en Capture Analysis, a la derecha. (Android Device Monitor no puede ejecutarse al mismo tiempo que Android Monitor).
    • Se agregó una nueva compatibilidad con vínculos directos y vínculos a apps. El editor de código puede crear automáticamente un filtro de intents para vínculos directos en el archivo AndroidManifest.xml. También puede generar código para ayudarte a realizar la integración con la API de App Indexing en una actividad en un archivo Java. Una función de prueba de vínculos directos te ayuda a comprobar que un vínculo directo específico pueda iniciar una app. En la pestaña General del cuadro de diálogo Run/Debug Configurations, puedes especificar opciones de inicio de vínculos directos. También puedes probar las llamadas a la API de App Indexing en una actividad utilizando la pantalla logcat de Android Monitor. La herramienta lint de Android ahora incluye advertencias para determinados problemas relacionados con vínculos directos y con la API de App Indexing.
    • Se agregó la capacidad para usar nombres cortos cuando se completa el código de vistas personalizadas en el editor de código.
    • Se agregó a Vector Asset Studio la posibilidad de usar más elementos VectorDrawable para lograr la retrocompatibilidad. Vector Asset Studio puede usar estos elementos para convertir la interfaz dibujable en vector en imágenes PNG de trama a fin de usarlas con Android 4.4 (nivel de API 20) y versiones anteriores.
    • Se agregaron nuevas comprobaciones de lint para Android TV y Android Auto con el objetivo de brindarte comentarios inmediatos y procesables en Android Studio, junto con numerosas soluciones rápidas. Por ejemplo, en el caso de Android TV, puede informar y proporcionar una solución rápida en cuanto a permisos, hardware no compatible, el elemento uses-feature y problemas de ausencia de banner. En el caso de Android Auto, puede validar el uso correcto en el archivo descriptor al que hace referencia tu archivo AndroidManifest.xml, informar si no hay un filtro de intent para la clase MediaBrowserService e identificar determinados problemas relacionados con las acciones de voz.
    • Se agregaron nuevas comprobaciones lint para receptores de emisión no seguros, SSLCertificateSocketFactory y usos de la clase HostnameVerifier, y llamadas File.setReadable() y File.setWritable(). También se agregó la capacidad de detectar búsquedas de recursos de manifiesto no válidos, especialmente para recursos que varían según la configuración.
    • Se corrigieron varios problemas de estabilidad.

    Android Studio v1.4.1 (octubre de 2015)

    Correcciones y mejoras:

    • Se solucionó un problema de almacenamiento en caché del modelo Gradle que podía provocar una sincronización excesiva de Gradle cuando se reiniciaba el IDE.
    • Se corrigió un problema de interbloqueo de depuración nativa.
    • Se solucionó un problema que bloqueaba a los usuarios del sistema de control de versiones (subversión 1.9).
    • Se corrigió un problema del diálogo Device Chooser donde, después de conectar un dispositivo que no estaba autorizado, ya no se podía seleccionar el emulador. Problema 189658
    • Se corrigieron los errores de traducción incorrectos de las configuraciones regionales que tienen un calificador de región y una traducción en la región (pero no en la configuración regional base). Problema 188577
    • Se corrigió un problema de interbloqueo en Theme Editor relacionado con su interacción con el editor de diseño. Problema 188070
    • Se corrigió un conflicto de recarga y edición de Theme Editor que impedía la correcta actualización de los atributos. Problema: 187726
    • Se mejoró el rendimiento de Theme Editor.
    • Se corrigió un problema por el que se ignoraba el atributo android:required en el manifiesto. Problema: 187665

    Android Studio v1.4.0 (septiembre de 2015)

    Correcciones y mejoras:

    • Se agregó la herramienta Vector Asset Studio para importar gráficos vectoriales, como íconos de materiales y archivos SVG. Para usar esta herramienta, en la vista de Android de la ventana Project, haz clic con el botón derecho en la carpeta res y selecciona New > Vector Asset.
    • Se agregaron nuevas funciones de Android Monitor, GPU y red. Para usar estos monitores, haz clic en Android Monitor en la parte inferior de la ventana principal. (Android Device Monitor no puede ejecutarse al mismo tiempo que Android Monitor).
    • Se agregó una vista previa de la nueva versión de Theme Editor. Para usar esta función, selecciona Tools > Android > Theme Editor.
    • Se actualizaron las plantillas de Android de la biblioteca de compatibilidad de diseño. Ahora, las plantillas incluyen compatibilidad con la especificación de Material Design, así como la biblioteca de compatibilidad de appcompat para ofrecer retrocompatibilidad.

    Android Studio v1.3.2 (agosto de 2015)

    Correcciones y mejoras:

    • Se agregó compatibilidad con Android 6.0 (nivel de API 23), que incluye nuevos íconos y compatibilidad con el Administrador de AVD para crear dispositivos con nuevas densidades de pantalla.
    • Se corrigió una excepción que ocurría durante las comprobaciones de actualización. Problema 183068
    • Se solucionó un problema en el que las coordenadas de vista no resueltas podían provocar una falla en el editor de diseño. Problema 178690
    • Se solucionó un problema con las advertencias de tipo de recurso no válido. Problema 182433
    • Se corrigió la comprobación de lint que marcaba incorrectamente recursos como privados. Problema: 183120

    Android Studio v1.3.1 (agosto de 2015)

    Correcciones y mejoras:

    • Se corrigió la compatibilidad para crear un dispositivo virtual de Android (AVD) Android Wear en Windows.
    • Se actualizó el Project Wizard para usar el nombre de proyecto ingresado.
    • Se agregó compatibilidad con la función que permite que el SDK de Android se almacene en un directorio de solo lectura.
    • Se actualizó el complemento de Android para que funcione con versiones de Gradle hasta la 1.3.0.
    • Se solucionaron problemas al iniciar una sesión de depuración desde el shell de Unix de Android Debug Bridge (adb).
    • Se corrigió el mensaje de cambio de nombre del paquete de Java para mostrar el nombre correcto.

    Android Studio v1.3.0 (julio de 2015)

    Correcciones y mejoras:

    • Se agregaron opciones para habilitar los servicios de desarrollador (como Google AdMob y Analytics) en tu app desde Android Studio.
    • Se agregaron anotaciones adicionales, como @RequiresPermission, @CheckResults y @MainThread.
    • Se agregó la capacidad para generar volcados de montón de Java y analizar las asignaciones de subprocesos desde el monitor de memoria. También es posible convertir archivos de formato binario HPROF específicos de Android al formato HPROF estándar desde Android Studio.
    • Se integró el SDK Manager en Android Studio para simplificar el acceso a paquetes y herramientas, y proporcionar notificaciones de actualización.

      Nota: El SDK Manager independiente todavía está disponible desde la línea de comandos, pero se recomienda usarlo solo con instalaciones de SDK independientes.

    • Se agregó el comando finger a la consola del emulador para simular la autenticación de huellas digitales.
    • Se agregó una declaración de recurso <public> para designar los recursos de la biblioteca como recursos públicos y privados.

      Nota: Se requiere el complemento de Android para Gradle versión 1.3 o posterior.

    • Se agregó compatibilidad con la vinculación de datos para crear diseños declarativos que unan la lógica de la app con los elementos de diseño.
    • Se agregó compatibilidad con un módulo APK de prueba independiente para compilar APKs de prueba en Android Studio.
    • Se actualizó el Administrador de AVD con optimizaciones HAXM y notificaciones mejoradas.
    • Se agregó compatibilidad con el emulador MIPS y ARM de 64 bits para QEMU 2.1.
    • Se agregaron correcciones rápidas, como la generación automática de la implementación parcelable, para simplificar la resolución de las advertencias de lint.
    • Se agregó compatibilidad con plantillas dinámicas para la inserción rápida de fragmentos de código.

    Android Studio v1.2.2 (junio de 2015)

    Correcciones y mejoras:

    • Se corrigieron problemas de compilación que impedían que se completaran las compilaciones.

    Android Studio v1.2.1 (mayo de 2015)

    Correcciones y mejoras:

    • Se corrigieron problemas menores de rendimiento y funciones.

    Android Studio v1.2.0 (abril de 2015)

    Correcciones y mejoras:

    • Se actualizó la ventana de tiempo de ejecución de Android para incluir la herramienta del monitor de memoria y se agregó una pestaña para supervisar el rendimiento de la CPU.
    • Se agregó una pestaña Captures en el margen izquierdo para mostrar la memoria capturada y los archivos de datos de rendimiento de la CPU, como el seguimiento del método de la CPU y las instantáneas del montón de la memoria.
    • Se amplió la compatibilidad con las anotaciones mediante anotaciones de metadatos adicionales y nulabilidad inferida.
    • Se mejoró el editor de traducciones mediante la compatibilidad adicional con la práctica actual recomendada (BCP) 47, que usa códigos de idioma y región de 3 letras.
    • Se integraron funciones de IntelliJ 14 y 14.1 para mejorar el análisis y el rendimiento del código:
      • Se mejoró la depuración para mostrar valores en línea de variables y objetos de referencia, así como para realizar una evaluación en línea de expresiones lambda y del operador.
      • Se agregó la detección de estilo de código para los tamaños de pestañas y sangrías.
      • Se agregaron archivos reutilizables para experimentar con el código y crear prototipos sin archivos de proyecto.
      • Se agregó la inserción simultánea de etiquetas de apertura y cierre en archivos HTML y XML.
      • Se agregó un descompilador de clases Java integrado para que puedas ver el contenido de una biblioteca para el que el código fuente no está disponible.

      Consulta las novedades de IntelliJ para leer una descripción completa de las funciones y mejoras nuevas.

    • Se agregaron vistas de proyecto adicionales para las opciones Scratches, Project Files, Problems, Production y Tests con el fin de mejorar el acceso a los proyectos y su administración.
    • Se mejoraron el menú y los diálogos de File > Settings para optimizar el acceso a la configuración y su administración.
    • Se agregó compatibilidad con pantallas de alta densidad en Windows y Linux.
    • Se agregó compatibilidad para recursos de 280 dpi en la carpeta res/drawable-280dpi/.

    Android Studio v1.1.0 (febrero de 2015)

    Varias correcciones y mejoras:

    • Se agregó compatibilidad con la plantilla de reloj Android Wear.
    • Se modificó la creación de nuevos proyectos y módulos para incluir carpetas res/mipmap de íconos de selector específicos de densidad. Estas carpetas res/mipmap reemplazan las carpetas res/drawable de los íconos de selector.
    • Se actualizaron los íconos de selector para tener un aspecto de Material Design y se agregó un ícono de selector xxxhdpi.
    • Se agregaron y mejoraron las comprobaciones de lint de las combinaciones de región e idioma, los íconos del selector, los nombres de recursos y otros problemas de código comunes.
    • Se agregó compatibilidad con la etiqueta de idioma 47 de la práctica actual recomendada (BCP).

    Android Studio v1.0.1 (diciembre de 2014)

    Varias correcciones y mejoras:

    • Se corrigió el problema de bloqueo del archivo device.xml y de AVD Manager.
    • Se corrigió el registro del emulador en sistemas Windows.
    • Se solucionó el problema de creación de AVD con Android Studio y Android SDK instalados en diferentes unidades en sistemas Windows.
    • Se estableció como Stable el canal de actualización predeterminado para nuevas descargas. Si instalaste la versión 1.0.0 de Android Studio y quieres recibir actualizaciones estables y listas para la producción, usa File > Settings > Updates para cambiar al canal de actualización Stable.

    Android Studio v1.0 (diciembre de 2014)

    Actualización inicial de Android Studio.

    Android Studio v0.8.14 (octubre de 2014)

    Visita tools.android.com para obtener una lista completa de los cambios.

    Android Studio v0.8.6 (agosto de 2014)

    Visita tools.android.com para obtener una lista completa de los cambios.

    Android Studio v0.8.0 (junio de 2014)

    Se agregó compatibilidad con proyectos de Android Wear.

    Visita tools.android.com para obtener una lista completa de los cambios.

    Android Studio v0.5.2 (mayo de 2014)

    Android Studio v0.4.6 (marzo de 2014)

    Android Studio v0.4.2 (enero de 2014)

    Android Studio v0.3.2 (octubre de 2013)

    Android Studio v0.2.x (julio de 2013)

    • Se fusionó en los cambios más recientes de la base de código de IntelliJ. Incluye correcciones de problemas que informaron los usuarios de Studio, como ajustes a los tamaños de fuente de Linux y procesamiento de fuentes.
    • Se actualizó el complemento Gradle para Android a la versión 0.5.0.

      Precaución: Esta actualización nueva no es compatible con versiones anteriores. Cuando abras un proyecto que use una versión anterior del complemento, aparecerá un error en Studio con el mensaje Gradle <nombre del proyecto> project refresh failed.

      El complemento de Gradle actualizado incluye los siguientes cambios:

      • Se corrigió el modelo IDE para contener el archivo de salida incluso si se personalizó mediante el DSL. También se corrigió el DSL a fin de obtener y establecer el archivo de salida en el objeto de la variante para que no sea necesario usar variant.packageApplication or variant.zipAlign.
      • Se corrigió la resolución de dependencia para resolver en conjunto (y no por separado) la combinación de configuración predeterminada, tipos de compilación y tipo(s).
      • Se corrigió la dependencia de las pruebas del proyecto de la biblioteca para incluir adecuadamente todas las dependencias de la biblioteca misma.
      • Se corrigió el caso en el que dos dependencias tienen el mismo nombre de hoja.
      • Se solucionó el problema que no permite que el archivo de reglas de ProGuard se aplique a tipos.

      Todas las notas de la actualización del complemento de Gradle están disponibles aquí: http://tools.android.com/tech-docs/new-build-system.

    • Los errores de Gradle de aapt ya no apuntan a archivos de salida fusionados en la carpeta build/, sino que apuntan a las ubicaciones de origen reales.
    • Compilaciones en paralelo. Ahora, es posible usar las compilaciones en paralelo de Gradle. Ten en cuenta que las compilaciones en paralelo están en "incubación" (consulta la documentación de Gradle). Esta función se encuentra desactivada de forma predeterminada. Para habilitarla, ve a Preferences > Compiler y marca la casilla de verificación Compile independent modules in parallel.
    • Se realizaron más tareas en el nuevo repositorio de recursos utilizado para el procesamiento del diseño, el plegado de recursos en el editor y más:
      • Compatibilidad básica con las dependencias de la biblioteca .aar (por ejemplo, usar una biblioteca sin una copia local de los orígenes). Todavía no funciona para la validación de XML de recursos y la navegación en editores de origen.
      • Se detectaron ciclos en referencias de recursos.
      • La función de documentación rápida (F1), que puede mostrar todas las traducciones de la cadena debajo del símbolo de intercalación, ahora también mostrará todas las superposiciones de recursos de los diversos tipos y compilaciones de Gradle, así como bibliotecas. Se enumeran en orden inverso de superposición de recursos, con tachado en las versiones del string que están enmascaradas.
      • Se realizaron correcciones para manejar la actualización de recursos combinados cuando cambia el conjunto de dependencias del módulo.
      • Se realizaron correcciones del procesamiento de XML para manejar adecuadamente las declaraciones de entidades de caracteres y los escapes de XML y Unicode.
    • Se agregó compatibilidad con la función para guardar capturas de pantalla de las ventanas de vista previa y editor de diseño.
    • Corrección de errores de plantilla.
    • Corrección de errores de lint.
    • Diversas correcciones de informes de fallas. ¡Muchas gracias! Sigue enviando estos informes.

    Android Studio v0.1.x (mayo de 2013)

    • Diversas correcciones de errores, incluida una solución a un problema común de instalación de Windows.

    Versiones anteriores del complemento de Android para Gradle

    3.6.0 (febrero de 2020)

    Esta versión del complemento para Android requiere lo siguiente:

    Funciones nuevas

    Esta versión del complemento de Android para Gradle incluye las siguientes funciones nuevas:

    Vinculación de vistas

    La vinculación de vistas proporciona seguridad en el tiempo de compilación cuando se hace referencia a vistas en el código. Ahora puedes reemplazar findViewById() con la referencia de clase de vinculación generada automáticamente. A fin de comenzar a usar la vinculación de vistas, incluye lo siguiente en el archivo build.gradle de cada módulo:

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

    Para obtener más información, consulta la documentación sobre la vinculación de vistas.

    Compatibilidad con el complemento de Maven Publish

    El complemento de Android para Gradle incluye compatibilidad con el complemento de Maven Publish para Gradle, que te permite publicar artefactos de compilación en un repositorio de Maven de Apache. El complemento de Android para Gradle crea un componente para cada artefacto de variante de compilación en tu app o módulo de biblioteca que puedes usar a los efectos de personalizar una publicación en un repositorio de Maven.

    Si quieres obtener más información, consulta la página que indica cómo usar el complemento de Maven Publish.

    Nueva herramienta de empaquetado predeterminada

    Cuando compilas la versión de depuración de tu app, el complemento usa una herramienta de empaquetado nueva, llamada zipflinger, a fin de compilar tu APK. Esa nueva herramienta debería proporcionar mejoras en la velocidad de compilación. Si no funciona como esperabas, informa un error. Para volver a usar la herramienta de empaquetado anterior, incluye lo siguiente en tu archivo gradle.properties:

            android.useNewApkCreator=false
          
    Atribución de compilación nativa

    Ahora puedes determinar el tiempo que tarda Clang en compilar y vincular cada archivo C/C++ de tu proyecto. Gradle puede generar un registro de Chrome que contenga marcas de tiempo para esos eventos del compilador a fin ayudarte a entender mejor el tiempo que lleva compilar el proyecto. Para generar ese archivo de atribución de compilación, haz lo siguiente:

    1. Agrega la marca -Pandroid.enableProfileJson=true cuando ejecutes una compilación de Gradle. Por ejemplo:

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. Abre el navegador Chrome y escribe chrome://tracing en la barra de búsqueda.

    3. Haz clic en el botón Load y navega hasta <var>project-root</var>/build/android-profile para encontrar el archivo. El nombre del archivo es profile-<var>timestamp</var>.json.gz.

    Puedes ver los datos de la atribución de compilación nativa cerca de la parte superior del visor:

    Registro de atribución de compilación nativa en Chrome

    Cambios en el comportamiento

    Si usas esta versión del complemento, es posible que ocurran los siguientes cambios de comportamiento.

    Bibliotecas nativas empaquetadas sin comprimir de forma predeterminada

    Cuando compilas la app, el complemento ahora establece extractNativeLibs en "false" de forma predeterminada. Es decir, tus bibliotecas nativas están alineadas con la página y empaquetadas sin comprimir. Si bien esto genera un tamaño de carga más grande, los usuarios se benefician de lo siguiente:

    • Un tamaño de instalación de app más pequeño, ya que la plataforma puede acceder a las bibliotecas nativas directamente desde el APK instalado, sin crear una copia de las bibliotecas
    • Un tamaño de descarga menor, ya que la compresión de Play Store suele ser mejor cuando incluyes bibliotecas nativas sin comprimir en tu APK o Android App Bundle

    Si quieres que el complemento de Android para Gradle empaquete bibliotecas nativas comprimidas, incluye lo siguiente en el manifiesto de tu app:

            <application
              android:extractNativeLibs="true"
              ... >
            </application>
            
          

    Nota: El atributo de manifiesto extractNativeLibs se reemplazó por la opción DSL de useLegacyPackaging. A fin de obtener más información, consulta la nota de la versión Cómo usar el DSL para empaquetar bibliotecas nativas comprimidas.

    Versión predeterminada del NDK

    Si descargas varias versiones del NDK, el complemento de Android para Gradle ahora selecciona una versión predeterminada que usará en la compilación de tus archivos de código fuente. Anteriormente, el complemento seleccionaba la última versión descargada del NDK. Usa la propiedad android.ndkVersion en el archivo build.gradle del módulo para anular el valor predeterminado que seleccionó el complemento.

    Generación simplificada de la clase R

    El complemento de Android para Gradle simplifica la ruta de clase de compilación, ya que genera solo una clase R para cada módulo de biblioteca en tu proyecto y comparte esas clases R con otras dependencias del módulo. Esa optimización debería generar compilaciones más rápidas, pero es necesario que tengas en cuenta lo siguiente:

    • Como el compilador comparte clases R con dependencias upstream de módulos, es importante que cada módulo de tu proyecto utilice un nombre de paquete único.
    • La configuración que se utilice para incluir la biblioteca como una dependencia determinará en qué medida las otras dependencias del proyecto podrán ver su clase R. Por ejemplo, si la Biblioteca A incluye a la Biblioteca B como una dependencia "api", la Biblioteca A y otras que dependan de ella tendrán acceso a la clase R de la Biblioteca B. Sin embargo, es posible que otras bibliotecas no tengan acceso a la clase R de la Biblioteca B si la Biblioteca A usa la configuración de dependencia implementation. Para obtener más información, consulta las opciones de configuración de dependencias.
    Eliminación de los recursos que faltan de la configuración predeterminada

    En el caso de los módulos de biblioteca, si incluyes un recurso para un idioma que no agregaste al conjunto predeterminado de recursos (por ejemplo, si incluyes hello_world como un recurso de strings en /values-es/strings.xml, pero no lo defines en /values/strings.xml), el complemento de Android para Gradle dejará de incluir ese recurso cuando compile tu proyecto. Este cambio en el comportamiento debería dar como resultado menos excepciones Resource Not Found en tiempo de ejecución y una mejor velocidad de compilación.

    D8 ahora respeta la política de retención de CLASS para las anotaciones

    Cuando compilas tu app, D8 ahora respeta cuando las anotaciones aplican una política de retención de CLASS, y esas anotaciones ya no están disponibles durante el tiempo de ejecución. Este comportamiento también ocurre cuando se configura el SDK de destino de la app en el nivel de API 23, que antes permitía el acceso a esas anotaciones durante el tiempo de ejecución al momento de compilar la app con versiones más antiguas del complemento de Android para Gradle y D8.

    Otros cambios en el comportamiento
    • aaptOptions.noCompress ya no distingue entre mayúsculas y minúsculas en todas las plataformas (tanto para APK como para paquetes), y respeta las rutas de acceso que utilizan caracteres en mayúsculas.
    • La vinculación de datos ahora es incremental de forma predeterminada. Si deseas obtener más información, consulta el error #110061530.

    • Todas las pruebas de unidades, incluidas las de Robolectric, ahora se pueden almacenar por completo en caché. Si deseas obtener más información, consulta el error #115873047.

    Correcciones de errores

    Esta versión del complemento de Android para Gradle incluye las siguientes correcciones de errores:

    • Las pruebas de unidades de Robolectric ahora son compatibles con los módulos de bibliotecas que usan la vinculación de datos. Si deseas obtener más información, consulta el error #126775542.
    • Ahora puedes ejecutar tareas de connectedAndroidTest en varios módulos mientras el modo de ejecución paralela de Gradle está habilitado.

    Errores conocidos

    En esta sección, se describen los problemas conocidos presentes en el complemento de Android para Gradle 3.6.0.

    Rendimiento lento de la tarea de Android Lint

    Android Lint puede tardar mucho más en completarse en algunos proyectos debido a una regresión en su infraestructura de análisis, lo que genera un cálculo más lento de tipos inferidos para lambdas en ciertas construcciones de código.

    El problema se informa como un error en IDEA y se corregirá en el complemento de Android para Gradle 4.0.

    Falta la clase de manifiesto {:#agp-missing-manifest}

    Si tu app define permisos personalizados en su manifiesto, el complemento de Android para Gradle suele generar una clase Manifest.java que incluye tus permisos personalizados como constantes de string. El complemento empaqueta esa clase con tu app de modo que puedas hacer referencia más fácilmente a esos permisos durante el tiempo de ejecución.

    La generación de la clase del manifiesto no funciona en el complemento de Android para Gradle 3.6.0. Si creas tu app con esa versión del complemento y hace referencia a la clase de manifiesto, es posible que veas una excepción ClassNotFoundException. Para solucionar este problema, realiza una de las siguientes acciones:

    • Haz referencia a tus permisos personalizados por su nombre completamente calificado. Por ejemplo, "com.example.myapp.permission.DEADLY_ACTIVITY".

    • Define tus propias constantes, como se muestra a continuación:

                  public final class CustomPermissions {
                    public static final class permission {
                      public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
                    }
                  }
                  
                

    3.5.0 (agosto de 2019)

    El complemento de Android para Gradle 3.5.0, junto con Android Studio 3.5, es una actualización importante y el resultado de Project Marble, que se enfoca en mejorar tres áreas principales de las herramientas para desarrolladores de Android: estado del sistema, perfeccionamiento de funciones y corrección de errores. Cabe destacar que mejorar la velocidad de compilación del proyecto fue uno de los enfoques principales de esa actualización.

    Si deseas obtener más información sobre esas y otras actualizaciones de Project Marble, consulta la entrada del Blog para desarrolladores de Android o las secciones que se incluyen más abajo.

    Esta versión del complemento para Android requiere lo siguiente:

    3.5.4 (julio de 2020)

    Esta actualización menor es compatible con la nueva configuración predeterminada y las funciones para la visibilidad de los paquetes en Android 11.

    Consulta las notas de la versión 4.0.1 para obtener más detalles.

    3.5.3 (diciembre de 2019)

    Esta actualización menor es compatible con Android Studio 3.5.3 e incluye varias correcciones de errores y mejoras de rendimiento.

    3.5.2 (noviembre de 2019)

    Esta actualización menor es compatible con Android Studio 3.5.2 e incluye varias correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    3.5.1 (octubre de 2019)

    Esta actualización menor es compatible con Android Studio 3.5.1 e incluye varias correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    Procesamiento de anotaciones incrementales

    El procesador de anotaciones de vinculación de datos admite el procesamiento de anotaciones incrementales si configuras android.databinding.incremental=true en tu archivo gradle.properties. Esta optimización mejora el rendimiento de la compilación incremental. Si deseas obtener la lista completa de procesadores de anotaciones optimizados, consulta la tabla de procesadores de anotaciones incrementales.

    Además, KAPT 1.3.30 y las versiones posteriores también admiten los procesadores de anotaciones incrementales, que puedes habilitar si incluyes kapt.incremental.apt=true en tu archivo gradle.properties.

    Pruebas de unidades que se pueden almacenar en caché

    Cuando configuras includeAndroidResources en true para permitir que las pruebas de unidades usen recursos, elementos y manifiestos de Android, el complemento de Android para Gradle genera un archivo de configuración de prueba con rutas de acceso absolutas, que destruyen la capacidad de reubicación de la caché. Puedes indicarle al complemento que, en su lugar, genere la configuración de prueba usando rutas de acceso relativas, que permiten que la tarea AndroidUnitTest se pueda almacenar en caché por completo, si incluyes lo siguiente en tu archivo gradle.properties:

          android.testConfig.useRelativePath = true
        

    Errores conocidos

    • Si usas el complemento de Kotlin para Gradle 1.3.31 o versiones anteriores, es posible que veas la siguiente advertencia mientras compilas o sincronizas tu proyecto:

                WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                        with 'variant.getPackageLibraryProvider()'.
                
              

      Para resolver este error, actualiza el complemento a la versión 1.3.40 o una posterior.

    3.4.0 (abril de 2019)

    Esta versión del complemento para Android requiere lo siguiente:

    3.4.3 (julio de 2020)

    Esta actualización menor es compatible con la nueva configuración predeterminada y las funciones para la visibilidad de los paquetes en Android 11.

    Consulta las notas de la versión 4.0.1 para obtener más detalles.

    3.4.2 (julio de 2019)

    Esta actualización menor es compatible con Android Studio 3.4.2 e incluye varias correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    3.4.1 (mayo de 2019)

    Esta actualización menor es compatible con Android Studio 3.4.1 e incluye varias correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    Funciones nuevas

    • Nuevas configuraciones de dependencia de comprobación de lint: Cambió el comportamiento de lintChecks y se introdujo una configuración de dependencia nueva, lintPublish, a fin de brindar mayor control sobre qué comprobaciones de lint se empaquetan en las bibliotecas de Android.

      • lintChecks: Esta es una configuración existente que debes usar para las comprobaciones de lint que solo deseas ejecutar cuando compilas el proyecto de forma local. Si anteriormente usabas la configuración de dependencia lintChecks para incluir comprobaciones de lint en el archivo AAR publicado, debes migrar esas dependencias a fin de usar la configuración de lintPublish nueva que se describe a continuación.
      • lintPublish: Usa esta configuración nueva en proyectos de biblioteca para las comprobaciones de lint que desees incluir en el archivo AAR publicado, como se muestra a continuación. Eso significa que los proyectos que consumen la biblioteca también aplican esas comprobaciones de lint.

      En la siguiente muestra de código, se usan ambas configuraciones de dependencia en un proyecto de biblioteca local de Android.

      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks project(':lint')
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish project(':lintpublish')
      }
              
      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks(project(":lint"))
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish(project(":lintpublish"))
          }
              
      • En general, debería mejorar la velocidad de compilación para las tareas de empaquetado y firma. Si observas una regresión de rendimiento relacionada con esas tareas, informa el error.

    Cambios en el comportamiento

    • Advertencia de baja del complemento de la función Apps instantáneas Android: Si todavía usas el complemento com.android.feature para compilar apps instantáneas, el complemento de Android para Gradle 3.4.0 te advertirá que aquel dejará de estar disponible. Para asegurarte de que podrás seguir compilando apps instantáneas en versiones futuras del complemento, migra tus apps con el complemento de funciones dinámicas, que también te permite publicar las experiencias de apps instantáneas e instaladas desde un único Android App Bundle.

    • R8 habilitado en la configuración predeterminada: R8 integra en un solo paso los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX, lo que mejora notablemente el rendimiento de las compilaciones. R8 se presentó en el complemento de Android para Gradle 3.3.0 y ahora está habilitada de forma predeterminada para proyectos de bibliotecas de apps y Android que utilicen el complemento 3.4.0 y versiones posteriores.

    En la siguiente imagen, se proporciona una descripción general del proceso de compilación antes de la incorporación de R8.

    Antes de R8, ProGuard era un paso de compilación independiente de la conversión a dex y desugaring.

    Con R8, ahora los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX (D8) se completan en un único paso, como se muestra a continuación.

    Con R8, los procesos de expansión de sintaxis, reducción, ofuscación, optimización y conversión a DEX se llevan a cabo en un único paso de compilación.

    Ten en cuenta que R8 está diseñado para trabajar con las reglas de ProGuard existentes, de modo que es probable que R8 funcione correctamente sin necesidad de que realices ninguna acción. Sin embargo, dado que se trata de una tecnología diferente a la de ProGuard, diseñada específicamente para proyectos de Android, es posible que durante la reducción y la optimización se quite código que ProGuard no quitaría. Por lo tanto, en esta situación poco probable, es posible que sea necesario agregar reglas adicionales para mantener ese código en la compilación de salida.

    Si tienes inconvenientes con el uso de R8, consulta las Preguntas frecuentes sobre la compatibilidad de R8 para comprobar si hay una solución a tu problema. Si no la hay, informa el error. Para inhabilitar R8, agrega una de las siguientes líneas al archivo gradle.properties de tu proyecto:

          # Disables R8 for Android Library modules only.
          android.enableR8.libraries = false
          # Disables R8 for all modules.
          android.enableR8 = false
          
        

    Nota: Para un tipo de compilación determinado, si configuras useProguard en false en el archivo build.gradle del módulo de la app, el complemento de Android para Gradle usará R8 a fin de reducir el código de la app para ese tipo de compilación, independientemente de si inhabilitas R8 en el archivo gradle.properties del proyecto.

    • ndkCompile dejó de estar disponible: Si intentas usar ndkBuild para compilar bibliotecas nativas, se mostrará un error de compilación. En su lugar, debes usar CMake o ndk-build para agregar código C y C++ a tu proyecto.

    Errores conocidos

    • El uso correcto de nombres de paquetes únicos no se aplica actualmente, pero será más estricto en las versiones posteriores del complemento. En la versión 3.4.0 del complemento de Android para Gradle, puedes optar por comprobar si tu proyecto declara nombres de paquete aceptables. A tal fin, agrega la siguiente línea al archivo gradle.properties.

                android.uniquePackageNames = true
                
              

      Si necesitas obtener más información para configurar un nombre de paquete mediante el complemento de Android para Gradle, consulta Cómo establecer el ID de aplicación.

    3.3.0 (enero de 2019)

    Esta versión del complemento para Android requiere lo siguiente:

    3.3.3 (julio de 2020)

    Esta actualización menor es compatible con la nueva configuración predeterminada y las funciones para la visibilidad de los paquetes en Android 11.

    Consulta las notas de la versión 4.0.1 para obtener más detalles.

    3.3.2 (marzo de 2019)

    Esta actualización menor es compatible con Android Studio 3.3.2 e incluye varias correcciones de errores y mejoras de rendimiento. Para ver una lista de las correcciones de errores más importantes, consulta la publicación relacionada en el blog de actualizaciones de versiones.

    3.3.1 (febrero de 2019)

    Esta actualización menor es compatible con Android Studio 3.3.1 e incluye varias correcciones de errores y mejoras de rendimiento.

    Funciones nuevas

    • Sincronización de ruta de clase mejorada: Cuando se resuelven dependencias en las rutas de clase de tiempo de compilación y ejecución, el complemento de Android para Gradle intenta corregir determinados conflictos de versiones descendentes para las dependencias que aparecen en varias rutas de clase.

      Por ejemplo, si la ruta de clase de tiempo de ejecución incluye una Biblioteca A versión 2.0 y la de compilación incluye una Biblioteca A versión 1.0, el complemento actualizará la dependencia automáticamente en la ruta de clase de compilación a la versión 2.0 de la Biblioteca A para evitar errores.

      Sin embargo, si la ruta de clase incluye una Biblioteca A versión 1.0 y la compilación incluye una Biblioteca A versión 2.0, el complemento no cambiará la dependencia de la clase de ruta de compilación a la versión inferior (la Biblioteca A versión 1.0), y se mostrará un error. Si deseas obtener más información, consulta Cómo solucionar conflictos entre rutas de clase.

    • Compilación incremental de Java mejorada cuando se usan procesadores de anotaciones: Esta actualización disminuye el tiempo de compilación, ya que mejora el soporte de compilación incremental de Java cuando se usan procesadores de anotaciones.

      Nota: Esta función es compatible con Gradle 4.10.1 y versiones posteriores, excepto con Gradle 5.1 debido al error 8194 de Gradle.

      • Para proyectos que usan Kapt (la mayoría de los proyectos específicos de Kotlin e híbridos de Kotlin y Java): Se habilitó la compilación incremental de Java, incluso cuando se usa la vinculación de datos o el complemento retro-lambda. El procesamiento de anotaciones de la tarea Kapt aún no es incremental.

      • Para proyectos que no usan Kapt (proyectos específicos de Java): Si todos los procesadores de anotaciones que usas admiten el procesamiento de anotaciones incrementales, la compilación incremental de Java estará habilitada de forma predeterminada. A fin de supervisar la adopción del procesador de anotaciones incrementales, consulta el error 5277 de Gradle.

        Sin embargo, si uno o más procesadores de anotaciones no admiten compilaciones incrementales, la compilación incremental de Java no estará habilitada. En su lugar, puedes incluir la siguiente marca en el archivo gradle.properties:

        android.enableSeparateAnnotationProcessing=true
                    

        Cuando incluyes esa marca, el complemento de Android para Gradle ejecuta los procesadores de anotaciones en una tarea separada y permite que se ejecuten de forma incremental las tareas de compilación de Java.

    • Información de depuración mejorada cuando se usa una API obsoleta: Si el complemento detecta que se está usando una API que ya no se admite, ahora puede proporcionar información más detallada para ayudarte a determinar dónde se está usando la API. Si deseas ver la información adicional, debes incluir lo siguiente en el archivo gradle.properties del proyecto:

                android.debug.obsoleteApi=true
              

      También puedes habilitar la marca pasando -Pandroid.debug.obsoleteApi=true desde la línea de comandos.

    • Puedes ejecutar pruebas de instrumentación en módulos de funciones desde la línea de comandos.

    Cambios en el comportamiento

    • Configuración de tareas diferidas: El complemento ahora usa la API de creación de tareas nuevas de Gradle a fin de evitar la inicialización y configuración de tareas que no son necesarias para completar la compilación actual (o que no están en el gráfico de tareas de ejecución). Por ejemplo, si tienes muchas variantes de compilación, como "actualización" y "depuración", y estás compilando la versión de "depuración" de tu app, el complemento evita la inicialización y la configuración de tareas de la versión de "actualización".

      Si se llama a determinados métodos anteriores en la API de variantes, como variant.getJavaCompile(), es posible que aún se fuerce la configuración de tareas. Para asegurarte de que tu compilación se optimizó para la configuración de tareas diferidas, invoca los métodos nuevos que muestran un objeto TaskProvider, como variant.getJavaCompileProvider().

      Si ejecutas tareas de compilación personalizadas, obtén información para adaptarte a la API de creación de tareas nuevas de Gradle.

    • Para un tipo de compilación determinado, cuando se configura useProguard false, el complemento usa R8 en lugar de ProGuard a fin de reducir y ofuscar el código y los recursos de la app. Si deseas obtener más información sobre R8, consulta esta entrada del Blog para desarrolladores de Android.

    • Generación de clase R más rápida para proyectos de biblioteca: Anteriormente, el complemento de Android para Gradle generaba un archivo R.java en cada una de las dependencias del proyecto y, luego, compilaba esas clases R junto con el resto de las clases de tu app. Ahora el complemento genera un JAR que contiene la clase R compilada de la app de forma directa, sin tener que compilar clases R.java intermedias primero. Esa optimización puede aumentar la velocidad de indexación en Android Studio y mejorar de manera considerable el rendimiento de la compilación para proyectos que incluyen muchos subproyectos y dependencias de biblioteca.

    • Cuando se compila un Android App Bundle, los APKs generados desde ese paquete de aplicación orientados a Android 6.0 (nivel de API 23) o a una versión posterior, ahora incluyen de forma predeterminada versiones sin comprimir de las bibliotecas nativas. Esa optimización evita la necesidad de que el dispositivo cree una copia de la biblioteca y, por lo tanto, reduce el tamaño de la app en el disco. Si prefieres inhabilitar esta optimización, agrega lo siguiente al archivo gradle.properties:

      android.bundle.enableUncompressedNativeLibs = false
              
    • El complemento aplica las versiones mínimas de algunos complementos de terceros.

    • Sincronización de proyectos de una sola variante: Sincronizar el proyecto con tu configuración de compilación es un paso importante para permitir que Android Studio comprenda cómo se estructura el proyecto. Sin embargo, en el caso de proyectos grandes, el proceso puede demorar mucho. Si tu proyecto usa múltiples variantes de compilación, ahora puedes optimizar las sincronizaciones del proyecto limitándolas solo a la variante que hayas seleccionado.

      Para habilitar esta optimización, debes usar Android Studio 3.3 o una versión posterior con el complemento de Android para Gradle 3.3.0 o una versión posterior. Cuando cumples con esos requisitos, el IDE te solicita que habilites la optimización al momento de sincronizar el proyecto. La optimización también está habilitada de forma predeterminada en proyectos nuevos.

      Para habilitarla manualmente, haz clic en File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle en Mac) y selecciona la casilla de verificación Only sync the active variant.

      Nota: Esta optimización es completamente compatible con proyectos que incluyen los lenguajes Java y C++, y ofrece compatibilidad limitada con Kotlin. Cuando se habilita la optimización para proyectos con contenido de Kotlin, la sincronización de Gradle vuelve a usar variantes completas de forma interna.

    • Descarga automática de paquetes de SDK faltantes: Se expandió esta funcionalidad para brindar compatibilidad con el NDK. Para obtener más información, consulta Cómo descargar automáticamente los paquetes que faltan con Gradle.

    Correcciones de errores

    • El complemento de Android para Gradle 3.3.0 corrige los siguientes errores:

      • El proceso de compilación llama a android.support.v8.renderscript.RenderScript en lugar de la versión de AndroidX, a pesar de que esté habilitado Jetifier.
      • Se producen conflictos cuando androidx-rs.jar incluye annotation.AnyRes en paquetes estáticos.
      • Cuando se usa RenderScript, ya no es necesario configurar manualmente la versión de las herramientas de compilación en archivos build.gradle.

    3.2.0 (septiembre de 2018)

    Esta versión del complemento para Android requiere lo siguiente:

    3.2.1 (octubre de 2018)

    Con esta actualización, ya no es necesario especificar la versión de las herramientas de compilación de SDK. El complemento de Android para Gradle ahora usa la versión 28.0.3 de forma predeterminada.

    Funciones nuevas

    • Compatibilidad con compilación de Android App Bundles: El paquete de aplicación es un formato de carga nuevo que incluye todos los recursos y códigos compilados de la app, a la vez que se aplaza la generación del APK y el proceso de firma en Google Play Store. Ya no es necesario compilar, firmar y administrar varios APK, y los usuarios obtienen descargas de menor tamaño optimizadas para su dispositivo. Si quieres obtener más información, consulta Acerca de Android App Bundles.

    • Compatibilidad con velocidades de compilación incremental mejoradas cuando se usan los procesadores de anotaciones: La DSL de AnnotationProcessorOptions ahora amplía CommandLineArgumentProvider, que te permite a ti o al autor del procesador de anotaciones anotar los argumentos del procesador usando anotaciones de tipo de propiedad de compilación incremental. El uso de esas anotaciones mejora la corrección y el rendimiento de las compilaciones limpias incrementales y almacenadas en caché. Para obtener más información, consulta Cómo pasar argumentos a procesadores de anotaciones.

    • Herramienta de migración para AndroidX: Cuando se usa el complemento de Android para Gradle 3.2.0 con Android 3.2 y versiones posteriores, puedes migrar las dependencias de Maven y las locales del proyecto para usar las nuevas bibliotecas de AndroidX. A tal fin, selecciona Refactor > Migrate to AndroidX en la barra de menú. El uso de esta herramienta de migración también configura las siguientes marcas como true en el archivo gradle.properties:

      • android.useAndroidX: Cuando se establece esta marca en true, el complemento para Android usa la biblioteca de AndroidX apropiada en lugar de una biblioteca de compatibilidad. Si no se especifica la marca, el complemento la configura como false de forma predeterminada.

      • android.enableJetifier: Cuando se establece esta marca en true, el complemento para Android reescribe sus objetos binarios a fin de migrar automáticamente las bibliotecas de terceros existentes para usar las dependencias de AndroidX. Si no se especifica la marca, el complemento la configura como false de forma predeterminada. Puedes configurarla en true solo si android.useAndroidX también está configurado en true; de lo contrario, se mostrará un error de compilación.

        Para obtener más información, consulta la descripción general de AndroidX.

    • Reductor de código nuevo, R8: R8 es una herramienta nueva de reducción y ofuscación de código que reemplaza a ProGuard. Puedes comenzar a usar la versión preliminar de R8 incluyendo lo siguiente en el archivo gradle.properties del proyecto:

              android.enableR8 = true
              
              android.enableR8 = true
              

    Cambios en el comportamiento

    • La eliminación de accesos directos con D8 ahora está habilitada de forma predeterminada.

    • AAPT2 ahora está en el repositorio de Maven de Google. Para usar AAPT2, asegúrate de tener la dependencia google() en el archivo build.gradle, como se muestra a continuación:

                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
    • El multidex nativo ahora está habilitado de forma predeterminada. Las versiones anteriores de Android Studio habilitaban multidex nativo cuando se implementaba la versión de depuración de una app en un dispositivo con el nivel de API 21 de Android o una versión posterior. Independientemente de si haces una implementación en un dispositivo o compilas un APK para actualización, el complemento de Android para Gradle habilita multidex nativo en todos los módulos con minSdkVersion=21 o una versión posterior.

    • El complemento ahora aplica una versión mínima de los complementos protobuf (0.8.6), Kotlin (1.2.50) y Crashlytics (1.25.4).

    • El complemento de módulo de funciones, com.android.feature, ahora aplica el uso de solo letras, dígitos y guiones bajos cuando se especifica un nombre de módulo. Por ejemplo, si el nombre del módulo incluye guiones, se mostrará un error. Este comportamiento coincide con el del complemento de funciones dinámicas.

    Correcciones de errores

    • Ahora se puede almacenar JavaCompile en la memoria caché en proyectos con vinculación de datos (Error #69243050).
    • Se mejoró la elusión de compilación para módulos de biblioteca con vinculación de datos (Error #77539932).
    • Ahora puedes volver a habilitar la configuración on demand si la inhabilitaste en versiones anteriores debido a errores de compilación impredecibles (Error #77910727).

    3.1.0 (marzo de 2018)

    Esta versión del complemento para Android requiere lo siguiente:

    • Gradle 4.4 o una versión posterior

      (si deseas obtener más información, consulta la sección que abarca cómo actualizar Gradle)

    • Herramientas de compilación 27.0.3 o una versión posterior

      (ten en cuenta que ya no es necesario especificar una versión para las herramientas de compilación mediante la propiedad android.buildToolsVersion, ya que el complemento usa la versión mínima requerida de forma predeterminada)

    Compilador de DEX nuevo, D8

    De forma predeterminada, Android Studio ahora usa un compilador de DEX nuevo denominado D8. La compilación de DEX es el proceso de transformar el código de bytes .class en .dex para Android Runtime (o Dalvik, para las versiones anteriores de Android). En comparación con el compilador anterior, denominado DX, D8 compila más rápido y genera archivos DEX más pequeños. Además, mantiene el mismo rendimiento de tiempo de ejecución de la app o lo mejora.

    D8 no debería modificar el flujo de trabajo diario de desarrollo de apps. Sin embargo, si tienes problemas relacionados con el compilador nuevo, informa el error. Puedes inhabilitar D8 de forma temporal y usar DX incluyendo lo siguiente en el archivo gradle.properties del proyecto:

          android.enableD8=false
        

    En el caso de los proyectos que usan funciones del lenguaje Java 8, la expansión incremental de sintaxis de accesos directos está habilitada de forma predeterminada. Para inhabilitarla, especifica lo siguiente en el archivo gradle.properties de tu proyecto:

          android.enableIncrementalDesugaring=false.
        

    Usuarios de la versión preliminar: Si ya usas una versión preliminar de D8, ten en cuenta que ahora se compila en función de las bibliotecas incluidas en las herramientas de compilación del SDK, no el JDK. Por lo tanto, si accedes a las APIs que existen en el JDK, pero no a las bibliotecas de herramientas de compilación del SDK, verás un error de compilación.

    Cambios de comportamiento

    • Cuando compilas varios APKs orientados a una ABI diferente, el complemento ya no genera APKs para las siguientes ABI de forma predeterminada: mips, mips64 y armeabi.

      Para compilar un APK que se oriente a esas ABI, usa NDK r16b o una versión anterior, y especifica las ABI en el archivo build.gradle, como se muestra a continuación:

                splits {
                    abi {
                        include 'armeabi', 'mips', 'mips64'
                        ...
                    }
                }
              
                splits {
                    abi {
                        include("armeabi", "mips", "mips64")
                        ...
                    }
                }
              
    • La caché de compilación del complemento para Android ahora desaloja las entradas de caché que tienen más de 30 días.

    • Cuando pasas "auto" a resConfig, ya no se seleccionan automáticamente los recursos de strings para empaquetar en el APK. Si continuas usando "auto", el complemento empaqueta todos los recursos de strings que proporcionan la app y sus dependencias. Por lo tanto, en su lugar, debes especificar cada configuración regional que quieras que el complemento empaquete en el APK.

    • Debido a que los módulos locales no pueden depender del APK de prueba de tu app, agregar dependencias a tus pruebas instrumentadas mediante la configuración de androidTestApi, en lugar de androidTestImplementation, provoca que Gradle emita la siguiente advertencia:

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    Correcciones

    • Se corrige el error por el que Android Studio no reconoce correctamente las dependencias en compilaciones compuestas.
    • Se corrige el error que consiste en mostrar un error de sincronización de proyecto cuando se carga el complemento para Android varias veces en una única compilación (por ejemplo, cuando varios subproyectos incluyen el complemento para Android en la ruta de la clase buildscript).

    3.0.0 (octubre de 2017)

    El complemento de Android para Gradle 3.0.0 incluye una variedad de cambios que están destinados a solucionar problemas de rendimiento de proyectos grandes.

    Por ejemplo, en un proyecto preliminar de muestra con aproximadamente 130 módulos y una gran cantidad de dependencias externas (pero sin código ni recursos), puedes experimentar mejoras de rendimiento similares a las siguientes:

    Versión del complemento de Android y Versión de Gradle Complemento de Android 2.2.0 y Gradle 2.14.1 Complemento de Android 2.3.0 y Gradle 3.3 Complemento de Android 3.0.0 y Gradle 4.1
    Configuración (p. ej., ejecución de ./gradlew --help) Aprox. 2 min Aprox. 9 s Aprox. 2.5 s
    Cambio en Java de 1 línea (cambio de implementación) Aprox. 2 min y 15 s Aprox. 29 s Aprox. 6.4 s

    Algunos de estos cambios dividen las compilaciones existentes. Por lo tanto, debes considerar el esfuerzo de migrar el proyecto antes de usar el nuevo complemento.

    Si no experimentas las mejoras de rendimiento que se describen anteriormente, informa un error e incluye un seguimiento de la compilación mediante el Generador de perfiles de Gradle.

    Esta versión del complemento para Android requiere lo siguiente:

    • Gradle 4.1 o una versión posterior (si deseas obtener más información, consulta la sección que abarca cómo actualizar Gradle)
    • Herramientas de compilación 26.0.2 o una versión posterior (con esta actualización, ya no es necesario especificar una versión para las herramientas de compilación, ya que el complemento usa la versión mínima requerida de forma predeterminada, por lo que puedes quitar la propiedad android.buildToolsVersion)

    3.0.1 (noviembre de 2017)

    Esta es una actualización menor que brinda compatibilidad con Android Studio 3.0.1 e incluye correcciones de errores y mejoras de rendimiento.

    Optimizaciones

    • Se mejoró el paralelismo en proyectos que tienen varios módulos mediante un gráfico de tareas refinado.
    • Cuando se realizan cambios en la dependencia, Gradle realiza compilaciones más rápidas al no volver a compilar los módulos que no tienen acceso a la API de esa dependencia. Debes restringir las dependencias que filtran sus APIs a otros módulos usando las nuevas configuraciones de dependencias de Gradle: implementation, api, compileOnly y runtimeOnly.
    • La velocidad de compilación incremental es mayor debido a la conversión a DEX por clase. Ahora cada clase se compila en archivos DEX independientes, y solo las clases que se modifican se vuelven a convertir a DEX. También se mejoraron las velocidades de compilación para apps que establecen minSdkVersion en 20 o un valor inferior, y usan multi-dex heredado.
    • Se mejoraron las velocidades de compilación mediante la optimización de determinadas tareas para usar resultados en caché. Si quieres aprovechar esta optimización, primero debes habilitar la caché de compilación de Gradle.
    • Se mejoró el procesamiento incremental de recursos gracias al uso de AAPT2, que ahora está habilitada de forma predeterminada. Si tienes problemas a la hora de usar AAPT2, informa el error. También puedes inhabilitar AAPT2 si configuras android.enableAapt2=false en tu archivo gradle.properties y reinicias el daemon de Gradle mediante la ejecución de ./gradlew --stop desde la línea de comandos.

    Funciones nuevas

    • Se incluyó la administración de dependencias con detección de variantes. Cuando se compila la variante de un módulo, el complemento hace coincidir automáticamente las variantes de dependencias de módulos de biblioteca locales con la del módulo que estás compilando.
    • Se incluyó un complemento de módulo de funciones nuevo compatible con Apps instantáneas Android y su SDK, que puedes descargar con SDK Manager. Si deseas obtener más información para crear módulos de funciones con el complemento nuevo, consulta Estructura de una app instantánea con varias funciones.
    • Se agregó compatibilidad integrada para usar determinadas funciones de lenguaje y bibliotecas Java 8. Jack se dio de baja y ya no se necesita, y deberás inhabilitarlo antes de usar la compatibilidad mejorada con Java 8 que está integrada en la cadena de herramientas predeterminada. Si deseas obtener más información, consulta Cómo usar funciones del lenguaje Java 8.
    • Se agregó compatibilidad para ejecutar pruebas con Android Test Orchestrator, que permite ejecutar cada una de las pruebas de la app dentro de la invocación de Instrumentation. Dado que cada prueba se ejecuta en su propia instancia de Instrumentation, los estados compartidos entre las pruebas no se acumulan en la CPU ni en la memoria del dispositivo. Además, aunque falle una de las pruebas, solo se eliminará su propia instancia de Instrumentation, de modo que aún se seguirá ejecutando el resto de las pruebas.

      • Se agregó testOptions.execution para determinar si se usará la organización de la prueba en el dispositivo. Si deseas usar Android Test Orchestrator, debes especificar ANDROID_TEST_ORCHESTRATOR, como se muestra a continuación. De forma predeterminada, esta propiedad se establece en HOST, que inhabilita la organización en el dispositivo y es el método estándar para ejecutar pruebas.

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • Se agregó una nueva configuración de dependencias androidTestUtil, que permite instalar otro APK auxiliar de prueba antes de ejecutar las pruebas de instrumentación, como Android Test Orchestrator:

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • Se agregó testOptions.unitTests.includeAndroidResources, que brinda compatibilidad con pruebas de unidades que requieren recursos de Android, como Roboelectric. Cuando se establece esta propiedad en true, el complemento lleva a cabo la combinación de recursos, elementos y manifiestos antes de ejecutar las pruebas de unidades. Luego, las pruebas pueden inspeccionar com/android/tools/test_config.properties en la ruta de clase para las siguientes claves:

      • android_merged_assets: Es la ruta de acceso absoluta del directorio de recursos combinados.

        Nota: Para los módulos de biblioteca, los recursos combinados no contienen los elementos de las dependencias (consulta el error #65550419).

      • android_merged_manifest: Es la ruta de acceso absoluta al archivo de manifiesto combinado.

      • android_merged_resources: Es la ruta de acceso absoluta al directorio de recursos combinados, que contiene todos los recursos del módulo y todas sus dependencias.

      • android_custom_package: Es el nombre del paquete de la clase R final. Si modificas de manera dinámica el ID de aplicación, es posible que el nombre de este paquete no coincida con el atributo package en el manifiesto de la app.

    • Compatibilidad con fuentes como recursos (una función nueva que se introdujo en Android 8.0 (nivel de API 26)).
    • Se agregó compatibilidad para APK específicos de idioma con el SDK de Apps instantáneas Android 1.1 y versiones posteriores.
    • Ahora es posible cambiar el directorio de salida del proyecto de compilación nativo externo, como se muestra a continuación:

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • Ahora puedes usar CMake 3.7 o versiones posteriores cuando compiles proyectos nativos desde Android Studio.
    • La nueva configuración de dependencias lintChecks permite compilar un JAR que define reglas de lint personalizadas y empaquetarlo en tus proyectos de AAR y APK.

      Las reglas de lint personalizadas deben pertenecer a un proyecto separado que genere un único JAR e incluya solo dependencias compileOnly. Luego, otros módulos de app y biblioteca pueden depender del proyecto de lint mediante la configuración lintChecks:

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    Cambios en el comportamiento

    • El complemento para Android 3.0.0 quita determinadas APIs que, si se usan, se dañará la compilación. Por ejemplo, ya no es posible usar la API de variantes para acceder a objetos outputFile() ni usar processManifest.manifestOutputFile() a fin de obtener el archivo de manifiesto de cada variante. Si deseas obtener más información, consulta Cambios en la API.
    • Ya no es necesario especificar una versión para las herramientas de compilación (por lo tanto, ahora puedes quitar la propiedad android.buildToolsVersion). De forma predeterminada, el complemento usa automáticamente la versión mínima requerida de las herramientas de compilación correspondiente a la versión del complemento para Android que estás usando.
    • Ahora puedes habilitar o inhabilitar la compresión de PNG en el bloque buildTypes, como se muestra a continuación. La compresión de PNG ahora está habilitada de forma predeterminada para todas las compilaciones, excepto para las de depuración, ya que aumentan el tiempo de compilación en proyectos que incluyen muchos archivos PNG. Por lo tanto, a fin de mejorar los tiempos de compilación en otros tipos de compilaciones, debes inhabilitar la compresión de PNG o convertir las imágenes a WebP.

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • El complemento para Android ahora compila automáticamente los objetivos ejecutables que se configuran en los proyectos de CMake externos.
    • Ahora debes agregar procesadores de anotaciones a la ruta de clase del procesador usando la configuración de dependencia annotationProcessor.
    • Ahora, el uso del elemento obsoleto ndkCompile tiene más restricciones. En su lugar, debes comenzar a utilizar CMake o ndk-build para compilar código nativo que quieras empaquetar en tu APK. Para obtener más información, consulta Cómo migrar desde ndkcompile.

    3.0.0 (octubre de 2017)

    El complemento de Android para Gradle 3.0.0 incluye una variedad de cambios que están destinados a solucionar problemas de rendimiento de proyectos grandes.

    Por ejemplo, en un proyecto preliminar de muestra con aproximadamente 130 módulos y una gran cantidad de dependencias externas (pero sin código ni recursos), puedes experimentar mejoras de rendimiento similares a las siguientes:

    Versión del complemento de Android y Versión de Gradle Complemento de Android 2.2.0 y Gradle 2.14.1 Complemento de Android 2.3.0 y Gradle 3.3 Complemento de Android 3.0.0 y Gradle 4.1
    Configuración (p. ej., ejecución de ./gradlew --help) Aprox. 2 min Aprox. 9 s Aprox. 2.5 s
    Cambio en Java de 1 línea (cambio de implementación) Aprox. 2 min y 15 s Aprox. 29 s Aprox. 6.4 s

    Algunos de estos cambios dividen las compilaciones existentes. Por lo tanto, debes considerar el esfuerzo de migrar el proyecto antes de usar el nuevo complemento.

    Si no experimentas las mejoras de rendimiento que se describen anteriormente, informa un error e incluye un seguimiento de la compilación mediante el Generador de perfiles de Gradle.

    Esta versión del complemento para Android requiere lo siguiente:

    • Gradle 4.1 o una versión posterior (si deseas obtener más información, consulta la sección que abarca cómo actualizar Gradle)
    • Herramientas de compilación 26.0.2 o una versión posterior (con esta actualización, ya no es necesario especificar una versión para las herramientas de compilación, ya que el complemento usa la versión mínima requerida de forma predeterminada, por lo que puedes quitar la propiedad android.buildToolsVersion)

    3.0.1 (noviembre de 2017)

    Esta es una actualización menor que brinda compatibilidad con Android Studio 3.0.1 e incluye correcciones de errores y mejoras de rendimiento.

    Optimizaciones

    • Se mejoró el paralelismo en proyectos que tienen varios módulos mediante un gráfico de tareas refinado.
    • Cuando se realizan cambios en la dependencia, Gradle realiza compilaciones más rápidas al no volver a compilar los módulos que no tienen acceso a la API de esa dependencia. Debes restringir las dependencias que filtran sus APIs a otros módulos usando las nuevas configuraciones de dependencias de Gradle: implementation, api, compileOnly y runtimeOnly.
    • La velocidad de compilación incremental es mayor debido a la conversión a DEX por clase. Ahora cada clase se compila en archivos DEX independientes, y solo las clases que se modifican se vuelven a convertir a DEX. También se mejoraron las velocidades de compilación para apps que establecen minSdkVersion en 20 o un valor inferior, y usan multi-dex heredado.
    • Se mejoraron las velocidades de compilación mediante la optimización de determinadas tareas para usar resultados en caché. Si quieres aprovechar esta optimización, primero debes habilitar la caché de compilación de Gradle.
    • Se mejoró el procesamiento incremental de recursos gracias al uso de AAPT2, que ahora está habilitada de forma predeterminada. Si tienes problemas a la hora de usar AAPT2, informa el error. También puedes inhabilitar AAPT2 si configuras android.enableAapt2=false en tu archivo gradle.properties y reinicias el daemon de Gradle mediante la ejecución de ./gradlew --stop desde la línea de comandos.

    Funciones nuevas

    • Se incluyó la administración de dependencias con detección de variantes. Cuando se compila la variante de un módulo, el complemento hace coincidir automáticamente las variantes de dependencias de módulos de biblioteca locales con la del módulo que estás compilando.
    • Se incluyó un complemento de módulo de funciones nuevo compatible con Apps instantáneas Android y su SDK, que puedes descargar con SDK Manager. Si deseas obtener más información para crear módulos de funciones con el complemento nuevo, consulta Estructura de una app instantánea con varias funciones.
    • Se agregó compatibilidad integrada para usar determinadas funciones de lenguaje y bibliotecas Java 8. Jack se dio de baja y ya no se necesita, y deberás inhabilitarlo antes de usar la compatibilidad mejorada con Java 8 que está integrada en la cadena de herramientas predeterminada. Si deseas obtener más información, consulta Cómo usar funciones del lenguaje Java 8.
    • Se agregó compatibilidad para ejecutar pruebas con Android Test Orchestrator, que permite ejecutar cada una de las pruebas de la app dentro de la invocación de Instrumentation. Dado que cada prueba se ejecuta en su propia instancia de Instrumentation, los estados compartidos entre las pruebas no se acumulan en la CPU ni en la memoria del dispositivo. Además, aunque falle una de las pruebas, solo se eliminará su propia instancia de Instrumentation, de modo que aún se seguirá ejecutando el resto de las pruebas.

      • Se agregó testOptions.execution para determinar si se usará la organización de la prueba en el dispositivo. Si deseas usar Android Test Orchestrator, debes especificar ANDROID_TEST_ORCHESTRATOR, como se muestra a continuación. De forma predeterminada, esta propiedad se establece en HOST, que inhabilita la organización en el dispositivo y es el método estándar para ejecutar pruebas.

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • Se agregó una nueva configuración de dependencias androidTestUtil, que permite instalar otro APK auxiliar de prueba antes de ejecutar las pruebas de instrumentación, como Android Test Orchestrator:

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • Se agregó testOptions.unitTests.includeAndroidResources, que brinda compatibilidad con pruebas de unidades que requieren recursos de Android, como Roboelectric. Cuando se establece esta propiedad en true, el complemento lleva a cabo la combinación de recursos, elementos y manifiestos antes de ejecutar las pruebas de unidades. Luego, las pruebas pueden inspeccionar com/android/tools/test_config.properties en la ruta de clase para las siguientes claves:

      • android_merged_assets: Es la ruta de acceso absoluta del directorio de recursos combinados.

        Nota: Para los módulos de biblioteca, los recursos combinados no contienen los elementos de las dependencias (consulta el error #65550419).

      • android_merged_manifest: Es la ruta de acceso absoluta al archivo de manifiesto combinado.

      • android_merged_resources: Es la ruta de acceso absoluta al directorio de recursos combinados, que contiene todos los recursos del módulo y todas sus dependencias.

      • android_custom_package: Es el nombre del paquete de la clase R final. Si modificas de manera dinámica el ID de aplicación, es posible que el nombre de este paquete no coincida con el atributo package en el manifiesto de la app.

    • Compatibilidad con fuentes como recursos (una función nueva que se introdujo en Android 8.0 (nivel de API 26)).
    • Se agregó compatibilidad para APK específicos de idioma con el SDK de Apps instantáneas Android 1.1 y versiones posteriores.
    • Ahora es posible cambiar el directorio de salida del proyecto de compilación nativo externo, como se muestra a continuación:

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • Ahora puedes usar CMake 3.7 o versiones posteriores cuando compiles proyectos nativos desde Android Studio.
    • La nueva configuración de dependencias lintChecks permite compilar un JAR que define reglas de lint personalizadas y empaquetarlo en tus proyectos de AAR y APK.

      Las reglas de lint personalizadas deben pertenecer a un proyecto separado que genere un único JAR e incluya solo dependencias compileOnly. Luego, otros módulos de app y biblioteca pueden depender del proyecto de lint mediante la configuración lintChecks:

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    Cambios en el comportamiento

    • El complemento para Android 3.0.0 quita determinadas APIs que, si se usan, se dañará la compilación. Por ejemplo, ya no es posible usar la API de variantes para acceder a objetos outputFile() ni usar processManifest.manifestOutputFile() a fin de obtener el archivo de manifiesto de cada variante. Si deseas obtener más información, consulta Cambios en la API.
    • Ya no es necesario especificar una versión para las herramientas de compilación (por lo tanto, ahora puedes quitar la propiedad android.buildToolsVersion). De forma predeterminada, el complemento usa automáticamente la versión mínima requerida de las herramientas de compilación correspondiente a la versión del complemento para Android que estás usando.
    • Ahora puedes habilitar o inhabilitar la compresión de PNG en el bloque buildTypes, como se muestra a continuación. La compresión de PNG ahora está habilitada de forma predeterminada para todas las compilaciones, excepto para las de depuración, ya que aumentan el tiempo de compilación en proyectos que incluyen muchos archivos PNG. Por lo tanto, a fin de mejorar los tiempos de compilación en otros tipos de compilaciones, debes inhabilitar la compresión de PNG o convertir las imágenes a WebP.

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • El complemento para Android ahora compila automáticamente los objetivos ejecutables que se configuran en los proyectos de CMake externos.
    • Ahora debes agregar procesadores de anotaciones a la ruta de clase del procesador usando la configuración de dependencia annotationProcessor.
    • Ahora, el uso del elemento obsoleto ndkCompile tiene más restricciones. En su lugar, debes comenzar a utilizar CMake o ndk-build para compilar código nativo que quieras empaquetar en tu APK. Para obtener más información, consulta Cómo migrar desde ndkcompile.

    2.3.0 (febrero de 2017)

    2.3.3 (junio de 2017)

    Esta es una actualización menor que agrega compatibilidad con Android Studio 2.3.3.

    2.3.2 (mayo de 2017)

    Esta es una actualización menor que agrega compatibilidad con Android Studio 2.3.2.

    2.3.1 (abril de 2017)

    Esta es una actualización menor del complemento para Android 2.3.0 que corrige un error por el que algunos dispositivos Android físicos no funcionaban correctamente con Instant Run (consulta el Error #235879).

    Dependencias:
    Novedades:
    • Usa Gradle 3.3, que incluye mejoras de rendimiento y funciones nuevas. Para obtener más información, consulta las notas de la versión de Gradle.
    • Caché de compilación: Almacena determinada información de salida que genera el complemento para Android cuando se compila el proyecto (como AAR sin empaquetar y dependencias remotas que pasaron un proceso de pre-dexing). Tus compilaciones limpias son mucho más rápidas mientras se usa la caché, ya que el sistema de compilación puede simplemente reutilizar esos archivos almacenados en caché, en compilaciones posteriores, en lugar de volver a crearlos. Los proyectos que usan el complemento para Android 2.3.0 y versiones posteriores utilizan la caché de compilación de forma predeterminada. Para obtener más información, consulta Cómo mejorar la velocidad de compilación con la caché de compilación.
    Cambios:

    2.2.0 (septiembre de 2016)

    Dependencias:
    Novedades:
    • Usa Gradle 2.14.1, que incluye mejoras de rendimiento y funciones nuevas, además de corregir una vulnerabilidad de seguridad que permite la elevación de privilegios local cuando se usa el daemon de Gradle. Para obtener más información, consulta las notas de la versión de Gradle.
    • Con el DSL de externalNativeBuild {}, Gradle ahora permite vincular a fuentes nativas y compilar bibliotecas nativas usando CMake o ndk-build. Después de compilar las bibliotecas nativas, Gradle las empaqueta en tu APK. Si deseas obtener más información para usar CMake y ndk-build con Gradle, lee Cómo agregar código C y C++ a tu proyecto.
    • Cuando ejecutas una compilación desde la línea de comandos, Gradle ahora intenta descargar automáticamente los componentes del SDK faltantes o las actualizaciones de las que depende el proyecto. Para obtener más información, consulta Cómo descargar automáticamente los paquetes que faltan con Gradle.
    • Una nueva función experimental de almacenamiento en caché permite a Gradle acelerar los tiempos de compilación a través del proceso de pre-dexing, el almacenamiento y la reutilización de las versiones anteriores de las bibliotecas convertidas a DEX. Si quieres obtener más información para usar esta función experimental, consulta la guía sobre Caché de compilación.
    • Mejora el rendimiento de compilación, ya que adopta una canalización de empaquetado predeterminada nueva que controla la compresión, la firma y el uso de zipalign en una tarea. Puedes volver a usar las herramientas de empaquetado anteriores agregando android.useOldPackaging=true al archivo gradle.properties. Mientras se usa la nueva herramienta de empaquetado, no está disponible la tarea zipalignDebug. Sin embargo, puedes crear una llamando al método createZipAlignTask(String taskName, File inputFile, File outputFile).
    • La firma del APK ahora usa el Esquema de firma de APK v2, además de la de JAR tradicional. Todas las plataformas de Android aceptan los APK resultantes. Cualquier modificación a esos APK después de firmar invalida las firmas v2 y evita la instalación en un dispositivo. Para inhabilitar esta función, agrega lo siguiente al archivo build.gradle a nivel del módulo:

      Groovy

      android {
        ...
        signingConfigs {
          config {
            ...
            v2SigningEnabled false
          }
        }
      }
            

      Kotlin

      android {
        ...
        signingConfigs {
          create("config") {
            ...
            v2SigningEnabled = false
          }
        }
      }
            
    • Para compilaciones multidex, ahora puedes usar las reglas de ProGuard a fin de determinar qué clases debe compilar Gradle en el archivo DEX principal de la app. Dado que el sistema de Android primero carga el archivo DEX principal cuando se inicia la app, puedes priorizar ciertas clases en el inicio mediante su compilación en ese archivo DEX. Después de crear un archivo de configuración de ProGuard especial para el archivo DEX principal, pasa la ruta de acceso del archivo de configuración a Gradle mediante buildTypes.multiDexKeepProguard. El uso de este DSL es diferente del de buildTypes.proguardFiles, que proporciona reglas generales de ProGuard para la app y no especifica las clases del archivo DEX principal.
    • Agrega compatibilidad con la marca android:extractNativeLibs, que puede reducir el tamaño de la app cuando la instalas en un dispositivo. Cuando estableces esta marca en false en el elemento <application> del manifiesto de la app, Gradle empaqueta las versiones sin comprimir y alineadas de las bibliotecas nativas con el APK. De esta manera, se evita que PackageManager copie las bibliotecas nativas del APK en el sistema de archivos del dispositivo durante la instalación y permite realizar actualizaciones delta de la app más pequeñas.
    • Ahora puedes especificar versionNameSuffix y applicationIdSuffix para las variantes de producto (Error #59614).
    Cambios:
    • getDefaultProguardFile ahora muestra los archivos ProGuard predeterminados que proporciona el complemento de Android para Gradle y ya no usa los del SDK de Android.
    • Rendimiento y funciones mejorados del compilador Jack:
      • Jack ahora es compatible con la cobertura de prueba Jacoco cuando se establece testCoverageEnabled en true.
      • Se mejoró la compatibilidad para procesadores de anotaciones. Los procesadores de anotaciones de la ruta de clase, como cualquier dependencia de compile, se aplican automáticamente a la compilación. También puedes especificar un procesador de anotaciones en tu compilación y pasar argumentos mediante el DSL de javaCompileOptions.annotationProcessorOptions {} en el archivo build.gradle a nivel del módulo:

        Groovy

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className 'com.example.MyProcessor'
                // Arguments are optional.
                arguments = [ foo : 'bar' ]
              }
            }
          }
        }
            

        Kotlin

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className = "com.example.MyProcessor"
                // Arguments are optional.
                arguments(mapOf(foo to "bar"))
              }
            }
          }
        }
            

        Si deseas aplicar un procesador de anotaciones durante el tiempo de compilación, pero no quieres incluirlo en el APK, usa el alcance de la dependencia annotationProcessor:

        Groovy

        dependencies {
            compile 'com.google.dagger:dagger:2.0'
            annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            

        Kotlin

        dependencies {
            implementation("com.google.dagger:dagger:2.0")
            annotationProcessor("com.google.dagger:dagger-compiler:2.0")
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            
      • Para obtener una lista de los parámetros que puedes configurar, ejecuta lo siguiente desde la línea de comandos:

        java -jar /build-tools/jack.jar --help-properties
        
      • De forma predeterminada, si el tamaño del montón del daemon de Gradle es de al menos 1.5 GB, Jack ahora se ejecutará en el mismo proceso que Gradle. Para ajustar el tamaño del montón de daemon, agrega lo siguiente a tu archivo gradle.properties:
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0 (abril de 2016)

    2.1.3 (agosto de 2016)

    Esta actualización requiere Gradle 2.14.1 o una versión posterior. Gradle 2.14.1 incluye mejoras de rendimiento, funciones nuevas y una corrección de seguridad importante. Para obtener más información, consulta las notas de la versión de Gradle.

    Dependencias:
    Novedades:
    • Se agregó compatibilidad con la Vista previa para desarrolladores de N, JDK 8 y funciones del lenguaje Java 8 usando la cadena de herramientas de Jack. Para obtener más información, consulta la Guía de versiones preliminares de N.

      Nota: Por el momento, Instant Run no funciona con Jack y se inhabilitará durante el uso de la nueva cadena de herramientas. Solo debes usar Jack si estás desarrollando contenido para las vistas previas de N y quieres usar las funciones del lenguaje Java 8 compatibles.

    • Se agregó compatibilidad predeterminada para la compilación incremental de Java con el fin de reducir el tiempo de compilación durante el desarrollo. Para ello, se vuelven a compilar partes de la fuente que cambiaron o que es necesario volver a compilar. Para inhabilitar esta función, agrega el siguiente código al archivo build.gradle de nivel de módulo:

      Groovy

      android {
        ...
        compileOptions {
          incremental false
        }
      }
      

      Kotlin

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
      
    • Se agregó compatibilidad con el proceso de conversión a Dex, que lleva a cabo la conversión a dex durante la compilación, en lugar de hacerlo en procesos de VM externos separados. Esto no solo acelera las compilaciones incrementales, sino también las compilaciones completas. Esta función está habilitada de forma predeterminada para proyectos que tienen configurado el tamaño de montón máximo del daemon de Gradle en al menos 2,048 MB. Para ello, incluye lo siguiente en el archivo gradle.properties del proyecto:

      ```none org.gradle.jvmargs = -Xmx2048m ```

      Si defines un valor para javaMaxHeapSize en tu archivo build.gradle de nivel de módulo, debes establecer org.gradle.jvmargs en un valor de javaMaxHeapSize + 1,024 MB. Por ejemplo, si estableces javaMaxHeapSize en "2048m", debes agregar lo siguiente al archivo gradle.properties de tu proyecto:

      ```none org.gradle.jvmargs = -Xmx3072m ```

      Para inhabilitar el proceso de conversión a Dex, agrega el siguiente código al archivo build.gradle a nivel de módulo:

      Groovy

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }
      

    2.0.0 (abril de 2016)

    Dependencias:
    Novedades:
    • Para habilitar Instant Run, puedes admitir la inyección de código de bytes y enviar actualizaciones de código y recursos a una app en ejecución en el emulador o en un dispositivo físico.
    • Se agregó compatibilidad con compilaciones incrementales, incluso si no se está ejecutando la app. Se mejoraron los tiempos de compilación completa mediante la aplicación de cambios incrementales en el dispositivo conectado a través de Android Debug Bridge.
    • Se agregó maxProcessCount para controlar cuántos procesos de trabajo subordinados se pueden generar al mismo tiempo. En el siguiente código, en el archivo build.gradle de nivel de módulo, se configura el número máximo de procesos simultáneos en 4:

      Groovy

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      
        </li>
      
        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
        of dependencies, which are not supported with Proguard. This improves the build
        speed of your debug build variant. Because the experimental shrinker does not
        support optimization and obfuscation, you should enable Proguard for your
        release builds. To enable the experimental shrinker for your debug builds, add
        the following to your module-level <code>build.gradle</code> file:
      

      Groovy

      android {
        ...
        buildTypes {
          debug {
            minifyEnabled true
            useProguard false
          }
          release {
            minifyEnabled true
            useProguard true // this is a default setting
          }
        }
      }
      

      Kotlin

      android {
        ...
        buildTypes {
          getByName("debug") {
            minifyEnabled = true
            useProguard = false
          }
          getByName("release") {
            minifyEnabled = true
            useProguard = true // this is a default setting
          }
        }
      }
      
        </li>
      
        <li>Added logging support and improved performance for the resource shrinker.
        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
        file located in the same folder as the Proguard log files.
        </li>
      </ul>
      

    Comportamiento modificado:
    • Cuando se configura minSdkVersion en 18 o en un valor superior, la firma del APK usa SHA256.
    •   <li>DSA and ECDSA keys can now sign APK packages.
      
          <p class="note">
            <strong>Note:</strong> The <a href=
            "/training/articles/keystore.html">Android keystore</a> provider no
            longer supports <a href=
            "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
            DSA keys on Android 6.0</a> (API level 23) and higher.
          </p>
      
        </li>
      </ul>
      

    Errores corregidos:
    • Se corrigió un error que generaba dependencias de AAR duplicadas en las configuraciones de compilación principal y de prueba.

    Complemento de Android para Gradle, revisión 1.5.0 (noviembre de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se integró el complemento de vinculación de datos al complemento de Android para Gradle. Para habilitarlo, agrega el siguiente código a cada archivo build.gradle del proyecto que use el complemento.
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • Se agregó una nueva API de transformación para permitir que complementos de terceros manipulen los archivos .class compilados antes de que se conviertan a archivos .dex. Esta API simplifica la inyección de manipulaciones de clase personalizada a la vez que ofrece más flexibilidad en relación con lo que se puede manipular. Para insertar una transformación en una compilación, crea una nueva clase mediante la implementación de una de las interfaces de Transform y regístrala con android.registerTransform(theTransform) o android.registerTransform(theTransform, dependencies). No es necesario conectar las tareas. Ten en cuenta lo siguiente sobre la API de transformación:
      • Una transformación se puede aplicar a una o más de las siguientes opciones: el proyecto actual, los subproyectos y las bibliotecas externas.
      • Una transformación se registra globalmente y se aplica así a todas las variantes.
      • El procesamiento de código interno, mediante la biblioteca de cobertura de código Java (JaCoCo), ProGuard y MultiDex, ahora usa la API de transformación. Sin embargo, Java Android Compiler Kit (Jack) no usa esta API: solo la usa la ruta de acceso de código javac/dx.
      • Gradle ejecuta las transformaciones en este orden: JaCoCo, complementos de terceros, ProGuard. El orden de ejecución de complementos de terceros coincide con el orden en el que los complementos de terceros agregan las transformaciones; los desarrolladores de complementos de terceros no pueden controlar el orden de ejecución de las transformaciones mediante una API.
    • Se dejó de usar el captador dex desde la clase ApplicationVariant. Ya no es posible acceder a la tarea Dex a través de la API de la variante porque ahora se logra mediante una transformación. Por el momento, no hay ningún reemplazo para controlar el proceso de dex.
    • Se corrigió la compatibilidad incremental con elementos.
    • Se mejoró la compatibilidad con MultiDex, que ahora está disponible para proyectos de prueba. Asimismo, las pruebas ahora tienen automáticamente la dependencia com.android.support:multidex-instrumentation.
    • Se agregó la capacidad de informar correctamente un error de compilación de Gradle y la causa subyacente del error cuando la compilación de Gradle invoca tareas asíncronas y hay un error en el proceso del trabajador.
    • Se agregó compatibilidad para la configuración de una interfaz binaria de la aplicación (ABI) en variantes que contienen varias ABI.
    • Se agregó compatibilidad para una lista delimitada por comas de números de serie de dispositivos para la variable de entorno ANDROID_SERIAL cuando se instalan o ejecutan pruebas.
    • Se corrigió un error de instalación en dispositivos que ejecutan Android 5.0 (nivel de API 20) y versiones posteriores cuando el nombre del APK contiene un espacio.
    • Se corrigieron varios errores relacionados con los resultados de Android Asset Packaging Tool (AAPT).
    • Se agregó compatibilidad con instrumentación incremental de JaCoCo para obtener compilaciones incrementales más rápidas. El complemento de Android para Gradle ahora invoca directamente el instrumentador de JaCoCo. Para forzar una versión más reciente del instrumentador de JaCoCo, debes agregarla como dependencia de la secuencia de comandos de la compilación.
    • Se corrigió la compatibilidad con JaCoCo, de modo que omite los archivos que no son clases.
    • Se agregó compatibilidad con elementos de diseño de vectores para generar archivos PNG en el tiempo de compilación a fin de admitir la retrocompatibilidad. El complemento de Android para Gradle genera archivos PNG para cada interfaz dibujable en vector que se encuentra en un directorio de recursos que no especifica una versión de API, o que especifica un atributo android:minSdkVersion de 20 o menos en el elemento <uses-sdk> del manifiesto de la app. Puedes definir las densidades de PNG mediante la propiedad generatedDensities en las secciones defaultConfig o productFlavor de un archivo build.gradle.
    • Se agregó el uso compartido del android.jar simulable, que el complemento genera solo una vez y lo usa para prueba de unidades. Varios módulos, como app y lib, ahora lo comparten. Borra $rootDir/build para volver a generarlo.
    • Se cambió el procesamiento de los recursos de Java para que se lleve a cabo antes de las tareas de ofuscación, en lugar de durante el empaquetado del APK. Este cambio permite que las tareas de ofuscación tengan la oportunidad de adaptar los recursos de Java según la ofuscación de paquetes.
    • Se corrigió un error con el código de la interfaz nativa de Java (JNI) en el complemento de la biblioteca experimental.
    • Se agregó la capacidad de configurar la versión de la plataforma de manera independiente del atributo android:compileSdkVersion en el complemento de la biblioteca experimental.

    Complemento de Android para Gradle, revisión 1.3.1 (agosto de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se corrigió la tarea ZipAlign para que consuma correctamente la salida de la tarea anterior cuando se usa un nombre de archivo personalizado.
    • Se corrigió el empaquetado de Renderscript con el NDK.
    • Se mantuvo la compatibilidad para la tarea de compilación createDebugCoverageReport.
    • Se corrigió la compatibilidad con el uso personalizado de la propiedad archiveBaseName en el archivo de compilación build.gradle.
    • Se corrigió la advertencia Invalid ResourceType de lint causada por la búsqueda de anotación del método de parámetro cuando se ejecuta lint fuera de Android Studio.

    Complemento de Android para Gradle, revisión 1.3.0 (julio de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se agregó compatibilidad para la propiedad com.android.build.threadPoolSize con el fin de controlar el tamaño del grupo de subprocesos de tareas de Android desde el archivo gradle.properties o la línea de comandos. En el siguiente ejemplo, se establece esta propiedad en 4.

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • Se configuró el comportamiento de compilación predeterminado para excluir los archivos LICENSE y LICENSE.txt de los APK. A fin de incluir estos archivos en un APK, quítalos de la propiedad packagingOptions.excludes en el archivo build.gradle. Por ejemplo:
      android {
            packagingOptions.excludes = []
          }
            
      android {
            packagingOptions.excludes.clear()
          }
          
    • Se agregó la tarea sourceSets para inspeccionar todos los conjuntos de orígenes disponibles.
    • Se mejoró la compatibilidad con la prueba de unidades a fin de reconocer carpetas de fuente de varios tipos y de variantes de compilación. Por ejemplo, para probar una app con las variantes flavor1 y flavorA con el tipo de compilación Debug, los conjuntos de orígenes de prueba son los siguientes:
      • test
      • testFlavor1
      • testFlavorA
      • testFlavor1FlavorA
      • testFlavor1FlavorADebug

      Pruebas de Android ya reconocidas como carpetas de fuentes de varios tipos.

    • Se mejoró la compatibilidad con la prueba de unidades para hacer lo siguiente:
      • Ejecutar javac en las fuentes principales y de prueba, incluso si la propiedad useJack está configurada en true en el archivo de compilación
      • Reconocer correctamente las dependencias para cada tipo de compilación
    • Se agregó compatibilidad para especificar argumentos del ejecutor de pruebas de instrumentación desde la línea de comandos. Por ejemplo:
      ./gradlew connectedCheck \
         -Pandroid.testInstrumentationRunnerArguments.size=medium \
         -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
              
    • Se agregó compatibilidad para los parámetros arbitrarios adicionales de Android Asset Packaging Tool (AAPT) en el archivo build.gradle. Por ejemplo:

      android {
          aaptOptions {
            additionalParameters "--custom_option", "value"
          }
      }
            
      android {
          aaptOptions {
            additionalParameters += listOf("--custom_option", "value")
          }
      }
            
    • Se agregó compatibilidad para un módulo de prueba de APK como módulo independiente usando las propiedades targetProjectPath y targetVariant, para configurar la ruta de acceso del APK y la variante de destino.

      Nota: El módulo de prueba del APK no admite variantes de producto y solo puede tener como objetivo una única variante. Además, tampoco se admite Jacoco aún.

    • Se agregó la validación de nombres de recursos antes de combinar recursos.
    • Cuando se compila un paquete AAR (Android ARchive) para módulos de biblioteca, no debes proporcionar un marcador de posición @{applicationId} automático en la configuración de combinación de manifiestos. En su lugar, usa un marcador de posición diferente, como @{libApplicationId}, y proporciona un valor si deseas incluir los IDs de aplicación en la biblioteca de archivo.

    Complemento de Android para Gradle, revisión 1.2.0 (abril de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se mejoró la compatibilidad para ejecutar pruebas de unidades con Gradle.
      • Se agregó compatibilidad para incluir recursos de estilo Java en la ruta de clase cuando se ejecutan pruebas de unidades directamente desde Gradle.
      • Se agregó compatibilidad con dependencia de pruebas de unidades para artefactos de Android ARchive (AAR).
      • Se agregó compatibilidad con la propiedad unitTestVariants, de modo que se puedan manipular las variantes de pruebas de unidades mediante el archivo build.gradle.
      • Se agregó el bloque de código unitTest.all en testOptions a fin de configurar tareas personalizadas para la prueba de unidades. En el siguiente código de muestra, se indica cómo agregar parámetros de configuración de prueba de unidades con esta opción nueva:
        android {
          testOptions {
            unitTest.all {
              jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
            }
          }
        }
        
        android {
          testOptions {
            unitTest.all {
              jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option.
            }
          }
        }
                    
      • Se corrigió el manejo de campos de instancia pública y de enumeración en el empaquetado del archivo mockable-android.jar.
      • Se corrigieron dependencias de tareas del proyecto de biblioteca para que se vuelvan a compilar las clases de prueba después de los cambios.
    • Se agregó la propiedad testProguardFile para aplicar archivos ProGuard durante la reducción de un APK de prueba.
    • Se agregó la propiedad timeOut al bloque de código adbOptions para configurar el tiempo de grabación máximo para la grabación de pantalla de Android Debug Bridge.
    • Se agregó compatibilidad para recursos de 280 dpi.
    • Se mejoró el rendimiento durante la evaluación de proyectos.

    Complemento de Android para Gradle, revisión 1.1.3 (marzo de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se corrigió el error de dependencias duplicadas en una app de prueba que activaba un error de ProGuard.
    • Se corrigió la implementación del comparador, que no cumplía con el contrato del comparador de JDK y generaba un error de JDK 7.

    Complemento de Android para Gradle, revisión 1.1.2 (febrero de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se normalizó la ruta al crear un JAR que se puede simular para pruebas de unidades.
    • Se corrigió la configuración de archivesBaseName en el archivo build.gradle.
    • Se corrigió el error del marcador de posición sin resolver en la combinación de manifiestos cuando se compila una aplicación de prueba de biblioteca.

    Complemento de Android para Gradle, revisión 1.1.1 (febrero de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se modificaron las variantes de compilación para que solo las que empaquetan una app de Wear activen tareas de compilación específicas de ese producto.
    • Se modificaron errores relacionados con la dependencia para que se generen en el tiempo de compilación y no durante la depuración. Este comportamiento te permite ejecutar tareas de diagnóstico (como "dependencias") para ayudar a resolver el conflicto.
    • Se corrigió el método android.getBootClasspath() para mostrar un valor.

    Complemento de Android para Gradle, revisión 1.1.0 (febrero de 2015)

    Dependencias:
    • Gradle 2.2.1 o una versión posterior
    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se agregó una compatibilidad de prueba de unidades nueva.
      • Se habilitaron pruebas de unidades para ejecutar en la JVM local respecto de una versión especial del archivo android.jar compatible con los frameworks de simulación conocidos (por ejemplo, Mockito).
      • Se agregaron las tareas de prueba nuevas testDebug, testRelease y testMyFlavorDebug cuando se usan variantes de productos.
      • Se agregaron carpetas de fuentes nuevas reconocidas como pruebas de unidades: src/test/java/, src/testDebug/java/ y src/testMyFlavor/java/.
      • Se agregaron configuraciones nuevas en el archivo build.gradle para declarar dependencias de solo prueba, por ejemplo, testCompile 'junit:junit:4.11' y testMyFlavorCompile 'some:library:1.0'.

        Nota: Por el momento, las dependencias de solo prueba no son compatibles con Jack (Java Android Compiler Kit).

      • Se agregó la opción android.testOptions.unitTests.returnDefaultValues para controlar el comportamiento del android.jar que se puede simular.
    • Se reemplazó Test en los nombres de tarea de prueba por AndroidTest. Por ejemplo, la tarea assembleDebugTest ahora es una tarea assembleDebugAndroidTest. Las tareas de prueba de unidades aún tienen UnitTest en su nombre, como assembleDebugUnitTest.
    • Se modificaron los archivos de configuración de ProGuard para que ya no se apliquen al APK de prueba. Si se habilita la reducción, ProGuard procesa el APK de prueba y aplica solo el archivo de asignación que se genera cuando se reduce el APK principal.
    • Se actualizó la administración de dependencias.
      • Se corrigieron errores con los alcances provided y package.

        Nota: Estos permisos son incompatibles con los paquetes AAR (Android ARchive) y causarán un error de compilación con paquetes AAR.

      • Se modificó la resolución de dependencias para comparar las dependencias de una app en prueba con las de la app de prueba. Si se encuentra un artefacto con la misma versión para ambas apps, no se incluye en la app de prueba y se empaqueta solo con la app en prueba. Si se encuentra un artefacto con una versión diferente para ambas apps, fallará la compilación.
    • Se agregó compatibilidad para el calificador de recursos de anyDpi en la herramienta de combinación de recursos.
    • Se mejoraron las velocidades de evaluación y sincronización del IDE para proyectos con una gran cantidad de módulos de Android.

    Complemento de Android para Gradle, revisión 1.0.1 (enero de 2015)

    Dependencias:
    • Gradle 2.2.1 hasta 2.3.x

      Nota: Esta versión del complemento de Android para Gradle no es compatible con Gradle 2.4 y versiones posteriores.

    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Se corrigió el error de compilación de Gradle cuando se accedía al módulo extractReleaseAnnotations. (Error 81638)
    • Se corrigió el error de Disable que pasaba la configuración --no-optimize al código de bytes Dalvik Executable (dex). (Error 82662)
    • Se corrigieron errores de la herramienta de combinación de manifiestos que se generaban cuando se importaban bibliotecas con un valor de targetSdkVersion inferior a 16.
    • Se corrigió el error de pedido de densidad cuando se usaba Android Studio con JDK 8.

    Complemento de Android para Gradle, revisión 1.0.0 (diciembre de 2014)

    Dependencias:
    • Gradle 2.2.1 hasta 2.3.x

      Nota: Esta versión del complemento de Android para Gradle no es compatible con Gradle 2.4 y versiones posteriores.

    • Herramientas de compilación 21.1.1 o una versión posterior
    Notas generales:
    • Lanzamiento inicial del complemento