gpt4 book ai didi

android - Lint 未检测到 "calling new methods on older versions"- 可以做什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:11 24 4
gpt4 key购买 nike

最近我想研究一下将我的应用从 API 16 升级到 14 的向后兼容性的可能性。

我尝试了什么:

为了查看可能需要修复的内容,我将 list 中的 android:minSdkVersion 更改为 14 并重建了项目。令我惊讶的是,它构建得很好(这有点可疑),所以我将 minSdkVersion 设置为 1 看看会发生什么。此时,一些 警告 出现在 Attribute unused on older versions 类型的 list 中,但在尝试重建项目时它成功完成了。我试着 Analyze > Inspect code... 并没有发现这种性质的错误(尽管应该有很多)。我还尝试禁用和重新启用过滤器(见图)并重新启动 IntelliJ - 但无济于事。

Inspection settings

我的问题:

  1. 这可能是错误,还是我做错了什么?
  2. 是否有更好的方法来测试向后兼容性?

附加信息:

  • 如果重要的话,我正在使用代码存储库与其他几个人一起处理这个项目(我认为我可能下载了一些损坏的设置文件,但我认为我已经排除了这种情况)。
  • 我的 IntelliJ 版本是 13.1.4

谢谢!

最佳答案

确保您的检查范围设置为您的整个项目:

example

您仍然能够正常编译的原因是调用这些较新的方法绝对可以接受,前提是您通过版本检查专门保护您的调用。例如:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
// Hardware acceleration not supported -- do nothing!
}

为了防止出现任何警告,您可以使用 @TargetApi 注释调用方法,例如:

@TargetApi(Build.VERSION_CODES_HONEYCOMB)
public void setLayerType(View view, int layerType) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
myView.setLayerType(layerType, null);
} else {
// Hardware acceleration not supported -- do nothing!
}
}

编辑:此外,要获得内联警告,请确保在项目默认检查配置文件上启用此检查:

example

最终编辑:另外,确保没有在某处定义的 lint.xmllint-rules.xml 可能会覆盖这些问题的预期严重性级别。参见 the following link了解更多信息。

关于android - Lint 未检测到 "calling new methods on older versions"- 可以做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com