3

我看到 Google 在开发者控制台中添加了一个名为“优化提示”的新部分。

其中提到我应该设置一个targetSdk。我目前只有:

<uses-sdk android:minSdkVersion="7"/>

他们的文档 中,他们说:

"You can set the app's range of targeted Android versions in the manifest file, in the <uses-sdk> element. In most cases, you can target Android versions properly by setting the element's targetSdkVersion attribute to the highest API level available."

"targetSdkVersion is declared with value 11 or higher (14 or higher is recommended)"

我的应用程序在包括平板电脑在内的所有 android 版本中都能完美运行。根据他们所说的,即使我的应用程序支持版本 7,并且不使用更高版本的功能 - 我真的应该将我的目标设置为可能的最高值(目前是 API 17)。

目前我的应用获得了合理的下载量,所以我没有正确理解它的好处 - 它只是谷歌的一个指标吗?我已经在更高的设备上测试过它(因为它是一个全屏画布应用 - 配色方案和菜单样式,更改不太可能对我产生任何影响)

(顺便说一句,我确实理解为什么有人可能想要使用更高的 targetSdk,我只是想知道即使你不需要它是否应该将它设置得更高)

4

2 回答 2

3

我真的应该将我的目标设置为可能的最高值吗(目前是 API 17)

是的。它将以各种方式改善新设备上的用户体验。

例如,如果您的目标不是至少 API 级别 11,则具有虚拟软键的设备(即最后几代 Nexus 手机)将显示旧选项菜单按钮。

还有其他几件事要提,但我现在时间有点短。简而言之:您应该始终包含目标 API 和最低 API 级别。

我强烈建议您阅读这篇文章:http ://android-developers.blogspot.dk/2012/01/say-goodbye-to-menu-button.html

于 2013-05-03T20:16:17.080 回答
1

设置 targetSdk 版本就像表明您在开发时考虑了更高级别的 API。正如 Michell 指出的那样,它会自动处理一些事情。

另一方面,这也“暗示”您已经处理了代码中任何已弃用的 API/API 行为更改。

  1. 例如,在 API 11 之前,AsyncTasks 曾经在 ThreadPool(并行执行)中执行。在 APIlevel >= 11 中,AsyncTasks 的默认执行模式是单线程,任务排队。现在,当您以 SDK >=11 为目标时,您隐含地接受您的 AsyncTask 可以在单个线程上运行(无并行执行)。

  2. 当您未指定 targetSDK 版本时,Google Nexus 设备在屏幕上有一个软菜单按钮(当您实现了菜单时)。现在,当您指定 target>=11 时,您表示您正在自己处理显示菜单。

您应该注意一些类似的事情。如建议的那样,如果您可以 仔细浏览链接http://developer.android.com/guide/topics/manifest/uses-sdk-element.html并在指定目标后充分测试应用程序是否有任何偏差,那就更好了.

于 2013-05-03T20:44:26.183 回答