targetSdkVersion和Project构建目标之间的区别

hnv*_*iet 20 api android build

在Manifest文件中设置的targetSdkVersion与构建环境中设置的Project构建目标(例如Eclipse)之间有什么区别?

我试图找到有关这两个功能的更多信息,但我找不到任何明确和具体的解释.

似乎Project构建目标决定了在编译期间使用的API兼容级别.当targetSdkVersion仅影响给定API级别的清单元素的可见性时.

任何人都可以确认/解释这个吗?

编辑:谢谢你的回复.我忘记在我的问题中提到我已经阅读了Android Dev上有关这些功能的所有主题,并且还搜索了它并在Stack Overflow上搜索了它.所以我理解min/target/maxSdkVersion在Android Market和Android系统中使用的基本目的.但是,根据人们在使用此Manifest选项时出现问题的其他帖子,似乎uses-sdk确实会对API级别的解释方式产生影响.至少这是我怀疑的.

这里给出了一个非常好的解释:http: //developer.android.com/guide/appendix/api-levels.html

但是,对于我来说,目标仍然不清楚targetSdkVersion是否会影响Android系统上APK的编译/运行时间?或者它仅用于验证,因为uses-sdk文档建议?

Tre*_*hns 28

targetSdkVersion属性确实会影响应用程序的运行时行为.

根据您设置的内容,将确定是否在Android框架中启用/禁用兼容性功能.

例如,一旦设置了targetSdkVersion = 11,您的应用程序的默认主题将设置为@android:style/Theme.Holo- 意味着您的应用程序将具有Honeycomb样式的UI小部件,将获得一个操作栏,并且将不会在底部的"选项菜单"按钮屏幕.

如果将targetSdkVersion设置为低于的值,则默认主题将继续@android:style/Theme- 无论您实际构建的是哪个API级别.

targetSdkLevel还会影响<supports-screens>元素的默认值,这反过来将决定您的应用程序是否以密度兼容模式运行.

有趣的说明: Android Market目前实际上并没有使用targetSdkLevel属性.它纯粹在运行时用于兼容性目的,并且可能在编译时使用 - 尽管我没有查看那里的行为.如果人们对编译器感到好奇,我可以与SDK团队联系以获取更多信息.

当然,市场完全有可能在未来决定对此做些什么.