Android 支持库如何与目标 SDK 级别配合使用?

How does Android support library work with target SDK level?

我知道我可以使用支持库来添加本机不可用的元素。但是,最新的 SDK 版本(例如 Lollipop)是否也使用这些支持库,还是使用原生元素?例如。如果我 运行 Lollipop 设备上的应用程序,它会使用原生元素还是支持元素?我问是因为,在编辑源代码时(在 Android Studio 中),我只编辑文件的一个版本,例如,我不能选择为 ICS 创建一个文件,而另一个为Lollipop,那么系统如何知道要使用哪些元素呢?

However, does the newest SDK version (Lollipop, for example) use these support libraries as well, or does it use native elements?

Android 框架不使用支持库。

if I run the app on a Lollipop device, will it use native or support elements?

如果我解释的是 "native" 的意思,它使用的是原生元素。 Android 框架不使用支持库。

I can't, for example, chose to create one file for ICS, and other for Lollipop

当然欢迎您检测 运行 API 级别并选择实例化一些特定级别的 class。尽管在 Android 支持包中更常见,但您会偶尔在框架中看到它,特别是对于 ...Compat classes.

so how does the system know which elements to use?

每个 Android 设备只有一个 Android 版本。因此,只有一套框架"elements"可供框架使用

小部件外观的某些方面由主题驱动,每个 Android 版本都支持现有的任何常用主题,从 API 级别回到 Theme 1. 如果开发者选择使用基于 运行 API 级别的不同主题(例如,使用 Theme.Material 作为 Android 5.0+ 的基础,但使用 Theme.Holo 作为 Android 4.0-4.4 的基础),由资源集限定符(例如 res/values-v21/styles.xml)驱动。