【问题标题】:Do I need to uses always the last targetSdkVersion?我是否需要始终使用最后一个 targetSdkVersion?
【发布时间】:2013-02-03 00:52:57
【问题描述】:

简单问题:在 Eclipse 中,“新建 Android 项目”命令总是尝试使用最后一个可用的 sdk。这总是一个好主意吗?

更新:

我试着解释一下。现在在 Eclipse 中,“新项目”会生成一个清单,其中包含:

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

因此,定位到最后一个 Android(Jelly Bean,4.2.x),但它也可以在 Froyo (2.2) 上运行。对我来说还好。这个选择我有什么大错?

更新

如果我将 android:minSdkVersion="8" + android:targetSdkVersion="17" 和构建目标设置为 2.2 以确保我的应用程序可以在旧设备上运行(没有 NoSuchMethodError 异常),是否可以?

【问题讨论】:

  • 这取决于您要定位哪些设备
  • 阅读此说明,了解“目标 sdk 版本”的含义:developer.android.com/guide/topics/manifest/… 为此,您在此 sdk 版本上测试了您的应用程序并验证它可以正常工作。所以设备不需要为你模拟旧的 sdk。
  • @tuxSlayer 是的,谢谢,自从我写这个问题以来已经过去了很多时间。现在我总是针对最后一个 sdk 版本
  • 我的意思是你可能并不总是希望在那个地方有最后一个版本。 IE。如果您创建新项目(从头开始编写应用程序) - 这可能是开始的好方法。否则,假设您的应用程序访问了某些设备功能,并且您在 API 级别 18 的设备上对其进行了测试。然后您会看到 API 级别 20 可用,只需更改此目标版本。在此之后,某些功能可能无法在较新的设备上运行,但是,如果您将 target sdk 保留在 18 上,新设备会为您模拟它,一切都会正常工作。

标签: android android-manifest android-library


【解决方案1】:

这个选择我会做错什么?

这个选择没有错,这也是构建工具默认的原因。

设置targetSdkVersion 可以让您选择使用较旧的targetSdkVersion 可能无法获得的特定行为。您可以通过阅读the documentation for Build.VERSION_CODES 来了解您所获得的一些信息。

【讨论】:

  • 以前,targetSdk 是 8,现在(17)我得到 NetworkOnMainThreadException 异常。更改目标帮助我发现了那些“坏”行。
  • 是否可以将 android:minSdkVersion="8" android:targetSdkVersion="17" 和构建目标设置为 2.2 以确保我的应用程序可以在旧设备上运行?
  • @Seraphim:我不推荐这种方法。当您使用的类和方法超出 minSdkVersion 时,Lint 会告诉您。大约 40% 的 Android 设备运行 Android 3.0+,您应该开始使用比 Android 2.2 更新的功能,只是有条件的(例如,通过Build.VERSION.SDK_INT)。在这些情况下,您应该将构建目标设置为包含您尝试使用的所有类和方法的 Android 版本。
  • 真的吗?我尝试过,但使用 getfragmentmanager() 和 2.2 的模拟器没有 lint 错误/警告,但在运行时我得到一个“NoSuchMethodError”异常。你认为这是皮棉问题吗?
  • @Seraphim:可能。确保您使用的是当前版本的 SDK 工具(以及 Eclipse 的 ADT 插件,如果您使用 Eclipse)。您可能需要手动运行 Lint,但通常它会在您保存文件时自动运行。
【解决方案2】:

您可以在此处阅读更多信息:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

但是您几乎应该始终将目标设置为最新的,然后将最小值更改为您想要的最旧的。

【讨论】:

    【解决方案3】:

    如果您想为旧版本开发应用程序,这不是一个好主意。您可以随时检查most used version 是什么,并针对该版本制作您的应用程序。在某些情况下,需要使用最新版本,因为某些功能尚未在旧版本中实现。

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 2021-05-20
      • 2014-05-07
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多