在Android开发中,当且仅当设备的SDK大于或等于最低版本时,通常需要执行一段代码。
为了避免此代码经常出现丑陋和重复的问题,我创建了以下扩展名。
inline fun <T> runWithMinSdk (minVersion: Int, func: () -> T) {
if (android.os.Build.VERSION.SDK_INT >= minVersion) { func() }
}
没什么太花哨的,似乎在纸上做了伎俩。
然而,当我这样使用这段代码时:
fun myFun {
runWithMinSdk(Build.VERSION_CODES.O) {
exampleMethodThatRequiresOreo()
}
}
Android Studio引发了他的气氛,它没有通过Lint检查,要求压制&#39; NewApi&#39; myFun()
内的警告或runWithMinSdk
阻止if android.os.Build.VERSION.SDK_INT ... etc
是否有更好的方法来实现此功能,使其通过Lint检查或使用扩展是否可能?
答案 0 :(得分:0)
基于这个this discussion in the Kotlin forum,似乎做这样的事情是不可能的,因为Lint只能查看注释的当前函数。例如,如果你这样做
val func = @TargetApi(26) { exampleMethodThatRequiresOreo() }
runWithMinSdk(Build.VERSION_CODES.0, func)
你不会得到警告,但这也有点违背了这个扩展功能的目的。上面讨论中的OP提到了向Anko提出功能请求,但我找不到相关的问题。