最近,我想研究一下将我的应用从API 16
向后兼容性提高到14
的可能性。
我尝试了什么:
要查看可能需要修复的内容,我将清单中的android:minSdkVersion
更改为14
并重建项目。令我惊讶的是,它构建得很好(有点可疑),所以我将minSdkVersion
设置为1
以查看会发生什么。此时,在Attribute unused on older versions
类型的清单中出现了一些警告,但在尝试重建项目时,它已成功完成。我试着Analyze > Inspect code...
并发现没有这种性质的错误(即使应该有很多)。我还尝试禁用并重新启用过滤器(见图)并重新启动IntelliJ - 但无济于事。
我的问题:
其他信息:
谢谢!
答案 0 :(得分:4)
确保将检验范围设置为整个项目:
你仍然可以正常编译的原因是,如果你通过版本检查专门保护你的呼叫,那么调用这些新方法绝对可以接受。例如:
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!
}
}
编辑:此外,要获取内联警告,请确保在项目默认检查配置文件中启用此检查:
最终编辑:此外,请确保某处未定义lint.xml
或lint-rules.xml
,这可能会覆盖这些问题的预期严重性级别。有关详细信息,请参阅the following link。