Android开发:Kotlin下配置DataBinding

近日,随着Google召开了Google I/O 2017,Kotlin大火一把。因为Google宣布Kotlin为First-class开发语言作 为一名Kotlin忠实粉丝,高兴地很呀。虽然短 时间内不太可能替代Java,但这次官宣意味承认了Kotlin在Android开发中的合法地位,让想尝试Kotlin却有顾率的开发者可以放心地使用Kotlin(比如说我)。 有人说没必要尝试Ktolin,Kotlin没有什么吸引人的地方,相比java没简洁多少,只不是多一些语法糖而已。对我而言,我就是喜欢这些语法糖。当然了,此时也 应该回想回想Eclipse。Kotlin有诸如kotlin-android-extensions 以及Anko这种优秀的插件或者库,但是我也很偏爱Databinding。下面就讲如何让kotlin与databinding合谐并存

开发环境

AndroidStudio 2.3.2
Kotlin:1.1.2-3

安装Kotlin插件

打开settings去plugin里面搜索kotlin,然后install就可以了。以在tools里面我们就可以查看kotlin了,在这里可以进行检查更新什么的。 安装完之后,可以双击shift然后弹出了一个对话框,在里面输入

 configure kotlin in project

然后可以选择配置整个project还是单个Module。

gradle配置

经历过以上步骤,你会发现你的Project下面的build.gradle变成这样的了

buildscript {

    ext.kotlin_version = '1.1.2-3'
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:2.3.2"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

而module的build.gradle是这样的

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
  ....
    dataBinding {
        enabled true
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:kotlin_version"
 
    testCompile 'junit:junit:4.12'
}

正常来说,经过以上步骤我们就可以正常使用kotlin了,但是等等!!!今天的主角好像不是怎么配置kotlin,我们的目的是让kotlin与databinding共存。所以在你的Module的build.gradle还要加上一句:

apply plugin: 'kotlin-kapt'
...
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:kotlin_version"
    kapt 'com.android.databinding:compiler:2.3.2'
    testCompile 'junit:junit:4.12'
}

其中databinding complier的版本也就是2.3.2其实是和Project下的gradle版本是一样的,当然了可以不一样,如用2.3.1。 为了方便管理实际工作中我是这样配置的

buildscript {

    ext.kotlin_version = '1.1.2-3'
    ext.gradle_version = '2.3.2'
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:kotlin_version"
    kapt "com.android.databinding:compiler:$rootProject.ext.gradle_version"
    testCompile 'junit:junit:4.12'
}

AndroidStudio3.0

AndroidStudio3.0默认集成了kotlin,我们只需要configure一下就好了。但是3.0用的kotlin用的应该是1.1.2-4,这个版本和as3.0可能有冲突,可能会出一个circular dependencies的错误。这个时候你需要在```gradle.properties或者 local.properties加入:kotlin.incremental=false

如果依然不好用可能需要降低kotlin或者databinding compiler的版本了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏字根中文校对软件

Java 错别字检查接口 API

Java 错别字检查接口 API 为了方便广大程序员朋友快速把错别字检查功能集成到自己的系统中,我们开发了一个支持HTTP协议的 Java 错别字检查接口 AP...

43150
来自专栏杨建荣的学习笔记

dg的奇怪问题终结和分区问题答疑 (r7笔记第77天)

今天来说几个问题,一个是对昨天《让我焦灼的四个问题》的升华,不能起博眼球的题目,技术分析给大家兜底了,你们看看有没有类似的问题。 还有几个小问题说说今天的感受和...

36350
来自专栏杨建荣的学习笔记

服务器硬件问题整理的一点总结 (r7笔记第70天)

之前写过一篇通过shell来监控磁盘坏块的文章 http://blog.itpub.net/23718752/viewspace-1872978/ 从使用情况来...

43270
来自专栏雨尘分享

iOS 最新审核被拒及解决方案 (包括2.1大礼包)

99250
来自专栏web编程技术分享

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说,来一波神的视角

33360
来自专栏哲学驱动设计

CQRS讨论

今天和同事一起讨论了CQRS(Command Query Responsibility Segregation),过程中,我产生了一些疑问,先记录在这里,以后有...

19470
来自专栏ImportSource

NoSQL如何构建数据存储模型

翻译内容:NoSQL Distilled 第三章 数据模型详解 3.5 Modeling for Data Access 作者简介: ? ...

395130
来自专栏Java与Android技术栈

一个快速分析android app使用了哪些sdk的工具工具使用实现原理写在最后

前段时间我们要准备开始做移动端广告sdk,我需要了解市面上一些常用的广告sdk使用情况。如果一个个app去分析,那工作量会非常庞大,所以就产生了这个工具Anal...

12520
来自专栏即时通讯技术

手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途。如本文内容有不妥之处,请联系JackJiang进行处理!

1.2K20
来自专栏ChaMd5安全团队

N1CTF2018 APFS&Lipstick题解

APFS题目描述 Apple released the brand new APFS on WWDC 2017 with a bunch of new feat...

385100

扫码关注云+社区

领取腾讯云代金券