您能否向我解释如何确定 targetSdkLevel 的正确值?
假设我想构建一个适用于从android 2.3.7到4.0.3的所有版本的应用程序,我该如何设置 minSdkLevel 和 targetSdkLevel ?
前者应该匹配android 2.3.7的API级别,后者应该匹配4.0.3的API级别?
然后,当我开发我的应用程序时,我是否应该只使用最早支持的sdk级别中可用的方法/类?
当我编译应用程序时,它是否编译为2.3.7或4.0.3?
我无法理解 targetSdkLevel 的目的,因为无法为此标记中指定的较新版本编译apk,否则无法对版本低于 minSdkLevel ...为什么我不能将 targetSdkLevel 设置为最新的可用级别?
我还阅读了有关uses-sdk Manifest标签的官方信息,但我仍然不明白..你能帮我澄清这个话题吗?
编辑:感谢大家,请原谅我的重复问题。我已经读过Blog post了,这对我很有帮助。你们所有人都给出了很好的答案。
答案 0 :(得分:4)
这里解释清楚:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
minSdkVersion:
指定所需的最低API级别的整数 应用程序运行。 Android系统将阻止用户 如果系统的API级别低于,则安装应用程序 此属性中指定的值。你应该总是声明这个 属性。
适用于targetSdkVersion
指定应用程序所针对的API级别的整数。如果 未设置,默认值等于给予minSdkVersion的值。这个 属性通知系统您已针对目标进行了测试 版本和系统不应启用任何兼容性行为 保持应用程序与目标版本的向前兼容性。 该应用程序仍然可以在旧版本上运行(低至 的minSdkVersion)。
你在这里不明白的是什么?
您可以这样设置它:
<uses-sdk android:minSdkVersion="10"
android:targetSdkVersion="15"/>
您可以在此处阅读API级别14的更改:http://developer.android.com/sdk/api_diff/14/changes.html 这里是API级别4:http://developer.android.com/sdk/api_diff/4/changes.html
答案 1 :(得分:4)
您应该只使用 minSdkLevel 指定的SDK中提供的方法/类,或者使用适当的运行时API版本检查来包装它们。
您的应用程序将使用项目本身指定的SDK进行编译,而不是使用 minSdkLevel 或 targetSdkLevel 指定的SDK进行编译。
您应该将 targetSdkLevel 设置为您测试过该应用程序的最高级API。这是因为将根据此值为您的应用程序启用/禁用兼容性行为。
答案 2 :(得分:1)
使用目标构建,然后如果用户低于目标,您可以检查并正常降级。例如,如果您要创建位置感知应用程序,则可能需要使用从版本8开始可用的PASSIVE_PROVIDER。您可以将最小版本设置为低于8并检查Android版本。从那里你可以决定使用或不使用基于版本的PASSIVE_PROVIDER。
答案 3 :(得分:1)
请注意,正如人们在此提到的那样,设置targetSdk也意味着它会改变应用程序的某些方面。
一个方面是应用程序如何处理菜单按钮:如果您将targetSdk设置为11或更高,则意味着您不能假设有一个菜单按钮,因此您将不得不处理操作栏和以某种方式(或任何其他方式,根据您的应用程序设计)将选项放在那里。
如果您将其设置为10或更低,Android将在屏幕上为没有菜单按钮的设备添加此按钮(显示为3个点),如htc one x或{{3} }。请注意,对于某些设备,它看起来很难看(例如,对于htc,需要一整行x)。
所以,简而言之,我建议将minSdk设置为最小值,以便尽可能多地支持尽可能多的人,并将targetSdk设置为最大值,以便享受所有的好处它可以给你。