为什么这个Kotlin扩展失败Android Studio Lint检查?
在Android开发中,当且仅当设备的SDK大于或等于最小版本时,才需要执行一段代码。
为了避免这个代码的往往丑陋和重复的性质,我创建了下面的扩展。
inline fun runWithMinSdk (minVersion: Int, func: () -> T) { if (android.os.Build.VERSION.SDK_INT >= minVersion) { func() } }
没有什么太花哨,似乎在纸上做的伎俩。
但是 ,当我使用这样的代码:
fun myFun { runWithMinSdk(Build.VERSION_CODES.O) { exampleMethodThatRequiresOreo() } }
Android Studio引发了一个hissy fit,它失败了Lint检查,要么抑制myFun()
‘NewApi’警告,要么包装runWithMinSdk
块if android.os.Build.VERSION.SDK_INT ... etc
有没有更好的方式来实现这个function,使其通过林特检查或使用扩展是不可能的这是可能的吗?
基于这个在Kotlin论坛这个讨论似乎做这样的事情是不可能的,因为林特只能看当前的注释function。 例如,如果你这样做
val func = @TargetApi(26) { exampleMethodThatRequiresOreo() } runWithMinSdk(Build.VERSION_CODES.0, func)
你不会得到警告,但也有点挫败这个扩展function的目的。 在上面的讨论中的OP提到将function请求发送给Anko,但是我在那里找不到相关的问题。