当我想创建一个可以使用Android最近支持的功能的Android应用时,我会使用以下库:
appcompat_v7
support_v4
我无法确定的是appcompat_xxx或支持库实际可以支持的最早版本的Android是什么。我在哪里可以找到这些信息?
答案 0 :(得分:2)
名称中的全部内容 - appcompat_v7
支持API 7及更高版本,support_v4
支持API 4及更高版本。
每个图书馆的文档中也明确说明了这一点,例如:
此库旨在与Android 1.6(API级别4)一起使用 更高。
http://developer.android.com/tools/support-library/features.html#v4
此外,虽然并不总是需要,但您应该尝试将targetSdkVersion
与相应版本的库进行匹配。例如,如果您的targetSdkVersion
为19,则应使用com.android.support:appcompat-v7:19.+
要明确:支持库,如其名称所示,旨在支持最低API级别。含义 - 它们可以安全地用于运行该API级别的设备,以及任何后续API级别的设备。如果您尝试在甜甜圈设备(API级别4)上使用appcompat_v7,或者在Jellybean 4.1设备(API级别16)上使用leanback-v17
库,则您的应用可能会崩溃 ClassNotFoundException
。
这些库最初应该为较旧的API级别提供较新API级别的功能,这样您就可以编写几乎相同的代码,并在单个支持新旧设备的APK中利用最新的平台范例。
片段就是一个很好的例子。 Honeycomb引入了Fragment
类(API级别11)。谷歌随后发布了support_v4
库,其中包含Fragment
类的后端版本及其各自的API。同样,由其名称决定,该库可安全地用于支持一直支持API 4的应用程序。如果您在API上使用v4库安装应用程序3设备,它会崩溃。如果您将它安装在API 8设备上,它将按预期工作。
也许您已经陷入了依赖文件名来指定min sdk版本的看似微妙的本质 - 现在这是一个猜测,但是当v4库首次引入时,它是只是一个.jar
文件。这意味着,无论您使用什么minSdkVersion
,都可以将其添加到应用程序的类路径中,并且无需抱怨即可编译。 我猜测Google希望使用最低SDK版本明确命名这些库,以避免开发人员尝试在支持早期API版本的应用中使用它们。除了他们的文档,再次非常明确地回答了您的问题,文件名可能是一种风险缓解方法,可以帮助那些不会阅读文档的开发人员。
快进到2014年,其中许多库都以.aar
文件的形式出现(通过Gradle),或者您需要将它们作为项目导入。这是因为这些库现在包含图像和主题等资源,这些资源无法打包到.jar
文件中。这里的一个额外好处是,这允许Google在库中添加AndroidManifest.xml
,以指定minSdkVersion
。在编译时,构建工具'如果您的minSdkVersion
低于任何包含的库项目中指定的minSdkVersion
,则manifest merger会抱怨。