gpt4 book ai didi

java - 使用 minSdkVersion 在 Android 项目中管理 'deprecated' 警告

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:59 26 4
gpt4 key购买 nike

我讨厌警告。我们的 Android 项目现在有 151 个,我确信在列表下方的某处确实有一个警告我们注意潜在的麻烦。

其中一类警告是关于已弃用的字段和方法。这可能很有用,除了 Manifest 包含 <uses-sdk android:minSdkVersion="10" /> , 这些警告只考虑了 target SDK 即 android-17 .

要忽略这些警告很容易 - 添加 @SuppressWarnings("deprecation")在违规行或整个方法之前的注释。但这错过了它的全部要点 - 如果/当我们决定改变 minSdkVersion="11" ,在第 10 级弃用的 API 仍然不会出现,并且必须有人检查我们所有项目中的所有注释,才能找到必须重写的代码。

是否有一些解决方案可以根据我的 minSdkVersion 管理这些警告?


似乎Mark谁在下面发布了一个有趣的答案,甚至 filed a feature request受我问题的启发,我不同意我关于 minSdkVersion 的重要性。他更愿意看到基于目标 API 级别的弃用警告(很可能来自 Lint,类似于 @TargetApi(NN) 注释)。但我不能同意这种做法。

考虑一个打开相机的简单应用程序。它可能想要检查 preview frame rate .但是这个方法在 API 9 中被弃用了,现在我们必须检查 preview FPS range .如果我们使用 platforms/android-8/android.jar ,Java 编译器将不会显示弃用警告。

但它不会让我们找到 preferred video resolution ,即使应用程序在支持此类查询的设备上运行。我们可能会添加 @TargetApi(11)注释,以确保应用程序是使用 platforms/android-11/android.jar 构建的或更高。

现在我们有了目标 Honeycomb 和更高的目标,将为 getPreviewFrameRate() 显示弃用警告,这正是困扰我的地方。有一段时间,我想象中的应用程序必须支持一些 Froyo 设备,因此我别无选择,只能设置 minSdkVersion=8并使用已弃用的方法。自然地,我将在条件 block 中使用任何高级 API,并拥有 @TargetApi(NN)到位。 幸运的是,对于 Donut 及更高版本,当检测到对不存在的方法或成员的调用时,类加载器不会崩溃,并将有问题的调用包装在 if() 足够了。

那我该怎么办?添加@SuppressWarnings("deprecation")围绕调用 getPreviewFrameRate() 使警告静音?添加@SuppressDeprecation(8)相反?

但在某些时候,我会决定与 Froyo 的向后兼容性不再重要。我设置了<uses-sdk android:minSdkVersion="9" />在我的 list 中,但是 getPreviewFrameRate() 的弃用警告仍然被抑制......好吧,新方法肯定比现有注释更好,因为它更容易 grep -R "@SuppressDeprecation(8)"更改后的整个项目在 list 中进行。

但我更喜欢在这里进行更紧密的集成:让 Lint 为我解析 Manifest 文件。

现在这更有意义了吗?

最佳答案

Is there some solution that could manage these warnings based on my minSdkVersion?

不,因为弃用与 android:minSdkVersion 无关。

如果您真的担心这一点,请将已弃用的内容隔离到它们自己的方法中,以尽量减少您的注释掩盖您不知道的 future 弃用的可能性。

@SuppressDeprecation(NN) 注释并非完全不可能,它会抑制给定构建目标的弃用。这类似于 @TargetApi(NN) 如何抑制给定 android:minSdkVersion 的 Lint 投诉。我有 filed a feature request for this .

关于java - 使用 minSdkVersion 在 Android 项目中管理 'deprecated' 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501393/

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