August 7, 2018

El SDK de Android Pie funciona mejor con Kotlin

El SDK de Android Pie funciona mejor con Kotlin

Nota: este artículo es una traducción de https://android-developers.googleblog.com/2018/08/android-pie-sdk-is-now-more-kotlin.html

Cuando se usa Java como lenguaje de programación, uno de los problemas más comunes es tratar de acceder a un miembro desde una referencia nula, produciendo así una NullPointerException. Kotlin protege contra este problema diferenciando los tipos nulables de los no nulables. Esto ayuda a eliminar los NullPointerException de vuestro código y ayuda a mejorar la calidad general de vuestras aplicaciones. Cuando el código escrito en Kotlin y se llama a código Java, el compilador utiliza las anotaciones de nulabilidad en dichas APIs para saber qué esperar de cada parámetro y valores de retorno. Cuando éstos no están anotados, se tratan como tipos de plataforma, que deshabilitan para dichos tipos las comprobaciones de nulabilidad del compilador de Kotlin.

Como parte del anuncio de Android 9 de ayer, también hemos liberado un nuevo SDK de Android que contiene anotaciones de nulabilidad en algunas de las APIs más usadas. Esto hará que se mantenga la información de nulabilidad cuando el código Kotlin llama a las APIs anotadas del SDK.
Incluso cuando se usa Java, sigue siendo posible beneficiarse de estas anotaciones, ya que Android Studio es capaz de detectar las violaciones de dichos contratos en tiempo de edición.

Este cambio no debería romper código

Normalmente, las violaciones de contrato en Kotlin resultan en errores de compilación. Pero para asegurarnos de que las nuevas APIs anotadas son compatibles con el código existente, estamos usando un mecanismo interno nuevo del compilador de Kotlin para marcar las APIs como anotadas recientemente. Las APIs marcadas como anotadas recientemente, producen advertencias en lugar de errores en el compilador de Kotlin.
Para poder beneficiaros de esto, tenéis que usar Kotlin 1.2.60 o superior.

Nuestra intención es que las anotaciones de nulabilidad nuevas únicamente produzcan advertencias, e incrementar su nivel de severidad a errores en los SDKs de Android de los próximos años. El objetivo es proporcionar suficiente tiempo para que podáis actualizar vuestro código.

Cómo usar el nuevo SDK que funciona mejor con Kotlin

Para empezar, ir a Tools > SDK Manager en Android Studio. Seleccionad Android SDK en el menú de la izquierda, y aseguraos de que está abierta la pestaña de SDK Platforms.

pasted-image-0--12-image1
Usad el SDK Manager de Android Studio para instalar el SDK para el API de nivel 28 Revisión 6

Marcad Android 8.+ (P) y haced click en OK. Esto instalará el SDK de Plataforma 28 de Android Revisión 6 si no está ya instalado. Tras eso, poned el SDK del compilador a la versión 28 de API para empezar a usar el nuevo SDK de Android PIE con anotaciones de nulabilidad:

unnamed--10-image2
Usad el diálogo de Project Structure para cambiar vuestro SDK de compilación a la versión de API 28

Puede que también tengáis que actualizar el plugin de Kotlin de Android Studio si no está ya actualizado. Podemos asegurarnos de que el plugin de Kotlin esté en la versión 1.2.60 o superior yendo a Tools > Kotlin > Configure Kotlin Plugin Updates.

Una vez que esté todo configurado, vuestras builds empezarán a mostrar advertencias si tenéis código que viole los contratos de nulabilidad en el SDK de Android. Por ejemplo:

pasted-image-0--12-image3
Muestra de advertencia del compilador de Kotlin cuando el código viola una anotación de nulabilidad añadida recientemente en el SDK de Android

También empezaréis a ver advertencias en el editor de código de Android Studio si llamáis a un API con la nulabilidad incorrecta. Como por ejemplo:

pasted-image-0--12-image4
Advertencia de Android Studio sobre pasar una referencia nula a un parámetro recientemente anotado como no nulable en el API de android.graphics.Path

Usando las anotaciones de nulabilidad desde Java

También os podéis beneficiar de las nuevas anotaciones de nulabilidad si utilizáis Java. Por defecto, Android Studio marcará cualquier violación del contrato de nulabilidad como una advertencia. Por ejemplo:

unnamed--10-image5
Android Studio mostratá advertencias cobre la violación de contratos de nulabilidad en código escrito en el lenguaje de programación Java

Para aseguraros de que dicha inspección está habilitada, podéis ir a la página de configuración del IDE y buscar la inspección Constant conditions & exceptions y comprobad si está habilitada:

unnamed--10-image7
Usad la página de inspecciones bajo la configuración para aseguraros de que la inspección de código Constant conditions & exceptions está habilitada

Si usáis Java, las violaciones de contrato de nulabilidad no producirán ninguna advertencia o error de compilación. Únicamente estarán disponibles las inspecciones del IDE para advertir dichos problemas.

También podéis ejecutar inspecciones en todo el proyecto y ver los resultados agregados, haciendo click en Analyze > Inspect Code....

¿Y luego qué?

El SDK de Android contiene muchas APIs, y únicamente hemos anotado unas pocas, y todavía queda mucho trabajo por hacer. En las próximas versiones del SDK de android, seguiremos añadiendo anotaciones de nulabilidad a las APIs de Android existentes, y sobretodo nos aseguraremos de que las nuevas están anotadas correctamente desde un primer momento.

Con el nuevo SDK de Android que funciona mejor con Kotlin, las anotaciones de nulabilidad en AndroidX (parte de la familia Jetpack), y Android KTX, seguimos mejorando las APIs de Android para los desarrolladores que usan Kotlin. Si todavía no has probado Kotlin, te invitamos a hacerlo. Kotlin no solo puede ayudarte a hacer tu código más conciso, también puede ayudarte a mejorar la estabilidad de tus apps.

¡Feliz Kotlin-ficación!