Android Lint api和kotlin api太旧,这可能会导致java.lang.NoSuchFieldError:Companion
当我使用kotlin编写自定义lint规则时,如下所示:Android Lint api和kotlin api太旧,这可能会导致java.lang.NoSuchFieldError:Companion,android,sdk,Android,Sdk,当我使用kotlin编写自定义lint规则时,如下所示: class AlarmDetector : Detector(), SourceCodeScanner { companion object Issues { private val IMPLEMENTATION = Implementation( AlarmDetector::class.java, Scope.JAVA_FILE_SCOPE ) /** Alarm set to
class AlarmDetector : Detector(), SourceCodeScanner {
companion object Issues {
private val IMPLEMENTATION = Implementation(
AlarmDetector::class.java,
Scope.JAVA_FILE_SCOPE
)
/** Alarm set too soon/frequently */
@JvmField
val ISSUE = Issue.create(
id = "ShortAlarm",
briefDescription = "Short or Frequent Alarm",
explanation = """
Frequent alarms are bad for battery life. As of API 22, the `AlarmManager` will override \
near-future and high-frequency alarm requests, delaying the alarm at least 5 seconds into the \
future and ensuring that the repeat interval is at least 60 seconds.
If you really need to do work sooner than 5 seconds, post a delayed message or runnable to a \
Handler.""",
category = Category.CORRECTNESS,
priority = 6,
severity = Severity.WARNING,
implementation = IMPLEMENTATION
)
}
other code ...
组装lint.jar后,将其放置在“/.android/lint”中
它在我的android gradle插件项目中运行良好:3.1.1
但是当我使用androidsdk中的lint工具(sdk/tools/bin/lint)和命令lint--show时
我出错了
Could not load custom lint check jar file
java.lang.NoSuchFieldError: Companion
我发现最新的sdk工具是26.1.1
lint&lintapi&lint-check的版本是26.0.0-dev
kotlin stdlib的版本是1.1.3
太旧了
我希望SDK工具中的lint可以更新我大概知道了,Android gradle插件3.1之后 SDK工具里面的功能都可以通过格拉德尔插件实现了,所以大概是SDK工具没有更新的必要了