构建Kotlin项目时报错如下:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
> java.lang.reflect.InvocationTargetException (no error message)
- 先检查是否有其他报错信息:
例如:
错误: cannot generate view binders java.lang.NullPointerException
at android.databinding.tool.store.SetterStore.calculateConversionPriority(SetterStore.java:995)
at android.databinding.tool.store.SetterStore.isBetterParameter(SetterStore.java:890)
at android.databinding.tool.store.SetterStore.getBestSetter(SetterStore.java:750)
at android.databinding.tool.store.SetterStore.getSetterCall(SetterStore.java:572)
at android.databinding.tool.Binding.getListenerParameter(Binding.java:175)
at android.databinding.tool.Binding.resolveCallbackParams(Binding.java:77)
at android.databinding.tool.BindingTarget.resolveCallbackParams(BindingTarget.java:179)
at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:142)
at android.databinding.tool.DataBinder.<init>(DataBinder.java:61)
at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:118)
at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:370)
这是说ViewDataBinding有问题,检查XML文件是否有引用错误的地方。
2.排除掉代码层面和xml层面的问题之后,考虑这种问题多半是版本不匹配造成的。一般按照以下步骤排查即可解决:
- Android Gradle 插件版本与所需的Gradle版本是否匹配?
具体的版本对应地址
gradle插件版本在根目录的build.gradle
中的buildscript{}
中查看得到
gradle版本在gradle/wrapper/gradle-wrapper.properties
中查看得到
- Android kotlin插件版本与所需的Kotlin版本是否一样
kotlin插件版本在根目录的
build.gradle
中的buildscript{}
中查看得到
AS的kotlin版本在File | Settings | Languages & Frameworks | Kotlin
中查看得到
- Gradle JDK 是否正确
File | Settings | Build, Execution, Deployment | Build Tools | Gradle
中的Gradle JDK
选择合适的版本Embedded JDK
- 第三方与kotlin插件的版本是否匹配?
举个例子
Kotlin-Version = 1.6.0 => Room-Version = 2.4.2