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的版本了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kotlin for Android
在Google IO 2017 大会上,Google将 Kotlin列为 Android官方开发语言,Android Studio 3.0 也默认集成了Kotlin插件。 Android Studio 3.0目前是预览版,下载地址: https://developer.android.google.cn/studio/preview/index.html 如果您是更早的版本,点击Android Studio File->Settings->Plugins,搜索Kotlin,然后重启Android Studio。 Kotlin相对Java语言更加简洁,虽然与Java语法并不兼容,但Kotlin被设计成可以和Java代码相互运作,并可以重复使用Java编写好的框架。也就是说一个项目允许Java和Kotlin共同开发的,不会有任何兼容性的问题。 接下来我们就来演示下使用Kotlin创建Android工程 创建工程 使用Android Studio 3.0版本,创建工程时勾选 Include Kotlin support 选项,这是和之前唯一一处不同。 此处默认生成MainActi...
- 下一篇
Cloud Card能否干掉App
云OS 3.0已发布,总算向外界表达了我们想做个啥,很多人也开始质疑,Cloud Card到底是个啥?云OS 3.0算不算自主研发的OS?等等,今天想就Cloud Card能否干掉App这个主题聊聊这些事情。 昨天三丰和我们开会讲到一个观点,IOS&Android以App为核心的OS过时了,用户使用各种移动设备,要的不是App,是服务,虽然App也是承载服务的形式,但App与App之间是割裂的。仔细想想确实如此,我们现在为了做一件事情往往需要多个App来回折腾,用户装的App越来越归一到几个航母App(微信、淘宝、支付宝),航母App越做越大,上面集成各种其他第三方服务,比如公众号。用户使用移动设备有时需求其实很简单,只想买一张电影票或者充话费,并且是很临时性的,如果这时你要他去找个app安装,用完后删掉,体验确实不好,web干掉PC端应用程序也是出于这个初衷,用户要的就是一个买电影票或者充话费的服务,而不是一堆的App。于是乎我越发明白自己所做事情的价值,也明白为啥我们敢称为自己是在做OS。把用户需要服务在用户真正需要的时候提供给用户,这件事情只能OS来做,也只有在OS这个层...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- CentOS7安装Docker,走上虚拟化容器引擎之路