This question解释了什么是“ safeUnbox警告”。
build.gradle中包含以下内容:
extension NSPasteboard.PasteboardType {
/// The name of a file or directory
static let fileName: NSPasteboard.PasteboardType = {
return NSPasteboard.PasteboardType("NSFilenamesPboardType")
}()
}
及更高版本:
lintOptions {
quiet false
abortOnError true
warningsAsErrors true
baseline file("lint-baseline.xml")
}
但是数据绑定的SafeUnbox警告不会使构建过程失败。输出抱怨警告,并且警告变成了错误:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
kotlinOptions {
jvmTarget = "1.8"
allWarningsAsErrors = true
}
}
但是在构建过程的最后,我有:
w: warning: viewModel.doorsState.getValue().first is a boxed field but needs to be un-boxed to execute android:text. This may cause NPE so Data Binding will safely unbox it. You can change the expression and explicitly wrap viewModel.doorsState.getValue().first with safeUnbox() to prevent the warning
file:///.../app/src/debug/res/layout/activity_car_connection_debug.xml Line:75
e: warnings found and -Werror specified
有什么方法可以使整个构建过程在“ safeUnbox警告”失败的情况下失败?
答案 0 :(得分:3)
我找到了解决方案,是的!
将以下法术放在根gradle.build
上即可解决问题。
subprojects {
afterEvaluate {
if (project.plugins.hasPlugin("kotlin-kapt")) {
kapt {
javacOptions {
option("-Xmaxerrs", 1000)
option("-Werror")
}
}
}
}
}
此法术也增加了记录错误数量的限制(默认值:100),如果使用了DataBinding,则很有用。
答案 1 :(得分:1)
作为Alexander的答案的补充,您也可以在模块build.gradle
中定义它,这可能更易读:
android {
...
kapt {
javacOptions {
option("-Xmaxerrs", 1000)
option("-Werror")
}
}
}