Java 管理';不推荐使用';Android项目中带有MinSDK版本的警告
我讨厌警告。我们的Android项目现在有151个,我相信在列表的某个地方,有一个项目实际上警告我们不要遇到潜在的麻烦 其中一种警告是关于不推荐使用的字段和方法。这可能很有用,除了清单包含Java 管理';不推荐使用';Android项目中带有MinSDK版本的警告,java,android,eclipse,adt,lint,Java,Android,Eclipse,Adt,Lint,我讨厌警告。我们的Android项目现在有151个,我相信在列表的某个地方,有一个项目实际上警告我们不要遇到潜在的麻烦 其中一种警告是关于不推荐使用的字段和方法。这可能很有用,除了清单包含,并且这些警告仅考虑目标SDK,即android-17 可以很容易地将这些警告静音-在有问题的行或整个方法之前添加@SuppressWarnings(“弃用”)注释。但这忽略了它的全部意义-如果/当我们决定更改minSdkVersion=“11”,在10级被弃用的API仍然不会出现,并且必须有人检查我们所有项目
,并且这些警告仅考虑目标SDK,即android-17
可以很容易地将这些警告静音-在有问题的行或整个方法之前添加@SuppressWarnings(“弃用”)
注释。但这忽略了它的全部意义-如果/当我们决定更改minSdkVersion=“11”
,在10级被弃用的API仍然不会出现,并且必须有人检查我们所有项目中的所有注释,以找到必须重写的代码
是否有一些解决方案可以根据我的版本管理这些警告
似乎世卫组织在下面发布了一个有趣的答案,甚至受到我的问题的启发,都不同意我关于minSdkVersion重要性的看法。他希望看到基于目标API级别的弃用警告(很可能来自Lint,类似于@TargetApi(NN)
注释)。但我不能同意这种做法
考虑一个打开相机的简单应用程序。它可能想检查一下。但是这个方法在API 9中被弃用了,现在我们必须检查。如果我们使用platforms/android-8/android.jar
,Java编译器将不会显示弃用警告
但它不允许我们找到,即使应用程序运行在支持这种查询的设备上。我们可能会在那里添加@TargetApi(11)
注释,以确保应用程序是使用平台/android-11/android.jar
或更高版本构建的
现在我们有了targetHoneycomb和更高版本,getPreviewFrameRate()将显示弃用警告,而这正是困扰我的地方。有一段时间,我的虚拟应用程序必须支持一些Froyo设备,因此我别无选择,只能设置minSdkVersion=8
并使用不推荐的方法。当然,我将在条件块中使用任何高级API,并将@TargetApi(NN)
设置到位。幸运的是,对于Donut及更高版本,当检测到对不存在的方法或成员的调用时,类装入器不会崩溃,并且仅将有问题的调用包装在if()中就足够了
那我该怎么办?在对getPreviewFrameRate()的调用周围添加@SuppressWarnings(“弃用”)
以禁用警告?是否改为添加@SuppressDeprecation(8)
但在某个时候,我会决定与Froyo的向后兼容性不再重要。我在清单中设置了
,但getPreviewFrameRate()的弃用警告仍然被抑制。。。好的,新方法肯定比现有的注释好,因为在Manifest中进行更改后,更容易grep-R“@SuppressDeprecation(8)”
整个项目
但我更喜欢这里更紧密的集成:让Lint为我解析清单文件
现在这样做更有意义吗
是否有某种解决方案可以根据我的版本管理这些警告
不,因为弃用与android:minSdkVersion
无关
如果您真的对此感到担忧,请将不推荐使用的内容隔离到它们自己的方法中,以最大限度地减少注释会掩盖您不知道的将来的不推荐使用的可能性
不完全不可能的是一个@SuppressDeprecation(NN)
注释,它将抑制给定构建目标的不推荐。这类似于@TargetApi(NN)
如何抑制给定android:minsdk版本的Lint投诉。我有。实际上有一个功能请求:在2012年12月12日提交。检查您的文档是否与sdk的版本相同?我会用Java折旧检查换取皮棉检查,但让它们的级别与sdk同步非常重要minSdkVersion@AlexCohn:我重复:弃用与生成目标有关,不是minSdkVersion
。你在倒数第二段中的主张对我来说毫无意义。更改minSdkVersion
不会改变不推荐或不推荐的内容。酷。。。我们在这里讨论!由于这种形式不鼓励长串的评论,我将在主要问题部分展开我的论证。