【问题标题】:How to detect deprecated androidx.legacy.widget.Space class?如何检测已弃用的 androidx.legacy.widget.Space 类?
【发布时间】:2020-12-03 14:21:35
【问题描述】:

上下文

我在Android application project 的布局中使用androidx.legacy.widget.Space

<androidx.legacy.widget.Space
    android:layout_width="match_parent"
    android:layout_height="@dimen/space_height" />

该类被标记为@Deprecated - 应该使用framework Space class 代替:

// Copied from legacy-support-core-ui-1.0.0-sources.jar/androidx/legacy/widget/Space.java
@deprecated Use framework {@link android.widget.Space} class instead.

查找已弃用 API 的使用情况

我在Android Studio 4.2 Canary 7 中运行Inspect Code...Run inspection by Name ... 处理Java 或XML 文件(见屏幕截图) ...

...并在我通过 shell 命令构建时使用编译器参数..

options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"

...但已报告了已弃用的Space 类用法。我怎样才能检测到它(以及任何其他此类情况)?

2020 年 8 月 27 日更新

在 Android Studio 中,Java 和 XML 的“已弃用 API 使用 ...”检查均已激活,如设置屏幕截图所示。

相关

【问题讨论】:

  • 很可能是一个错误。请参阅this example 使用 AS 4.0.1 AbsoluteLayout 在 MainActivity.kt 和 activity_main.xml 中被标记为已弃用(删除线),而旧版 Space 仅在 MainActivity.kt 中被标记。 Lint 将 XML 文件中的 AbsoluteLayout 报告为已弃用,但对遗留空间只字未提。 Lint 在 MainActivity.kt 中都保持沉默。两者都在源代码中标有@Deprecated
  • 谢谢。我链接了上面 Google 问题跟踪器中的两个条目。一个与案例非常匹配,我将这个问题和你的示例项目联系起来。另一个问题是最近讨论 Lint 改进的问题之一。
  • 我确实看到了第一个问题 (*6020),但认为它不适用,因为 minSdkVersion 不会影响示例应用程序。我认为第二期(*0422)看起来更有希望。

标签: android android-studio gradle androidx android-lint


【解决方案1】:

通过单击 Analyze -&gt; Run Inspectinon By Name -&gt;type Deprecated API Usage 搜索 Deprecated API Usage in XML 应该会获取 XML 文件中所有已弃用的实例。您能否粘贴按名称搜索返回的结果的屏幕截图?
或者通过将范围设置为整个项目来尝试这个Manually Run Inspections。这也将获取已弃用的实例。对于 Java 类,请搜索 Java-&gt;Code Maturity-&gt;Deprecated API usage。对于 XML 搜索 XML-&gt;Deprecated API usage in XML
最后一个选项是在查找路径中搜索androidx.legacy.widget.Space。按 Ctrl+Shift+F 并搜索 androidx.legacy.widget.Spacethroughout 项目,或者您甚至可以添加文件掩码,例如仅 xml

【讨论】:

  • 在特定 XML 文件范围内运行Deprecated API usage in XML 检查的结果是一个弹出窗口,其中指出:No suspicious code found. 1 file processed ..。我的理解不应该是这种情况。 - 手动搜索(查找)在这里没有意义。想象一下,您不知道哪个类/方法已被弃用。你怎么能在不知道它的名字的情况下搜索它?这是一个母鸡/蛋的问题。
  • 我告诉您进行手动搜索的原因是您拥有类 androidx Space 类的名称。不知道为什么你的工作室显示没有发现可疑代码错误。
猜你喜欢
  • 1970-01-01
  • 2016-09-10
  • 2021-11-20
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2014-08-09
相关资源
最近更新 更多