BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Kotlin 1.3.30 traz melhorias para o Kotlin/Native e KAPT

Kotlin 1.3.30 traz melhorias para o Kotlin/Native e KAPT

A JetBrains liberou o Kotlin 1.3.30. Essa versão é principalmente uma versão de correções de bugs e atualizações para o Kotlin 1.3. O Kotlin 1.3.30 traz melhorias para o Kotlin/Native e KAPT, suporte à mais operações para unsigned types e arrays, melhorias de depuração no IntelliJ IDEA, e mais.

O Kotlin/Native agora suporta o Windows 32 bit (mingw_86). Além disso, usuários do macOS e Windows podem compilar programas Kotlin/Native para o Linux x86-64, arm32, dispositivos Android e Raspberry PI.

O Kotlin/Native teve uma série série de melhorias na plataforma Apple. Com relação às exceções, os desenvolvedores podem encontrar exceções não tratadas registradas nos crash logs do iOS, e o rastreamento de exceção agora contêm informações simbólicas no iOS e no MacOS quando no modo de depuração.

Os desenvolvedores Apple também podem gerar frameworks estáticos usando o parâmetro de linha de comando -Xstatic-framework, ou o seguinte script gradle para um projeto multiplataforma:

kotlin {
    macosX64 {
        binaries {
            framework {
                isStatic = true
            }
        }
    }
}

Os desenvolvedores Apple podem ser beneficiar de uma funcionalidade experimental que fornece integração com o CocoaPods através de um plugin gradle. Essa funcionalidade transforma um projeto Kotlin/Native em um pod, que pode ser incluído em um Podfile. Dessa maneira, os desenvolvedores deve ter a mesma experiência de quando estão usando pods Swift ou Objective-C no Xcode. Além disso, também é possível importar dependências do CocoaPods em um projeto Kotlin/Native. O plugin gradle responsável por essa funcionalidade lida com toda a configuração necessária para importar um framework dentro de um projeto Kotlin/Native.

// Aplica plugins.
plugins {
    id("org.jetbrains.kotlin.multiplatform") version "1.3.30"
    /// o novo plugin para suportar o CocoaPods
    id("org.jetbrains.kotlin.native.cocoapods") version "1.3.30"
}

// CocoaPods requer que o podspec tenha uma versão.
version = "1.0"

kotlin {
    cocoapods {
        summary = "a Kotlin/Native module"
        homepage = "homepage"

        pod("AFNetworking", "~> 3.2.0")
    }
}

As seguintes etapas são necessárias para importar um módulo Kotlin/Native em um projeto Xcode existente:

  • Certifique-se de que o CocoaPods está instalado;
  • Configure um projeto gradle: use o plugin org.jetbrains.kotlin.native.cocoapods, adicione e configure os targets, e especifique os campos obrigatórios do podspec;
  • Execute a task podspec. O arquivo podspec descrito acima será gerado;
  • Adicione uma referência para o podspec gerado em um Podfile no projeto do Xcode;
    target 'my-ios-app' do
        pod 'my_kotlin_library', :path => 'path/to/my-kotlin-library'
    end
    
  • Execute pod install para o projeto do Xcode.

Os processadores de anotações (JSR 269) que já são suportados no Kotlin através do plugin do compilador KAPT também foi melhorado. O KAPT agora suporta uma funcionalidade experimental que permite o processamento de anotações de maneira incremental; os desenvolvedores que desejarem testar essa funcionalidade devem adicionar o seguinte no gradle.properties:

kapt.incremental.apt=true

Outra funcionalidade interessante a respeito do KAPT é o Compile Avoidance (evitar compilar), que pula o processamento de anotações quando somente o corpo de um método mudou. O Compile Avoidance é possível somente quando todas as dependências KAPT são declaradas explicitamente no processamento de anotações no classpath. Para habilitar o Compile Avoidance, basta adicionar o seguinte ao gradle.properties:

kapt.include.compile.classpath=false

Kotlin 1.3.30 brings support for more operations for unsigned types and arrays of unsigned types:


fun main() {
    val u1 = 2_147_483_649u
    val u2 = 4_000_000_000u
    println(u1.toDouble())
    println(minOf(u1, u2))

    val array: UIntArray = uintArrayOf(u1, u2)
    println(array.max())
    println(array.all { it > Int.MAX_VALUE.toUInt() })
}

Desde que unsigned arrays implementam Collection ( por exemplo Collection<UInt> para UIntArray), os desenvolvedores podem usar operações como filter e map.

O suporte para o Kotlin foi melhorado no IntelliJ IDEA. Agora é possível depurar coroutines mais facilmente; um painel separado "Async stack trace" exibe as variáveis armazenadas no momento em que foram suspensas.

Outra melhoria de depuração no IntelliJ IDEA é o "Kotlin" mode, que permite que os desenvolvedores vejam as variáveis através dos nomes dados pelo Kotlin, ao invés dos nomes auxiliares da JVM:

(imagem obtida de https://blog.jetbrains.com)

Outras funcionalidade e correções de bugs que valem a pena destacar no IntelliJ IDEA incluem:

  • Adicionada intenção para substituir as negações de métodos isEmpty/isNotEmpty. Por exemplo, !isEmpty() -> isNotEmpty() e !isNotEmpty() -> isEmpty();
  • Adicionada inspeção + sugestão para substituir Collection.count() por Collection .size. Por exemplo, listOf(1, 2).count() -> listOf(1, 2).size;
  • Adicionada inspeção para substituir o Java 8 Map.forEach pelo forEach do Kotlin;
  • Adicionado warning com relação ao uso redundante de requireNotNull e checkNotNull;
  • Suporte a comentários TODO com várias linhas.

A lista completa de mudanças está disponível no changelog. Para atualizar para o Kotlin 1.3.30, os usuários do IntelliJ IDEA e Android Studio devem ir em Tools>Kotlin>Configure Kotlin Plugin Updates, e clicar em "Check for updates now"; Usuários do Eclipse devem instalar o plugin usando o Marketplace; ou para atualizar via maven, gradle e npm, os usuários devem usar o número de versão 1.3.30 para o compilador. Uma documentação adicional também está disponível.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT