Android Studio 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.