【问题标题】:Android Lint - NewApi check still fails despite suppression with @TargetApiAndroid Lint - 尽管使用 @TargetApi 抑制,但 NewApi 检查仍然失败
【发布时间】:2014-07-09 16:38:26
【问题描述】:

在 Lint 运行不成功后,我尝试通过添加 @TargetApi(Build.VERSION_CODES.HONEYCOMB) 属性来修复错误,但下次运行 Lint 时,getScaleX() 函数仍然显示以下错误:

任何人都可以对此有所了解吗?

【问题讨论】:

标签: android eclipse eclipse-plugin android-lint


【解决方案1】:

如消息窗口中所述,对getScaleX() 的调用需要 API 级别 11 (Honeycomb)。该消息还表明最低 API 级别为 9(根据 minSdkVersion 设置)。

Lint 工具警告您正在使用仅在较新的 SDK 版本 (11+) 中支持的方法,但已设置为允许应用程序在不支持此方法的设备上运行(SDK 版本 9 和 10 )。

在此处查看有关 NewApi Lint 检查功能的更详细说明:(搜索 NewApi)http://tools.android.com/tips/lint-checks

谨慎禁止此类警告,我建议使用以下内容保护代码:

    if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    {
        ...getScaleX()...
    }

【讨论】:

  • 感谢您的回答。不幸的是,它没有回答我的问题。你提出的正是我一直在使用的。我的问题是关于为什么 Lint 检查仍然失败,而不是关于代码失败。该代码在所有版本的 Android 上都能完美运行。
  • 您是否对相关代码进行了版本检查? IE。类似if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)?如果不是,那么如果您在较早的 SDK 版本(在设备上)上运行,那么我预计代码会失败。
  • 是的,正如我的第一条评论所述,我的代码与您的答案完全相同。同样,代码运行良好,应用程序运行良好。只是它无法通过 Lint。
  • 如果你用@SuppressLint("NewApi")标记方法(而不是@TargetApi?或者把@TargetApi(Build.VERSION_CODES.HONEYCOMB)放在类定义的顶部?我有类似的代码(使用Android Studio,而不是 Eclipse),当我将 @TargetApi 更改为目标版本时,尽管 minSdkVersion 较低,但不再出现 Lint 消息。
  • 感谢您的帮助。我很抱歉,但我不得不说我已经放弃了。我的开发机器上的 Lint 检查行为不稳定。此时,它会抱怨注释掉的代码中的某些功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多