【发布时间】:2020-04-20 04:08:36
【问题描述】:
这是否意味着较旧的 Android 手机将无法使用调用需要最低 API 级别的应用?
例如,我使用的是calendar.set(),它需要 API 级别 24(当前最低为 15);我的测试用手机是 Android 4.4.4,API 级别 19。我该怎么办?如果我使用模拟器测试和构建应用程序,完成后我是否可以在手机中使用该应用程序?
【问题讨论】:
这是否意味着较旧的 Android 手机将无法使用调用需要最低 API 级别的应用?
例如,我使用的是calendar.set(),它需要 API 级别 24(当前最低为 15);我的测试用手机是 Android 4.4.4,API 级别 19。我该怎么办?如果我使用模拟器测试和构建应用程序,完成后我是否可以在手机中使用该应用程序?
【问题讨论】:
当调用需要更高的 API,但我的手机具有更低的 API 级别(Android 应用)时会发生什么
您应该在 IDE 中收到有关该问题的警告,如果您进行该调用,您将在运行时崩溃。
我正在使用 calendar.set(),它需要 API 级别 24
set() 在Calendar 上有几个变体,例如this one。自 API 级别 1 以来,所有这些都已存在。
也许你导入了错误的Calendar 类。
我能做什么?
如果你想在 API Level 19 上运行,你需要尝试使用 API Level 19 或之前定义的类和方法。对于您想在较新设备上使用的可选功能,请使用 Build.VERSION.SDK_INT 查看设备正在运行的 API 级别,并围绕在旧设备上无法使用的任何功能进行分支。
【讨论】:
是的,如果您的应用调用不受支持的方法,它将会崩溃。
您必须创建一个方法来检查这种情况并以编程方式处理它。
此 SO 显示如何获取版本:Getting device os version in Android programmatically
您可以在较旧的设备上运行该应用,但遇到不支持代码时会崩溃。
【讨论】:
如果该行运行,它会引发异常。任何高于最低要求的 API 调用都需要受到版本检查的保护,并且该功能未在较低 API 上公开或以不同的方式完成。
【讨论】:
是的,设备/模拟器的 API 必须至少是 Android docs 中严格提到的最低 API(本地 build.gradle 中的 minSdkVersion):
minSdkVersion:一个整数,指定应用程序运行所需的最低 API 级别。如果系统的 API Level 低于此属性中指定的值,Android 系统将阻止用户安装应用程序。您应该始终声明此属性。
【讨论】:
是的,兄弟。它根本不起作用。也许会给你带来麻烦。
【讨论】: