剑网3指尖江湖职业推荐 www.1468054.com

圖0: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 崩潰日志中找到未處理的異常,新版的異?;廝莨δ茉詰魘閱J較祿拱?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 ??樾枰蔥幸韻虜街瑁?/p>

  • 安裝 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 名稱來查看變量:

圖1:Kotlin 1.3.30 改進匯總

(圖片來自 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 作為編譯器和標準庫的版本號。其它文檔點此查看。

余下全文(1/3)

本文最初發表在www.infoq.cn,文章內容屬作者個人觀點,不代表本站立場。

分享這篇文章:

請關注我們:

發表評論

電子郵件地址不會被公開。 必填項已用*標注