1

我有一个可能看起来很愚蠢的问题,但我有这个...

我有一个适用于 android 的应用程序,由于使用了 api,因此必须将目标设置为 Android 4.1。

我的疑问是该应用程序是否可以在系统低于 4.1 的 android 设备上运行?

在我的清单文件中放入以下内容

<uses-sdk
         android: minSdkVersion = "8"
         android: targetSdkVersion = "16" />

我在具有 android 2.3.6 的设备上进行了测试,并且运行正常,没有任何错误,其他版本也一样,没有出现问题?

4

3 回答 3

3

最低 SDK 版本

最低 SDK 版本是您可以在其上运行应用程序而不会导致问题的最低 API。

一个整数,指定应用程序运行所需的最低 API 级别。如果系统的 API Level 低于此属性中指定的值,Android 系统将阻止用户安装应用程序。您应该始终声明此属性。

--<uses-sdk>文档

目标 SDK 版本

目标 SDK 版本只是说明您可以为您的应用程序使用方法的 API。

一个整数,指定应用程序所针对的 API 级别。...此属性通知系统您已针对目标版本进行了测试,并且系统不应启用任何兼容性行为以保持您的应用程序与目标版本的前向兼容性。该应用程序仍然能够在旧版本上运行(低至minSdkVersion)。

--<uses-sdk>文档

例子

例如,假设您Display.getSize(Point)在应用程序中使用。此方法仅适用于 API 13+,因此您必须针对 13 或更高版本。但是,如果您不在使用 API 12 或更低版本的设备上调用此方法,则不会遇到任何问题。

但是,假设您的应用程序要求您有权访问Fragments 及其方法(并且不想使用支持库)。然后,您的 SDK 级别必须至少为 11 - 否则,它将在低于该 API 级别的设备上崩溃。

简短的回答

android:minSdkVersion="8"表示您的应用可以在 Android 2.2+ 上使用。android: targetSdkVersion="16"意味着您在编译应用程序时可以访问 Android 4.1+ 的任何内容(但并不意味着旧设备可以使用这些功能)。

于 2013-01-21T02:36:47.757 回答
1

minSdkVersion = 8 表示它将在运行 Android 2.2 或更高版本的设备上工作

于 2013-01-21T02:36:19.393 回答
1

埃里克的回答非常好。我只想从文档中添加更多内容。它可能会帮助你..

关于 minsdkversion

  1. 如果系统的 API Level 低于此属性中指定的值,Android 系统将阻止用户安装应用程序
  2. 如果不声明该属性,系统会假定默认值为“1”,表示您的应用兼容所有版本的Android
  3. 所以如果你使用在你的 minsdk 版本之后引入的任何 api,那么程序将会崩溃。

关于targetsdkversion

  1. 如果未设置,则默认值等于提供给 minSdkVersion 的值。
  2. 根据您应用程序在不同版本的 android 操作系统上的 targetsdkversion,行为和外观可能会发生变化。因此从文档..

例如,将此值设置为“11”或更高允许系统在 Android 3.0 或更高版本上运行时将新的默认主题 (Holo) 应用到您的应用程序,并且还可以在大屏幕上运行时禁用屏幕兼容模式(因为支持 API 11 级隐式支持更大的屏幕)。

再举一个例子。假设您将targetsdk 版本设置为5。那么在所有操作系统版本中,菜单、标题栏和整体主题都将像ECLAIR。但是如果您将targetsdk 版本设置为14。那么对于ics,主题将是ics。并且在以下版本的操作系统上,主题将与该操作系统相对应。

最后关于maxsdkVersion:

由于提到了其他两个,所以我认为我们也应该包括这个孤独的属性。如果声明了此属性,则其值必须等于或大于系统的 API 级别整数。如果未声明,则系统假定应用程序没有最高 API 级别。

于 2013-01-21T05:16:00.150 回答