新东西010--Android targetSdkVersion解析

来源:互联网 发布:net域名后缀排名高吗 编辑:程序博客网 时间:2024/04/25 14:25

Android Mainfest中有个叫做targetSdkVersion的字段,这个属性的含义是指:指定targetSdkVersion为具体的某个API Level,则表示调用接口时会调用target指明的版本API来编译应用(此处需要特别声明,编译应用的API跟真正手机系统的API不一样,编译只是指在该API下生成可运行包),比如,我运行一个targetSdkVersion为2.3的应用到一个4.0的机器上,那么系统仍旧会使用2.3的API来编译我的应用,但应用跑在4.0的机器上。这样看来实际上可以发现,targetSdkVersion好似没有什么作用?

实则不然,在不涉及接口改变的情况下,由于某些物理设备的扩展,同样的Apk需要适应不同的版本上的物理设备,从而具备某些特性,比如在android1.6以下,系统并未支持多套图片资源(hdpi/mdpi/ldpi),该版本下系统使用图片资源是通过Mainfest中的PRODUCT_LOCALES="hdpi"来指明的。

那么基于此,试想如果我们把一个应用的targetSdkVersion设置为<3(也就是1.6以下),然后在4.0的不同分辨率上跑我们的apk。然后我们的应用的主要内容就是做资源适配,也就是说,我们在不同的分辨率下的手机显示我们显示的资源文件是用的哪个?

这是个有意思的话题,targetSdkVersion就是这么简单,它是编译时期的API版本,如果我们用了某个具体版本的特性,一定要测试在minSdkVersion下是否也正常显示,否则将会出错(可能是java.lang.VerifyError)。

实际上,这个属性是一个可以删除的属性,你可以什么都不填,但你填上可以加速你在target版本下的代码运行(网上给的解释是当你的target跟手机系统版本一致时,系统会默认你做了兼容性测试,系统也就不会做兼容性测试,从而加速你的应用)。然而个人认为相较于它,最重要的是min和max这两个SDK版本值,最好测试所有的min到max之间的机器下你的APK是否正常。

0 0
原创粉丝点击