美文网首页Android开发Android开发经验谈
Kotlin on Android 开发环境介绍

Kotlin on Android 开发环境介绍

作者: Cavabiao | 来源:发表于2018-09-15 15:47 被阅读22次

    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 语言核心。参考资料 https://kotlinlang.org/docs/reference/using-gradle.html#targeting-android

    配置方法:
    首先,上面说的编译脚本要起作用,要添加 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 封装,提升开发体验,参考资料 https://kotlinlang.org/docs/tutorials/android-plugin.html
    配置方法:

    apply plugin: 'kotlin-android-extensions'
    

    二、拓展库

    上面说了基础库,有了基础库你就可以开始在项目中使用 Kotlin 了,解决了能不能用的问题。下面要介绍的拓展库,是解决你用得爽不爽的问题

    1、Anko

    命名空间 org.jetbrains.anko.@,由 JetBrains 开发的专门针对 Android 的集成库,目的在于提升开发体验,涉及 Intent、弹框、Toast、日志、资源、数据库、代码布局、协程,参考资料 https://github.com/Kotlin/anko/wiki
    配置方法:
    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 的一部分。参考资料 https://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 官方介绍:https://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 官方介绍:https://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 开发环境介绍

        本文链接:https://www.haomeiwen.com/subject/fkazgftx.html