-1

我有 2 个问题。如果我用 编译了我的应用程序targetSDKVersion 23但在运行的模拟器上对其进行了测试api level 19,我能确定它在使用 的设备上运行api level 19吗?

当我设置minSDKVersionAPI level并使用该 api 级别上不可用的东西时,我会收到编译器错误吗?如果不是,我如何确定minimum api level我的程序与什么兼容?

4

1 回答 1

1

如果我使用 targetSDKVersion 23 编译了我的应用程序,但在运行 api 级别 19 的模拟器上对其进行了测试

targetSdkVersion不会更改您的代码或它在设备上的运行方式。

当我将 minSDKVersion 设置为 API 级别并使用该 API 级别上不可用的东西时,我会收到编译器错误吗?

您不会收到编译器错误 - 您会收到 lint 警告。如果您实际上在没有该 API 的设备上运行,您将收到运行时错误。

我如何确定最低 api 级别是多少

在运行时您可以查询设备的 SDK 级别:

Build.VERSION.SDK_INT将是 API 级别。

然后,您可以使用常量执行检查以优雅地降级:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    // fallback
} else {
    // use your lollipop api
}
于 2015-11-28T21:27:44.880 回答