写点什么

Kotlin 1.3.30 改进汇总

  • 2019-05-11
  • 本文字数:1952 字

    阅读完需:约 6 分钟

Kotlin 1.3.30改进汇总

JetBrains 不久前发布了 Kotlin 1.3.30。此版本主要针对 Kotlin 1.3 修复 bug 并更新功能。Kotlin 1.3.30 改进了 Kotlin/Native 和 KAPT,支持更多对无符号类型和数组的操作,并改进了 IntelliJ IDEA 的调试功能,等等。


Kotlin/Native 现在支持 Windows 32 位目标(mingw_x86)。此外,macOS 和 Windows 用户可以将 Kotlin/Native 程序交叉编译到 Linux x86-64、arm32、Android 和树莓派等设备上。


Kotlin/Native 还为苹果平台带来了一系列改进。针对异常处理,开发者可以在 iOS 崩溃日志中找到未处理的异常,新版的异常回溯功能在调试模式下还包含 iOS 和 macOS 上的符号集。


苹果开发者还可以使用-Xstatic-framework命令行参数生成静态框架,或者为跨平台项目生成以下Gradle脚本:kotlin {    macosX64 {        binaries {            framework {                isStatic = true            }        }    }}
复制代码


苹果开发者还能用到一项实验性功能,其使用 Gradle 插件提供与CocoaPods的集成。此功能可将 Kotlin/Native 项目转换为.podfile 依赖项,可将其包含在 Podfile 中。这样以来,开发者就可以获得与 XCode 的 Swift pod 或 Objective-C pod 相同的体验。此外还可以将 CocoaPods 依赖项导入 Kotlin/Native 项目。提供该功能的 gradle 插件负责处理将框架导入 Kotlin/Native 项目的所有必要配置。


// Apply plugins.plugins {    id("org.jetbrains.kotlin.multiplatform") version "1.3.30"    /// the new plugin for CocoaPods support    id("org.jetbrains.kotlin.native.cocoapods") version "1.3.30"}
// CocoaPods requires the podspec to have a version.version = "1.0"
kotlin { cocoapods { summary = "a Kotlin/Native module" homepage = "homepage"
pod("AFNetworking", "~> 3.2.0") }}
复制代码


在已有 Xcode 项目中导入 Kotlin/Native 模块需要执行以下步骤:


  • 安装 CocoaPods

  • 配置 gradle 项目:应用 org.jetbrains.kotlin.native.cocoapods 插件,添加并配置目标,并指定所需的 podspec 字段

  • 运行 podspec 任务,生成上文描述的 podspec 文件。

  • 在 Xcode 项目的 Podfile 中添加对生成的 podspec 的引用


target 'my-ios-app' do    pod 'my_kotlin_library', :path => 'path/to/my-kotlin-library'end
复制代码


  • 为 Xcode 项目运行 pod install。


之前通过 KAPT 编译插件在 Kotlin 中支持的注释处理器(JSR 269)也得到了改进。KAPT 增加了一项实验性功能,可以实现增量注释处理器;开发者若想尝试该功能,可在 gradle.properties 中添加下面这行代码:


kapt.incremental.apt=true
复制代码


KAPT 的另一个有趣的特性是 Compile Avoidance(避免编译),它只在更改方法主体时跳过注释处理。只有在注释处理类路径中显式声明所有 KAPT 依赖项时才可以避免编译。要启用避免编译,需在 gradle.properties 中添加下面这行代码:


kapt.include.compile.classpath=false
复制代码


Kotlin 1.3.30 支持更多对无符号类型和无符号类型数组的操作:


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() })}
复制代码


由于无符号数组实现了 Collection(例如用于 UIntArray 的 Collection),开发者现在可以使用 filter 和 map 等操作。


IntelliJ IDEA 对 Kotlin 1.3.30 的支持也得到了改进。现在可以更容易地调试协程;新增独立的“异步堆栈跟踪”功能显示暂停时存储的变量。


IntelliJ IDEA 调试功能的另一项改进是“Kotlin”模式,它使开发者能够通过 Kotlin 名称而不是辅助 JVM 名称来查看变量:



