Kotlin 新版來了,支持跨平臺!

谷歌在今年的 I/O 大會上宣佈,Kotlin 編程語言現在是 Android 應用程序開發人員的首選語言(谷歌宣佈 Kotlin 成爲安卓開發首選)。 還有一個好消息, Kotlin 1.3.30 正式發佈,做了對apple的支持。離上次發佈1.3 時間過去半年。本次的該版本主要覆蓋 1.3 版本的問題修復和工具完善。版本更新的主要範圍爲 Kotlin/Native、KAPT 的性能優化以及對 IntelliJ IDEA 的支持優化。 我們來回顧下 1.3的 新特性 穩定的協程 Kotlin/Native Beta 多平臺項目和工具 用於 Kotlin/Native 和多平臺的工具 Ktor 1.0 Beta

本次版本帶來的牛逼特性主要對1.3完善,並且做了工具上的支持。

KAPT 支持註解處理器增量編譯

KAPT 已經支持註解處理器增量編譯,該特性仍處灰度實驗階段,你可以通過在gradle.properties中添加以下配置來啓用它: kapt.incremental.apt=true 需要指出的是,在現有版本中引入任何非增量編譯的註解處理器或者依賴的變化(截止目前,包括內部聲明的修改)都會導致該模塊的註解處理過程退化爲非增量模式。 KAPT: 其他提升

引入了兩個配置來提升編譯性能。其一是使用 Gradle workers:

這個版本也對它做了優化。另一個是 1.3.20 引入的,開啓 Compile Avoidance,就是說依賴如果只有方法體發生變化,那麼就跳過註解處理。只有在所有的註解處理器都顯式的在註解處理的 classpath 聲明的情況下,Compile Avoidance 纔會生效。

無符號數組的擴展方法

從 1.3 開始我們可以在開發模式下使用無符號數值類型。這個版本我們對無符號類型以及其數組做了更多的支持:

需要注意的是,我們之前就可以在無符號數組上使用函數式操作例如 filter 和 map ,這是因爲無符號類型的數組實際上是實現了 Collection 接口的,例如 UIntArray 實現了 Collection 接口。 不過這樣就涉及到了性能問題,因爲在 UIntArray 被當作 Collection的實例使用時會額外 創建 一個對象出來。現在好了,所有新增的擴展函數都使用無符號數組類型作爲 receiver 以消除額外的對象創建開銷。因此不用擔心,現在無符號數組和常規數值類型的數組從使用的角度來講沒有什麼兩樣,不會有任何額外的開銷了。

Kotlin/Native

Kotlin/Native 支持的目標平臺有: Windows 32 位(mingw_x86)。除此之外,Windows 和 macOS 用戶也可以混合編譯 Kotlin/Native 程序到 Linux x86-64、arm32 以及 Android 和 Raspberry PI 環境上。 Kotlin/Native 對 Apple 平臺的支持

對 Apple 平臺的支持也有提升。iOS 上未處理的異常信息會被輸出到 iOS 崩潰日誌當中,iOS 和 macOS 上的異常堆棧(調試模式)也會包含符號信息。 現在也可以使用命令行參數 -Xstatic-framework 或者以下 Gradle 腳本來構建靜態庫: 需要注意的一點,現階段官方表示拉取和編譯這些依賴仍然需要一個 Xcode 工程。

Kotlin/Native IDE 支持

接下來我們同步下我們的 IDE 對 Kotlin/Native 的支持工作的進展。 除 IntelliJ IDEA 之外,我們也將發佈 Kotlin/Native 插件支持 CLion 2019.1、AppCode 2019.1。C interop 描述文件 (.def) 後續也會得到所有 IDE 的支持,儘管目前代碼補全功能還沒有上線。 對於 CLion and AppCode, 我們也支持了異常堆棧跳轉源碼的支持。 IntelliJ IDEA 支持

調試功能的提升

當你在調試協程代碼時,你可以看到有一個單獨的異步堆棧 “Async stack trace” 顯示掛起時的變量。 當程序在 suspend 函數或者 Lambda(例子的第 13行)中的斷點停止時, “Async stack trace” 顯示了變量在上一次掛起時的狀態(12行)。你可以瀏覽 suspend 函數在當前協程中從上一個掛起點的全部的堆棧 (第12、4行)並確認變量的值: 這會幫助你更方便的理解當前協程的運行狀態。 在調試 Kotlin 代碼時,可以選擇 “Kotlin” 模式來查看變量。 Eclipse IDE 插件更新

Eclipse 插件 0.8.14 主要包含以下更新:Kotlin 1.3.30 編譯器支持, 大量的問題修復和整體穩定性的提升。該版本也增加了對 Gradle 工程的實驗性質的支持。你可以用 Eclipse Buildship 導入工程,你會發現 Kotlin 會被正常配置。

指定 JVM 版本

如果你的程序運行在 JVM 9, 10, 11, 或者 12 等版本下,你可以設置 jvmTarget到對應的版本了。這個設置會影響編譯的 class 文件的字節碼版本,但它們不是後向兼容的。相比之下,新目標版本不會有任何字節碼優化也不會有任何新特性,期待後續Kotlin繼續更新。 寫在最後 無論 Google 對Kotlin 賦予什麼期望,總而言之,Google提出新的系統和跨平臺方案,意味着Andorid 生態已經向不同領域發力,最近微軟的反擊也預示者,google的跨端計劃已經對微軟形成了火力壓制,坐等大安卓起飛,移動開發下一春不遠了。 於此同時微軟也在大力發展自己的.net語言的跨平臺,並且也在支持 Pyhon開發語言的各種工具,其實是在對 Flutter和Kotlin 提出了挑戰。 大家如何看待 Kotlin 的未來? 歡迎交流~

最後文末放上一個技術交流羣:Android IOC架構設計

羣內有許多技術大牛,有任何問題,歡迎廣大網友一起來交流,羣內還不定期免費分享高階Android學習視頻資料和麪試資料包~

再推薦一篇文章:“寒冬未過”,阿里P9架構分享Android必備技術點,讓你offer拿到手軟!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章