Android Studio - 如何从高于 min 的 API 中查找方法以及如何处理它们?

标签 android android-studio compatibility

我正在使用 AndroidStudio 编写一个应用程序,目标是 API 19,但最低 API 14。我发现我使用的一些方法可从 API 16+ 获得。

AndroidStudio 中有没有办法找到高于当前最小值的 API 中可用的所有方法?

对于这样的电话我该怎么办?当我将它们更改为与较低的 API 兼容时,AS 告诉我这些方法已被弃用。那么我该怎么做才能支持旧版本呢?

最佳答案

要查找高于最低 SDK api 的 api 使用 lint,对于 gradle,这应该是默认设置,除非您有:

lintOptions {
    abortOnError false
}

在你的 build.gradle 中

如果你想使用来自 ie 的 api。给定对象的奇巧然后这样写:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
   obj.kitkatAndAboveApi().
}

如果你想使用 ie 中的一些类。如果是 KITKAT 及以上,则您必须编写一个包装类,以避免在加载不可用的类时出现异常。此类将负责加载此 kitkat 类,并且仅由您的应用程序在 kitkat+ 上使用。

有时您也可以使用反射来查询方法是否存在,然后调用它。

您还可以看看它在支持库中是如何完成的,即。向后兼容 MenuItem:

http://androidxref.com/4.4.4_r1/xref/frameworks/support/v4/java/android/support/v4/view/MenuItemCompat.java


一些说明:

  1. 在 Android Studio 0.8.9 下要查看不可用 api 的所有使用情况,请使用菜单“分析”->“检查代码”。在结果中,您将看到 Android Lint -> '在旧版本上调用新方法'。您将在此处看到应修复的错误列表。

  2. 如果仅从命令行完成,如果出现 lint 错误,构建将会失败,即:

$ gradlew 构建

并且仅当您未添加 abortOnError false 时。我不知道如何让 AS 因 lint 错误而失败。

关于Android Studio - 如何从高于 min 的 API 中查找方法以及如何处理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442891/

相关文章:

android - 在 Android 中失去焦点时不隐藏对话框

android - 在测试项目中使用资源文件夹获取测试字符串数据

android - 防止 TextView 中的断字

android - AchartEngine 折线图 Xaxis Android

java - Bazel - 无法使用 Android Studio 构建

android - 运行代码时如何删除和清除 Android Studio 中 USB 设备上保存的数据?

javascript - Firefox Javascript div 旋转不起作用,但在 Chrome 和 Safari 中起作用

c# - 是否有可能为 windows 8 开发一个 .Net 应用程序,它也适用于 windows 7 和 Vista

azure - Azure Development Fabric 有哪些限制?

android - 如何找出在 Android Studio/Gradle 中的库中添加了多少方法