(图片来自 https://blog.jetbrains.com


IntelliJ IDEA 的其它重要功能和错误修复包括:


  • 新增用来替换 isEmpty/isNotEmpty 方法否定语句的意图。例如,!isEmpty() -> isNotEmpty(),!isNotEmpty() -> isEmpty()

  • 新增用.size 替换 Collection.count()的语法检查和快速修正。例如,listOf(1, 2).count() -> listOf(1, 2).size

  • 新增用 Kotlin 的 forEach 替换 Java 8 的 Map.forEach 的语法检查

  • 新增有关重复 requireNotNull 和 checkNotNull 用法的警告

  • 修复不正确的 KT elvis 表达式调试器评估

  • 支持多行 TODO 评论。


要查看完整的更新列表可查阅更新日志。若要更新到 Kotlin 1.3.30,IntelliJ IDEA 和 Android Studio 用户应进入工具> Kotlin>配置 Kotlin 插件更新,然后单击“立即检查更新”;Eclipse 用户应该使用Marketplace安装插件,或者从 maven 获取更新;Gradle 和 npm 用户应使用 1.3.30 作为编译器和标准库的版本号。其它文档点此查看。


查看英文原文Kotlin 1.3.30 Brings Kotlin/Native and KAPT Improvements, and More


2019-05-11 08:006029

评论 1 条评论

发布
用户头像
kotlin天下第一!
2019-05-11 13:39
回复
没有更多了
发现更多内容

Fabric | 自动化神器

Python研究所

签约计划

🔎【Java 源码探索】深入浅出的分析ThreadLocal

码界西柚

Java 多线程 ThreadLocal 5月日更 ThreadLocalMap

python脚本编写——自动剪切移动文件夹

YUKI0506

智能IP先锋:从园区网络智能变革,到数字化转型新突破

脑极体

🔎【Java源码探索】深入浅出的分析HashMap(JDK8)

码界西柚

Java 源码 源码分析 hashmap 5月日更

40K成功入职:六年开发终获小米Offer(附面经+面试题+答案详解)

Java架构师迁哥

MeterSphere | 超好用的开源测试平台

Python研究所

签约计划

极光开发者周刊【No.0528】

极光GPTBots-极光推送

程序员 开发者 开发者工具

MPP大规模并行处理架构详解

五分钟学大数据

大数据 MPP 5月日更

【得物技术】得物App分发平台的探索建设历程

得物技术

效率 平台 实践 心路历程 迭代

云原生加速落地,金融行业应用上云来打样儿

BoCloud博云

云原生

公安局重点人员研判分析系统解决方案

面阿里P7,竟问这么简单的题目?

Java架构师迁哥

牛x运维常用的工具系列-1

运维研习社

运维 工具分享 5月日更

OKR 八问 —— 关于 OKR 的常见问题与思考

CODING DevOps

团队管理 DevOps OKR

使用Docker运行DataX定时全量备份关键数据表

白粥

DataX 数据表备份

区块链与数字化转型的关系

CECBC

如何评估 Serverless 服务能力?这份报告给出了 40 条标准

Serverless Devs

云计算 云原生 Forrester Wave #Serverless

ARM和X86云服务器的算力对比

Python研究所

签约计划

Vue-1-初识

Python研究所

签约计划

100W点击 10w人获取,阿里Java高级面试题及答案 到底有多强

???

面试 java真题分享

发展农村数字普惠金融的问题及对策分析

CECBC

百余大企业共赴新文明之约:2021 DEMO WORLD 世界创新峰会拉开帷幕

创业邦

创新

脉脉3小时转发65w次!这份Java面试宝典发生了什么?

Java架构师迁哥

AI年中钜惠来袭—全场低至6折 企业新客1元优享福利翻倍

百度大脑

福利 Iphone12

列举出常见的Java面试题,我靠这个在春招拿到了阿里的offer

???

面试 Java面经 java真题分享

人生算法:找到可复制的最小内核

石云升

读书笔记 5月日更 人生算法

论证:iOS安全性,为什么需要审核?

37手游iOS技术运营团队

ios SIP Sandbox iOS Developer ios安全

获5项大奖,发布《云计算开放应用架构标准》,阿里云持续领航云原生

阿里巴巴中间件

云计算 最佳实践 云原生 案例 白皮书

盘点golang中的开发神器

捉虫大师

Go 语言

5分钟速读之Rust权威指南(十二)

wzx

rust

Kotlin 1.3.30改进汇总_大前端_Diogo Carleto_InfoQ精选文章