一、概述背景
databinding 出来好久好久了, 一直是拒绝使用的, 最早的原因就是 出错了抓瞎找不到错误,报一个统一的错误,一脸懵逼。
新项目使用mvvm,databinding 是基础组件。 代码写啊写,接着编译 运行,找出错误修复,喝口水,检查功能,如此流程,一去不复返。 步履维艰,写代码不敢写多,差不多就得编译下,因为啥,因为抛出错误是统一错误,找不到出错在哪里,得看git history 或者local hisory 自己改了啥,去注释分析瞅瞅。
周六原来是想把一个功能写完善下,结果又抓瞎报错了,特点花时间记录下,下回做明瞎。
下文举例一个faq:org.gradle.api.GradleException: Compilation error. See log for more details
二、faq:org.gradle.api.GradleException: Compilation error. See log for more details
对的, 出错了就是报这个。
点开左边的task 树
报的是kotin,kapt 编译的错误。
三、懵逼的分析误区
报错里有报kotlin 字眼, 由于主项目是 java 写的,我的模块有局部文件是kotlin,很容易造成是kotlin混编导致的错误不明确,或者kotlin 混编没搭建好的既视感。然java kotlin混编,纯kotlin开发,是已经有1-2年的项目经验的。虽然有这种自信但是还是会怀疑是不是混编导致的。通过瞎搜,有说混编用databinding 要加:
kapt "com.android.databinding:compiler:3.1.4"
感觉蛮有道理的,然而无用。
四、正确的分析
经验分析:按经验这种错误,就是databinding 导致的统一报错,databinding 出错就是xml 里写错了,或者对应的vm 没写对,有时候是会报出明细错误的,有时候就报这种笼统错误,抓瞎,然后一个个去看改动后和历史正确的有啥区别。
正确分析:以前但凡报错找不到错的,会报
Run with --stacktrace option to get the stack trace. Run with --info pr --debug ...
Run with --debug option to get more log output. Run with --scan to get full insights.
虽然databinding 的这种不报这个错误,不凡试试,经典的
--stacktrace --debug
--stacktrace --debug --scan
操作步骤:
之前有写一篇FAQ(Run with --stacktrace option to get the stack trace. Run with --info pr --debug …)
**注意:**这里有细节,新版本的android studio 报错的时候 经常出现的是目录树这边的结构,而不是传统的直接都是log的形式,这里有个切换按钮