kotlin和DataBinding一起使用踩坑日记(不断跟新)

前几天google 在IO大会上宣布kotlin成为android开发的一级语言,第二天就推出android studio3.0,自带android-kotlin插件。
号称踩坑小王子的我,怎能不作死尝试一把。


首先简单过了一遍kotlin教程,嗯,跟swift差不多,没难度。
直接搞了两个demo(一个java的,一个kotlin),然后用android studio3.0自带的,把java转成kotlin,两个demo都一把通过,so easy,kotlin写起来也很爽,很有逼格,决定搞个复杂点(copy一份公司项目),然后就被各种坑了。


自带的java转kotlin功能

作为资深强迫症患者,当然是先把之前的java代码转成kotlin啦。
然后就悲剧了,

  1. 有的类只被转了一半
  2. 有的类不知道被转成什么鬼
  3. RecyclerView.Adapter里的RecycleViewHolder居然被转成interface了,里面的方法也变得乱七八糟,
  4. static的类和方法基本没有转对过,单例模式更加悲剧
    ...

手动改了半天,发现还有一堆红色,果断把项目删了😂,重新导入。


kotlin和dataBinding

回到起点再来一次,现在保留之前的java代码,新的代码用kotlin编写,总没问题了吧。

先按套路走一遍

  1. 编译一次,跑起来再说
  2. 没有2了,第一步就跪了🤦‍♂️

我就操了,啥也没动,编译都不过?这怎么玩。

淡定、淡定,还是按套路走吧,看下错误提示

* What went wrong:
Circular dependency between the following tasks:
:app:compileDebugKotlin
+--- :app:dataBindingExportBuildInfoDebug
|    \--- :app:compileDebugKotlin (*)
\--- :app:kaptDebugKotlin
     \--- :app:dataBindingExportBuildInfoDebug (*)

循环依赖了?小问题
在app下的build.gradle中,去掉kotlin中的dataBinding依赖,然后在编译

compile ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"){
        exclude group: 'com.android.dataBinding', module: 'compiler'
    }

然而并没什么卵用,还是一样的错,此时我一脸懵逼。
既然编译器给出了具体错误,那就好办,继续按套路来。
不懂问度娘,然后砸电脑的心都有了,翻到第N页了,你妹的都是互相转发的,N年前的老问题。
度娘靠不住,只好祭出我看片才用的梯子,google一搜,前几条都是stackoverflow的回答,但都不是我要的答案。
然后进入全球最大同性交流平台stackoverflow,在里面一搜。所噶,第一页就有个相同的提问,还被标明问题已解决的原谅绿,果断点进去
http://stackoverflow.com/questions/44035504/how-to-use-data-binding-and-kotlin-in-android-studio-3-0-0

里面说了是kotlin1.1.2-4和Android Gradle plugin 3.0.0-alpha1的问题,根据大神提供的步骤,改成1.1.2-2,local.properties里去掉kotlin的增量编译kotlin.incremental=false,重新编译,问题解决。

52F7F39B-5CED-4B2A-B52B-CA89A40D46F5.png
3807484E-3B0B-47C5-9FEC-1C5656C792C0.png

DataBinding注解不能用

java代码中的set和get方法,在kotlin中以不同的方式出现,导致@BindablenotifyPropertyChanged(BR.xxl)不能直接用于get和set中。

解决方法
ObservableField


在xml布局中,没有代码提示

xml中引用databinding,只有属性提示,没有方法提示


报错莫名其妙

本来databinding报错就天马行空了,配上kotlin,这错误更加看不懂,经常在编译时就出错

63990386C9105CD75A587C21A91B38B6.jpg
F9430692-AFDE-4701-8056-335A0C4C57B6.png

这种错误时不时会出现,
谁能告诉我这是什么情况

解决方法

 dataBinding {
        enabled = true
    }

先把这段注释掉,编译一次,不要管有没有报错,
然后打开这段代码,再编译一次,这问题一般都会消失,
如果还没有,clean项目,关掉studio,重启电脑,重复上面两部,多试几次


添加res文件报错

如果在res下添加新的文件或文件夹,必须要clean一下,不然各种找不到资源
android studio3.0 canary1.0 升级到android studio3.0 canary2.0没碰到该问题了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,332评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,930评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,204评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,348评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,356评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,447评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,862评论 3 394
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,516评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,710评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,518评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,582评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,295评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,848评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,881评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,121评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,737评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,280评论 2 341

推荐阅读更多精彩内容