Kotlin on Android 开发环境介绍
Kotlin 被 Google 采納為 Android 開發一級編程語言,到現在也一年多了,我們團隊從去年 10 月份開始部分項目嘗試用 Kotlin 開發,到現在決定推廣到全部項目,因為一旦用上 Kotlin,你就不愿意回去了。
如果你所在的項目也想嘗試,我建議你先對 Kotlin on Android 開發環境—其實就是必備的庫做一個充分的了解,畢竟這是開發的土壤,只有土壤肥沃了,才能長出優質的果實。
接下來分別從基礎庫和拓展庫兩方面做一下介紹。
一、基礎庫
以下都是創建項目時 IDE 自動會添加的,做為 Kotlin 開發必須的基礎庫。
1、Kotlin 編譯腳本
作用是提供編譯 Kotlin 源文件(.kt 編譯成 .class)的腳本,由 JetBrains?開發。 配置方法:
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 復制代碼2、Kotlin 語言
命名空間 kotlin.@,由 JetBrains?開發,是 Kotlin 語言核心。參考資料?kotlinlang.org/docs/refere…
配置方法: 首先,上面說的編譯腳本要起作用,要添加 kotlin-android 插件。
apply plugin: 'kotlin-android' 復制代碼其次,依賴 Kotlin 標準庫,這是語言的核心。
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 復制代碼3、Kotlin Android Extension
命名空間 kotlinx.android.@,由 JetBrains?開發,提供 View Binding、Parcelable 封裝,提升開發體驗,參考資料?kotlinlang.org/docs/tutori…。 配置方法:
apply plugin: 'kotlin-android-extensions' 復制代碼二、拓展庫
上面說了基礎庫,有了基礎庫你就可以開始在項目中使用 Kotlin 了,解決了能不能用的問題。下面要介紹的拓展庫,是解決你用得爽不爽的問題。
1、Anko
命名空間?org.jetbrains.anko.@,由 JetBrains 開發的專門針對 Android 的集成庫,目的在于提升開發體驗,涉及 Intent、彈框、Toast、日志、資源、數據庫、代碼布局、協程,參考資料?github.com/Kotlin/anko… 配置方法: a. 添加依賴(包含所有模塊):
implementation "org.jetbrains.anko:anko:$anko_version” 復制代碼b. 按需依賴:
// Anko Commons implementation "org.jetbrains.anko:anko-commons:$anko_version" 復制代碼// Anko Layouts implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version" 復制代碼// Coroutine listeners for Anko Layouts implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version" implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version" 復制代碼// Anko SQLite implementation "org.jetbrains.anko:anko-sqlite:$anko_version" 復制代碼2、Android KTX
命名空間 androidx.@,Google 官方開發的 Kotlin Android 拓展庫,目的在于提供 Android API 的拓展,涉及 Android 開發的方方面面。屬于 JetPack 的一部分。參考資料?developer.android.com/kotlin/ktx
配置方法,按模塊添加依賴:
implementation 'androidx.core:core-ktx:1.0.0-alpha1' implementation 'androidx.fragment:fragment-ktx:1.0.0-alpha1' …… 復制代碼模塊列表參考上述地址。
3、Anko 和 Android KTX 的區別
根據 Android KTX 官方介紹:developer.android.com/kotlin/ktx
The purpose of Android KTX is to make Android development with Kotlin more concise, pleasant, and idiomatic by leveraging Kotlin language features such as extension functions/properties, lambdas, named parameters, and parameter default values. Android KTX does not add any new features to the existing Android APIs.
根據 Anko 官方介紹:github.com/Kotlin/anko
Anko is a?Kotlin?library which makes Android application development faster and easier. It makes your code clean and easy to read, and lets you forget about rough edges of the Android SDK for Java.
我們得出二者最根本的區別是:Android KTX 只是對 Android API 的拓展,不提供功能;而 Anko 提供了更多的 Android 沒有的API。
4、Anko 和 Android KTX 使用建議
雖然 Android KTX 是趨勢,Google 以后會大推。 但是,到目前為止 Android KTX 都沒有發布第一個穩定版本;同時,如果是歷史項目,成本會比較大,需要把之前的 android.support.@ 全部換成 androidx.@,否則出現此類錯誤:
error: failed linking references. error: resource android:attr/fontStyle not found. Message{kind=ERROR, text=error: resource android:attr/fontStyle not found., sources=[/Users/huangshibiao/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.4.0.aar/a7545949dee561c01597e2709420c243/res/values/values.xml:214:5-69], original message=, tool name=Optional.of(AAPT)}? error: resource android:attr/fontStyle not found. Message{kind=ERROR, text=error: resource android:attr/fontStyle not found., sources=[/Users/huangshibiao/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.4.0.aar/a7545949dee561c01597e2709420c243/res/values/values.xml:214:5-69], original message=, tool name=Optional.of(AAPT)} 復制代碼另一方面,Anko 相對比較成熟。
所以,截止當前,最好的方式是優先使用 Anko,等 Android KTX 成熟,然后再各取所長。
總結
以上是生活随笔為你收集整理的Kotlin on Android 开发环境介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode--160--相交链表
- 下一篇: Centos7 配置静态ip地址