Android Studio Lint 检查 Kotlin 高阶函数

标签 android android-studio kotlin

我看到了以下高阶函数示例,它被用作包装 Android API 版本检查的便捷方法。

fun isLollipop(func: () -> Unit) {
  if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
    func()
  }
}

但是,在 Android Studio 3.0(Kotlin 版本 1.2.0)中,如果我尝试使用需要 Lollipop 的 API(该项目的 minSdk 是 17),我会看到 lint 错误。例如:

isLollipop { appBarLayout.elevation = 4f }

Lint 提示 elevation 属性的 API 最小值。

正如旁注,将函数编写为 inline fun 并不重要,lint 仍会给出相同的警告。使用内联函数,反编译的 Java 代码显然包含在版本检查中。

我之前发现了这个讨论,但 Kotlin 团队似乎已经集成了 linting 支持。 https://youtrack.jetbrains.com/issue/KT-7729

lint 系统是否支持查看高阶函数内部?

最佳答案

这个问题似乎在最新版本的 Android Studio 3.2 中得到了解决。使用 Kotlin 运行时 1.2.30 在 Canary 6 上测试,没有 lint 警告。

关于Android Studio Lint 检查 Kotlin 高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610020/

相关文章:

java - Android - Syncano SDK 不工作

android - 调试 Android 小部件

java - Android Fragment 空对象 mNextAnim 内部崩溃

split - 如何拆分字符串并在 Kotlin 中拆分部分之间种植分隔符?

java - 使用 AsyncTask 编辑 Fragment UI 项目

java - Android Retrofit2 泛型方法

android - 在另一台计算机上编译我的 Android 应用程序会创建新的签名证书吗?

android - OpenCV 中的 Photoshop Vibrance 效果

android - 在android 中设计一个聊天应用程序|与远程服务器通信

java - 如何在 Android Studio 中以编程方式定位 ImageView