一、搭建步驟
Android Studio 3.3 及之前需要自己引入 Kotlin 相關的庫與插件,AS 3.5 后默認創建的項目都是 kotlin 開發,所以 build.gradle 中都自動加入了相關的庫與插件依賴。大體來說為以下幾個步驟:
- 根 build.gradle 文件中配置 kotlin 插件庫依賴,如下:
buildscript {
ext.kotlin_version = '1.3.41'
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
- 在主應用模塊 build.gradle 文件中依賴 kotlin 核心開發庫以及應用 kotlin plugin,如下:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.core:core-ktx:1.0.2'
}
二、Kotlin 依賴庫與插件
1. kotlin-android plugin
- 如果是 Java 項目,則使用 plugin: 'kotlin' 插件;
- 如果是 Android 項目,則使用 plugin: 'kotlin-android' 插件。
作用:提供編譯 kotlin 源文件(.kt 編譯為 .class)的腳本,由 JetBrains 開發。
2. kotlin-android-extensions plugin
- 命名空間
kotlinx.android.@
,由 JetBrains 開發,提供 View Binding、Parcelable 封裝,提升開發體驗,參考資料 kotlinlang.org/docs/tutori…。
3. kotlin-stdlib-jdk7 lib
- kotlin 語言核心庫,也即是 kotlin 開發 API 包,命名空間:
kotlin.@
。
4. androidx.core:core-ktx
- 命名空間
androidx.@
,Google 官方開發的 Kotlin Android 拓展庫,目的在于提供 Android API 的拓展,涉及 Android 開發的方方面面。屬于 JetPack 的一部分。
工具介紹源文檔:https://kotlinlang.org/docs/reference/using-gradle.html#targeting-android
Kotlin 源碼地址:https://github.com/JetBrains/kotlin
三、Kotlin 編譯與運行
kotlin 的編譯流程和 Java 沒有什么區別,均是經過 詞法分析 -> 語法分析 -> 語義分析及中間代碼生成 -> 目標代碼生成 。
在 AS 中編寫 .kt ,構建后,可以在 build/tmp/kotlin-classes
直接查看反編譯后的 .class 文件。對于源文件 .kt 和 反編譯后的 .class ,如下:
// 1. People.kt
package com.coral.kotlin
class People(var name: String?)
// 2. People.class
// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
package com.coral.kotlin
public final class People public constructor(name: kotlin.String?) {
public final var name: kotlin.String? /* compiled code */
}
看著反編譯后的代碼和源代碼好像很大差別(直接看 java 源文件編譯后的 class 反編譯代碼還能看懂),應該說是反編譯后的代碼,變量類型等都直接是 全路徑包名。(非專業表達)
四、Kotlin 發展歷史
Kotlin 是一種在 Java 虛擬機上 運行的 靜態類型 編程語言,也可以被編譯為 JavaScript 源代碼。
雖然與Java語法并不兼容,但在JVM環境中 Kotlin 被設計成可以和 Java 代碼相互運作,并可以重復使用如 [Java集合框架] 等現有的 Java 引用的函數庫。
歷史
2011年7月,JetBrains推出Kotlin項目,這是一個面向JVM的新語言,它已被開發一年之久。[5]JetBrains負責人Dmitry Jemerov說,大多數語言沒有他們正在尋找的特性,但是Scala除外。但是,他指出Scala的編譯時間過慢這一明顯缺陷。[5]Kotlin的既定目標之一是像Java一樣快速編譯。
2012年2月,JetBrains以Apache 2許可證開源此項目。[6]Jetbrains希望這個新語言能夠推動IntelliJ IDEA的銷售。[7]
Kotlin v1.0于2016年2月15日發布。[8]這被認為是第一個官方穩定版本,并且JetBrains已準備從該版本開始的長期向后兼容性。
在Google I/O 2017中,Google宣布在Android上為Kotlin提供最佳支持。
節選自 Wiki 維基百科 。