2014-12-02 78 views
-1

最低版本。当我想创建一个Android应用程序,可以使用Android的最新支持的功能,我使用像库:确定支持库

appcompat_v7 
support_v4 

我一直无法确定是什么是appcompat_xxx或支持库实际可以支持的Android的最早版本。我在哪里可以找到这些信息?

回答

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中使用最新的平台范例,以支持旧设备和新设备。

碎片就是一个很好的例子。 Fragment类是在Honeycomb(API级别11)中引入的。 Google随后发布了support_v4库,其中包含Fragment类的后端移植版本,并且它是相应的API。同样,由其名称指定,该库可以安全地用于支持所有返回API 4的应用程序。如果您在API 3设备上使用v4库安装应用程序,它将会崩溃。如果您将其安装在API 8设备上,它将按预期工作。

也许你会因为依赖文件名指定min sdk版本而看起来很微妙的本质 - 现在这是一个猜测,但是当第一次引入v4库时,它只是一个.jar文件。也就是说,无论您使用什么minSdkVersion,都可以将它添加到应用程序的类路径中,并且可以在不抱怨的情况下进行编译。 MY我们猜测谷歌希望使用他们最低的SDK版本明确命名这些库,以避免开发人员试图在支持早期API版本的应用中使用它们。除了他们的文档,这些文档再次非常明确地回答您的问题,文件名可能是一种风险缓解方法,可以帮助那些不阅读文档的开发人员。

快进到2014年,这些库中的很多或者以.aar文件的形式出现(通过Gradle),或者您需要将它们作为项目导入。这是因为这些库现在包含图像和主题等资源,无法打包到.jar文件中。此处的一个额外好处是,这允许Google将AndroidManifest.xml包含在指定minSdkVersion的库中。在编译时,如果您的minSdkVersion低于任何包含的库项目中指定的minSdkVersion,则构建工具的清单合并将会投诉。

+0

我看到API级别和文件名中指定的版本号之间没有明确的关联,特别是考虑到只有少数这些兼容性文件,而有几个版本的Android。 – AndroidDev 2014-12-02 18:37:27

+1

咦?不太清楚如何才能错过“v4”和“API Version 4”之间的相关性......公式是“libraryname_minSdkLevel”,其中minSdkLevel表示给定的库可以被任何API级别使用,大于或等于指定的。 – 2014-12-02 18:41:55

+0

这是一个相当自由的假设。当Google发布他们的操作系统的新版本以及更新的支持库时,基本假设是它支持以前的支持库所做的所有事情。事实上,如果你试图包含较新和较新的版本,构建工具只会选择较新的版本。这清楚地表明新版本支持旧版本。问题依然存在。新版本有多远?所以你错了。它不支持特定版本或更高版本。它支持它开发和使用的版本。 – AndroidDev 2014-12-03 14:40:56