写点什么

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:005890

评论 1 条评论

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

Linux之file命令

入门小站

Linux

通过wireshark体验IP层分包

她的男人是程序员

Go 泛型初体验

Rayjun

Go 语言

面试侃集合之PriorityBlockingQueue篇

码农参上

Priority Queue 8月日更

高薪offer有什么秘籍,不妨来此观看

hanaper

Python代码阅读(第20篇): 展开嵌套列表2

Felix

Python 编程 Code Programing 阅读代码

要智能,得懂行,“要得”重庆

脑极体

Alibaba内网“疯狂”传阅的P8开源出的SpringBoot入门到进阶小册

Java~~~

Java spring 架构 面试 Spring Boot

铁山靠!阿里P9架构师写的这份JDK源码笔记,竟直接带火了GitHub

Java~~~

Java 架构 jdk 面试 架构师

如何使用TCP/IP开发网络程序

华为云开发者联盟

Java TCP 网络协议 通信 客户端

「iOS独立开发」基于iCloud构建用户体系

LabLawliet

ios 8月日更 独立开发

Spark :: 大画Spark(前传)—Spark的Dispatcher原理

dclar

spark 架构 源代码

Vue进阶(八十一):Vue+element UI 实现“回到顶部”按钮组件

No Silver Bullet

Vue 8月日更

面试过程中,遇到刁钻问题大家是怎么处理的?

hanaper

设计创新:通过设计创新改造世界

石云升

设计思维 设计师 8月日更 设计创新

装修记

escray

生活记录 8月日更

故事篇:终于给老婆讲明白什么是logback了!

阿Q说代码

故事 实战 logback 8月日更

罗马道ROW质押挖矿系统开发技术搭建

薇電13242772558

深入了解RocketMQ之Broker

邱学喆

broker 执行器 ConfigManager 处理器

模块六作业

袁小芬

Filecoin大涨:一文帮你了解filecoin挖矿!

区块链 分布式存储 IPFS filecoin挖矿 filecoin矿机

04. 实用主义的人工智能

Databri_AI

人工智能

网络攻防学习笔记 Day119

穿过生命散发芬芳

网络安全 8月日更

打破DPDK的误区: 数据面最流行的工具包DPDK,前世今生,未来

奔着腾讯去

Linux Kenel DPDK VPP

WebAssembly影响未来WEB技术

devpoint

Unity webassembly 8月日更

逮虾户!清华架构师吐血整理出这份多线程并发指南,带你弯道超车

Java~~~

Java 架构 面试 分布式 多线程

ipfs是什么项目是国家许可的吗?ipfs国家认可吗?

IPFS国家认可吗 ipfs是什么项目 ipfs是国家许可的吗

身份验证绕过漏洞分析

网络安全学海

黑客 网络安全 信息安全 WEB安全 安全漏洞

fil矿机挖矿收益怎么计算?fil矿机挖矿效率怎么提升?

fil矿机挖矿收益怎么计算 fil矿机挖矿效率怎么提升

工具库用久了,你还会原生操作 Cookie 吗?

编程三昧

JavaScript 大前端 Cookie 8月日更

操作系统课程学习记录

春秋易简

操作系统

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