Kotlin on Android 开发环境介绍

原文链接: https://juejin.im/post/5b9cbd0a5188255c5644923a

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 开发环境介绍)